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

MicroBlaze + DDR3

Всем привет, подскажите пожалуйста, как правильно подключить ddr к microScale?  Задача для многих простая, но боюсь что я подвис. Дело в том что проц удержеваеться в ресете при дэбаге в SDK.

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

Vivado 2018.3sheme.thumb.png.a9679c77e625bb5ec793dbfaed2e8c58.png

Artix 7

Constraint file:
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.UNUSEDPIN Pullup [current_design]
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]

set_property PACKAGE_PIN P6 [get_ports {reset}]
set_property IOSTANDARD SSTL15 [get_ports {reset}]

set_property PACKAGE_PIN U19 [get_ports {tx}]
set_property IOSTANDARD LVCMOS18 [get_ports {tx}]

set_property PACKAGE_PIN T19 [get_ports {rx}]
set_property IOSTANDARD LVCMOS18 [get_ports {rx}]

 

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


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

Не видно ж ничего на картинке. Контроллер ддр стартует, калибровку проходит?

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


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

изображение сжимается. я тут пдфку с хорошей точностью кинул, если кому не лень посмотрите пжлст.

 

 

 

ddr3.pdf

12 минут назад, alexadmin сказал:

Контроллер ддр стартует, калибровку проходит?

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

Изменено пользователем Драконофф

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


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

25 minutes ago, Драконофф said:

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

полярность ресета точно не перепутана? без мига, проц работает?

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


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

1 hour ago, Драконофф said:

изображение сжимается. я тут пдфку с хорошей точностью кинул, если кому не лень посмотрите пжлст.

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

 

1. У вас сброс от ддр3 заведен обратно на ддр3, а надо бы на микроблейз. Достаточно оставить один блок System Reset.

2. Ядро миг обычно прямо в Hardware manager показывает свой статус, можно посмотреть там.

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


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

15 часов назад, des00 сказал:

полярность ресета точно не перепутана? без мига, проц работает?

 

 

Полярность проверил везде, начиная с кнопки на борде (порт reset), высокий уровень, но меня смущает что из processor system reset выходит инверсный peripheral_areset и идет в не инверсные входы SO0_ARESETN ... MO1_ARESETN в AXI Interconnect и дальше разветвляется на инверсные aresetn у MIG и s_axi_aresetn у AXI Uartlite. 

SO0_ARESETN ... MO1_ARESETN - судя по букве N в конце названий входных пинов Interconnect'a  они также инверсные, но на изображение этих выводов не стоят кругляшки как у выше приведенных  aresetn'ов.

 

без MIG'a я ставлю clock wizard, где определяю выходную частоту, втыкаю в него входную частоту определенную в констрейнте через пин соответствующий разводке платы, ресет также с кнопки на Processor System Reset в пин ext_reset  и всё норм поднимается, хеллоу вордиться и ресетется.

 

Тут, как я понимаю уже MIG раздаёт частоту, что бы было соответствие частотных доменов, с ножек которых я определил при создание этого IP. Моё дело просто поставить порты соответсвующие установки MIG'а названиями. Как я понимаю MIG сам сгенерит констрейнт где и опишет эти порты.

 

А те ножки которые я определил для cas, ras, dqs ... которые также будут описаны в MIG'овском констрейнте, они то как определяться выходными портами?? На рисунке, как и в проекте, они стоять интерфейсом созданным по команде Make External это они просто так возьмут  и соответсвено настройкам подхватятся? Или нужно нажать плюсик у IP'шного интерфейса и самому создать порты с соотвествующими MIG'овскому констрейнту именами?

Изменено пользователем Драконофф

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


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

15 часов назад, alexadmin сказал:

. У вас сброс от ддр3 заведен обратно на ддр3, а надо бы на микроблейз. Достаточно оставить один блок System Reset.

 

Поправил, но microBlaze удержан в ресете. Извините за пдф, но иначе качество страдает и действительно нифига не видно.

ddr3.pdf

15 часов назад, alexadmin сказал:

Ядро миг обычно прямо в Hardware manager показывает свой статус, можно посмотреть там.

Чет я не вижу где это, перерыл весь Hardware Manager.

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


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

15 minutes ago, Драконофф said:

Поправил, но microBlaze удержан в ресете.

А откуда берётся Клок на схеме? Клоковый net есть, но никакого генератора или даже напрямую с порта ничего не приходит. Что-то не то.

UPD По поводу полярности ресетов - не переживайте. Если написано ARESETN значит он инверсный, а отсутствие кружочка - это просто визард так сконфигурирован. А вот, кстати, порт ARESETN блока AXI Interconnect лучше ресетить с порта interconnect_aresetn блока Processor System Reset, в то время, как остальные ресеты подключены правильно.

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


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

Screenshot from 2019-10-23 09-36-21.png

21 minutes ago, Драконофф said:

Чет я не вижу где это, перерыл весь Hardware Manager.

 

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


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

27 минут назад, Nick_K сказал:

Клоковый net есть, но никакого генератора или даже напрямую с порта ничего не приходит. Что-то не то.

Извините я не совсем понял куда не приходит? Вроде клок заходит в MIG а дальше из пина ui_ckl MIG'а идет по схеме. Если отводить клок из порта sys_clk_p в clock_wizard то появляются ошибки доменности тактирования. 

 

27 минут назад, Nick_K сказал:

ARESETN блока AXI Interconnect лучше ресетить с порта interconnect_aresetn

Спасибо, мог бы и сам заметить)) названия же соответствуют))))

20 минут назад, doom13 сказал:

Чет я не вижу где это, перерыл весь Hardware Manager.

У меня как то так)

hwm.png

Изменено пользователем Драконофф

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


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

45 minutes ago, Драконофф said:

