pavlovconst 2 27 июля, 2019 Опубликовано 27 июля, 2019 · Жалоба Здравствуйте! Делаю аппаратный контроллер (HMC) памяти DDR3 на CycloneV. Создал два порта Avalon-MM по 32 бит - один для JTAG Debug Master, второй - для штатного (моего) контроллера. Через JTAG Debug Master память пишется и читается, из чего делаю вывод, что временнЫе настройки чипов памяти я поставил правильные. Через штатный контроллер могу питать в память, и единичные записи и берсты проходят. Но вот чтение поднять никак не получается. Контроллер принимает 2 первых запроса по 8 слов, а на третьем поднимает waitrequest и больше его не опускает. Никогда. Сигнал readdatawalid вижу где-то вдалеке и только один. Может кто-то сталкивался с таким? Что я делаю не так? Обязательно ли логику мастера описывать в виде компонента QSYS, сейчас весь авалон у меня экспортирован из QSYS... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 2 27 июля, 2019 Опубликовано 27 июля, 2019 · Жалоба Возможно, сигнал waitrequest не инвертированнный на самом деле (хотя суффикс "_n" намекает об обратном), и мне стоит ждать 6 тактов после первого запроса? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 28 июля, 2019 Опубликовано 28 июля, 2019 · Жалоба 12 часов назад, pavlovconst сказал: Возможно, сигнал waitrequest не инвертированнный на самом деле (хотя суффикс "_n" намекает об обратном), и мне стоит ждать 6 тактов после первого запроса? У signal tap есть одно поганое свойство: он может сигналы интвертировать, если ему будет так удобнее разложить проект по кристаллу. Хотите быстро и правильно: берете modelsim, берете модель памяти. И гоняете это дело, пока моделирование не даст положительный результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 29 июля, 2019 Опубликовано 29 июля, 2019 (изменено) · Жалоба Когда у вас вся система внутри qsys, интреконнект настраивается автоматически, используя данные из tcl скрипта от вашего модуля. Т.е. если у вашего модуля например сигнал waitrequest активный 0, а у слейва 1, то qsys поставит инвертор. и тд. Поэтому лучше все делать в qsys. У интела есть темплейты для мастеров чтения и записи, посмотрите, может пригодятся https://www.intel.com/content/www/us/en/programmable/support/support-resources/design-examples/intellectual-property/embedded/nios-ii/exm-avalon-mm.html Изменено 29 июля, 2019 пользователем Burenkov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 2 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба Flip-fl0p, Burenkov Спасибо за советы! Я разобрался. У контроллера памяти есть статусные выходы .status_local_init_done .status_local_cal_success .status_local_cal_fail Начинать чтение нужно только после того, как память инициализирована и успешно откалибрована Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 2 часа назад, pavlovconst сказал: Flip-fl0p, Burenkov Спасибо за советы! Я разобрался. У контроллера памяти есть статусные выходы .status_local_init_done .status_local_cal_success .status_local_cal_fail Начинать чтение нужно только после того, как память инициализирована и успешно Ну да, в любом описалове на динамическую память это написано. И применение готовых ip ядер контроллеров памяти, не освобождает о чтения описалова на память. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavlovconst 2 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 2 hours ago, Flip-fl0p said: не освобождает о чтения описалова Кто ж спорит. Всего три томика прочитал - и дело в шляпе =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 11 минут назад, pavlovconst сказал: Кто ж спорит. Всего три томика прочитал - и дело в шляпе =) Таков удел разработчиков - читать документацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться