Перейти к содержанию
    

Nios II + DDR2. Помогите разобраться

Здравствуйте! Пытаюсь заставить работать простейшую систему с альтеровским DDR2-контроллером.

Плата Cyclone III FPGA Development Kit, Quartus II 10.1. Использую одну микросхему DDR2 из группы на плате. Все настройки контроллера видны на картинках.

 

При попытке как записи так и чтения DDR2 через memory-mapped интерфейс программа зависает. Например

printf("Write\n");
IOWR(ALTMEMDDR_BASE,0x0000000A,0x11223344);
printf("Reading data\n");
j = IORD(ALTMEMDDR_BASE,0x0000000A);
printf("Data0A: %08x\n" ,j);

- выводится в терминал только "Write"

Ситуация повторяется в 11-м квартусе.

 

Подскажите пожалуйста, что я делаю не так и в каком направлении копать.

 

post-21274-1324449979_thumb.png

post-21274-1324450002_thumb.pngpost-21274-1324450026_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прога выполняется из Он чип памяти?

Посмотрите чтобы в настройках линкера нигде не фигурировала ДДР.

post-52939-1324452675_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, все секции линкера установлены на SRAM onchip-memory.

 

Значит какие-то проблемы с памятью и транзакция подвисает при обращении к контроллеру DDR. Для начала проверьте, все ли сигналы подключены правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, если в доке на плату выводы расписаны корректно, то сигналы должны быть подключены правильно, перепроверял несколько раз.

Может быть дело в констрейнах? Но они вроде генерируются автоматически...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть дело в констрейнах? Но они вроде генерируются автоматически...

отчет таймквеста в студию. и что в логах на предмет Critical warnings?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть несколько Critical warnings:

Critical Warning: ALTMEMPHY PLL, adcsystem:inst|altmemddr:the_altmemddr|altmemddr_controller_phy:altmemddr_controller_phy_inst|altmemddr_phy:altmemddr_phy_inst|altmemddr_phy_alt_mem_phy:altmemddr_phy_alt_mem_phy_inst|altmemddr_phy_alt_mem_phy_clk_reset:clk|altmemddr_phy_alt_mem_phy_pll:pll|altpll:altpll_component|altpll_n5k3:auto_generated|clk[1], when fed by another PLL, must have bandwidth mode set to High instead of Medium
Critical Warning: ALTMEMPHY PLL, adcsystem:inst|altmemddr:the_altmemddr|altmemddr_controller_phy:altmemddr_controller_phy_inst|altmemddr_phy:altmemddr_phy_inst|altmemddr_phy_alt_mem_phy:altmemddr_phy_alt_mem_phy_inst|altmemddr_phy_alt_mem_phy_clk_reset:clk|altmemddr_phy_alt_mem_phy_pll:pll|altpll:altpll_component|altpll_n5k3:auto_generated|clk[2], when fed by another PLL, must have bandwidth mode set to High instead of Medium
Critical Warning: PLL clock inst|the_altmemddr|altmemddr_controller_phy_inst|altmemddr_phy_inst|altmemddr_ph
y_alt_mem_phy_inst|clk|pll|altpll_component|auto_generated|pll1|clk[1] not driven by a dedicated clock pin or neighboring PLL source.  To ensure minimum jitter on memory interface clock outputs, the PLL clock source should be a dedicated PLL input clock pin or an output of the neighboring PLL.
Critical Warning: PLL clock inst|the_altmemddr|altmemddr_controller_phy_inst|altmemddr_phy_inst|altmemddr_ph
y_alt_mem_phy_inst|clk|pll|altpll_component|auto_generated|pll1|clk[3] not driven by a dedicated clock pin or neighboring PLL source.  To ensure minimum jitter on memory interface clock outputs, the PLL clock source should be a dedicated PLL input clock pin or an output of the neighboring PLL.
Critical Warning: Read Capture and Write timing analyses may not be valid due to violated timing model assumptions

 

А из таймквеста какой отчёт? Там их несколько...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так, в таймквесте ошибок не видать. возможно, проблема в распиновке, но по выложенному проекту этого не понять.

использовать только 1 чип памяти - критично? у меня есть несколько примеров для этой борды, но там вся память используется. выложить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно выкладывайте! Разрядность памяти пока не важна, главное чтобы заработало )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот пример проекта. еще есть на alterawiki.com, я вроде там брал

niosii_ethernet_standard_3c120_rgmii.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не уверен насчет именно этой версии, но д.б. рабочий. проверить не смогу, платы нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Система заработала. Проблема скрывалась всё-таки в эссайнах пинов. Смешал сигналы управления и данных от разных групп микросхем памяти на отладочной плате. Нужно быть внимательней... :blink:

Благодарю всех кто отписывался в теме!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...