Jump to content

    

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}]

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

 

 

ddr3.pdf

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

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

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

Edited by Драконофф

Share this post


Link to post
Share on other sites
25 minutes ago, Драконофф said:

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

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

Share this post


Link to post
Share on other sites
1 hour ago, Драконофф said:

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

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

 

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

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

Share this post


Link to post
Share on other sites
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'овскому констрейнту именами?

Edited by Драконофф

Share this post


Link to post
Share on other sites
15 часов назад, alexadmin сказал:

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

 

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

ddr3.pdf

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

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

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

Share this post


Link to post
Share on other sites
15 minutes ago, Драконофф said:

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

Share this post


Link to post
Share on other sites
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

Edited by Драконофф

Share this post


Link to post
Share on other sites
45 minutes ago, Драконофф said:

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

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

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

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

Screenshot_20191023_103801.png

Share this post


Link to post
Share on other sites
1 hour ago, Nick_K said:

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

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

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

Share this post


Link to post
Share on other sites

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

Edited by Драконофф

Share this post


Link to post
Share on other sites
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 отключено,  у меня же оно не отключается)

Edited by Драконофф

Share this post


Link to post
Share on other sites

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

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

 

плата AC701

 

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

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

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

 

 

ddr3.pdf

Edited by Драконофф

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this