Больше игр нет
Уточнение - он есть, если ты находишься в редактировании файла.
Ещё раз. Сигналы PDP я знаю. Проблема не в них. Проблема в том, что при попытке использовать массив из 16-ти битных слов синтез приводит к регистрам, а не к использованию блоков памяти. Сгенерить 400 слов на регистрах можно, сгенерить 16 килослов уже проблема
Не надо так кипятиться. Был вопрос про синтез BRAM. Я сказал, что его можно синтезировать с bytemask-ом.
Больше игр нет
Посмотрел код, который предлагается в шаблонах. Ничего для меня нового (кроме многобайтовых слов - но это я уже в книжке сегодня увидел, так что можно сказать - тоже ничего нового). Ни один из примеров не показывает, как использовать память, описание которой через IP..
Кроме того, как авторский вариант, так и вариант в шаблоне мне не очень нравится - сложно через код прошить содержимое - придётся прошивать по байтно - и сразу не видно, что делает код. А смотря на словное восьмеричное представление - я уже в значительной степени понимаю - и что делает код и как при необходимости без перекомпиляции его поправить
Примеры показывают как описывать память, которая Квартусу понятна. Это не гарантирует то, что она станет мегафункцией. Дальше работают алгоритмы оптимизации и они уже решают запихивать в BRAM или в регистры. На ход их работы можно влиять через global assignmentы. Не подскажу, как заставить инферрить ОЗУ там, где оно не инферрится, но может быть в нужную сторону поиск направит если скажу наоборот, как запретить: "set_instance_assignment -name MAX_RAM_BLOCKS_M4K 1 -to *". Звездочка тут имя инстанса. Если знать имя инстанса своего ОЗУ, то можно намекнуть сколько штук M4K не жалко на него выделить.
Это я недавно разбирался, почему инферрилась здоровенная ОЗУ из на первый взгляд безобидной маленькой таблички.
Больше игр нет
Уф.... Подведя итоги Промежуточные
Двухбайтовые слова массива я теперь умею отправлять в блоки памяти. К сожалению - или удобная инициализация или работа с байтами. Одновременно пока - не получается. Поэтому - в баню.
Наконец то (YES!!!!) я разобрался, как работать с блоком памяти, которые сгенерировала мегафункция. Пока не проверил работу записи в байтовом режиме, но хоть что то. До сих пор получал - ноль на чтение, после записи всё равно ноль на чтение А теперь хоть и пишется и читается после этого записанное Сильно не оптимально, зато работает - а с этим проще работается Отдельное спасибо AlexG и svofski за тыканье носом в то, что сигнал(ы) не устанавливается(устанавли� �аются) моментально. Да, теоретически я это знал и до этого. Но, видимо, пока сам крепко не влетишь... В общем, ещё раз спасибо Что ещё долго доходило - нужные сигналы для памяти должны быть выставлены ДО очередного клока, а не во время. Ну, тут помогли тыканье носом и Сигнал Тап - в конце концов правильная мысль продралась в голову Теперь можно сгенерировать, скажем, 256 кб памяти и начать проверять остальные мои изменения, в первую очередь процессор и ДП - RT-11 c SJ, XM и ZM мониторами в этом поможет. Пока не научусь работать с SDRAM.
SDRAM - тут пока ничего нового - даже не пробовал сделать, потому что более простой случай (блоки памяти) не работали. Скорее всего буду делать в параллель - проверку изменений и попытку заставить работать SDRAM.
Уф.. Утопал спать
Последний раз редактировалось Hunta; 30.07.2018 в 02:51.
Немного переделал модуль работы с BRAM - вынес из процесса всё, что можно "просчитать" снаружи. В процессе осталось - реакция на сигналы запросов чтения и записи и сигналы подтверждения.
Попробовал увеличить размер блока памяти до 256 кб - с пульта - вроде работает. Пока лучше проверить не могу - из за изменения протокола работы с памятью (он, кстати, стал ближе к протоколу unibus) нужно доделать (буквально 3-4 строчки) остальные модули - пока на новом работают только процессор, память и интерфейс терминала. Вечером.
Из за предыдущего пункта - скорее всего до SDRAM сегодня не доберусь
Вчера - переделал клоки (вместо планировавшегося) - перевёл основные на PLL, ручной только - 0.5 (CPU), и 4 (Signal Tap) Гц и секундный тик светодиодом. После некоторого количества танцев вокруг - заработало.
Сегодня займусь SDRAM.
После этого доделаю всё, что ещё не успел, на новый вариант протокола общения по шинам. Проц, память и терминальные порты - уже на нём. В принципе - не сильно много работы. Если, конечно, я опять КакуНибудь глупость не сотворю
После этого - или попробую поразгонять проц и памяти (BRAM и SDRAM) или допилю DMA устройства на предмет подключения к шине (под мой вариант). А может это будет сначала в процессе допиливания устройств на новый протокол - а тесты после этого. Как рука зачешется
Ну и продолжается форматирование текста, а так же переименовывание сигналов (пытаюсь подобрать такие имена, что бы были говорящие). На русский их переделать, что ли?
Похоже, накосячил где то при редактировании mmu - на модулях памяти до 256 кб не проявляется, расцвело пышным цветом на 4 мб
Сегодня вечером буду выверять - процесс знакомый
Главное - проц работоспособен (он ещё в vt и xu, и в vt точно всё работает (в пределах 11/20, который там используется))
Надо почитать про 11/20 (который был первым), что то у меня сложилось впечатление, что он был... немножко другой. Но не факт - хорошая вероятность того, что я не так понял
А вот не факт, что это у меня косяк...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)