Извините я не совсем понял куда не приходит? Вроде клок заходит в MIG а дальше из пина ui_ckl MIG'а идет по схеме. Если отводить клок из порта sys_clk_p в clock_wizard то появляются ошибки доменности тактирования.

У Вас нет референсной частоты. От слова совсем. то что там какая-то частота идёт на DDR - это её проблемы. Каждый проект обязан иметь клоковую частоту. Она обычно генерируется внешним генератором и заходит на порт clock - это будет Ваша опорная частота. Дальше её очень желательно пропустить через PLL/DCM/MMCM и сгенерировать внутренний клоковый сигнал (пусть и такой же частоты) а потом этот клок заводить на процессор, периферию и т.д.

У Вас на схеме сигнал, заходящий на порт Clk МикроБлейза не сформирован нигде. Вот и проблемы вылазят.

UPD Приаттачил картинку примера Микроблейза. Красным обведён недостающий базовый блок.

Screenshot_20191023_103801.png

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


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

1 hour ago, Nick_K said:

У Вас нет референсной частоты. От слова совсем. то что там какая-то частота идёт на DDR - это её проблемы.

На мой взгляд у автора все сделано честно - внешняя частота приходит на ддр, он порождает основную на которой все должно работать. Нюанс в том, что если контроллер ддр не запускается, то пользовательской частоты не будет, что, похоже, и происходит ;)

Я бы проверил внимательно подачу внешней частоты. Кстати, только сейчас заметил что их две зачем-то, но я с MIG 7-series не работал . Не забыть атрибуты DIFF_TERM если нужны для диф. входов. Выходы locked и calib_complete подать на светодиоды, чтобы понимать, что происходит. Ну и полярность ресета контролировать.

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


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

0001.thumb.jpg.1cc292b2c2905238679bdeeddc00a317.jpg

1 час назад, Nick_K сказал:

У Вас нет референсной частоты

Да, теперь понял. Сделал теперь так. 

Назначил ножки:

set_property PACKAGE_PIN R3 [get_ports {clk_ref_p}]
set_property IOSTANDARD LVDS_25 [get_ports {clk_ref_p}]

set_property PACKAGE_PIN P3 [get_ports {clk_ref_n}]
set_property IOSTANDARD LVDS_25 [get_ports {clk_ref_n}]

В настройках MIG'а для обеих частот поставил опцию No Buffer, появились ошибки в rfoutr_design:

[DRC PDRC-34] MMCM_adv_ClkFrequency_div_no_dclk: The computed value 216.667 MHz (CLKIN1_PERIOD, net pll_clk3) for the VCO operating frequency of the MMCME2_ADV site MMCME2_ADV_X1Y2 (cell ddr3_i/mig_7series_0/u_ddr3_mig_7series_0_1_mig/u_ddr3_infrastructure/gen_mmcm.mmcm_i) falls outside the operating range of the MMCM VCO frequency for this device (600.000 - 1440.000 MHz). The computed value is (CLKFBOUT_MULT_F * 1000 / (CLKINx_PERIOD * DIVCLK_DIVIDE)). Please run update_timing to update the MMCM settings. If that does not work, adjust either the input period CLKINx_PERIOD (36.923077), multiplication factor CLKFBOUT_MULT_F (8.000000) or the division factor DIVCLK_DIVIDE (1), in order to achieve a VCO frequency within the rated operating range for this device.
  
[DRC PDRC-43] PLL_adv_ClkFrequency_div_no_dclk: The computed value 216.667 MHz (CLKIN1_PERIOD, net clk_out1) for the VCO operating frequency of the PLLE2_ADV site PLLE2_ADV_X1Y2 (cell ddr3_i/mig_7series_0/u_ddr3_mig_7series_0_1_mig/u_ddr3_infrastructure/plle2_i) falls outside the operating range of the PLL VCO frequency for this device (800.000 - 1866.000 MHz). The computed value is (CLKFBOUT_MULT_F * 1000 / (CLKINx_PERIOD * DIVCLK_DIVIDE)). Please adjust either the input period CLKINx_PERIOD (6.000000), multiplication factor CLKFBOUT_MULT_F (13) or the division factor DIVCLK_DIVIDE (10), in order to achieve a VCO frequency within the rated operating range for this device.

Сделал по рекомендации ошибок, ничего не исправилось, кроме того что ошибки стали рекомендовать другие значения...

0001.jpg

15 минут назад, alexadmin сказал:

Кстати, только сейчас заметил что их две зачем-то, но я с MIG 7-series не работал

Да я бы оставил только диф sys_clk, а ref_clk отключил бы, та он не исчезает как пин, не нашел как его отключить.

ddr3.pdf

Изменено пользователем Драконофф

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


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

42 минуты назад, alexadmin сказал:

locked

в единице

 

42 минуты назад, alexadmin сказал:

calib_complete

в нуле

 

 

не радует...

 

https://forums.xilinx.com/t5/Processor-System-Design/MicroBlaze-tutorial-UG940-adapted-to-AC701-eval-board/m-p/489884/highlight/false#M12575

 

моя проблема один в один, только в решение ref_clk отключено,  у меня же оно не отключается)

Изменено пользователем Драконофф

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


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

В общем заработало, я сделал генерацию дополнительного тактового сигнала из MIG'а и завел на clk_ref настроенный как  No Buffer. 

Причина erarta в плате, ножки предназначенные для clk_ref не генерят частоту.

 

плата AC701

 

Если кому-нибудь поможет вот решение:

sys_clk с дифпары R3/P3 200МГц

ref_clk с генерируемой частоты 204МГц

 

 

ddr3.pdf

Изменено пользователем Драконофф

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


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

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

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

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

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

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

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

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

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

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