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

Sdram внутри qsys компонента, подскажите по констрейнам

Здравствуйте, пишу свой первый проект на ПЛИС (verilog, max10), проект создаю в учебных целях.
Создал систему в Qsys: nios, память(sdram), Jtag, и самописный компонент.
Внутри самописного компонента, с просторов интернета контроллер памяти sdram(отдельно от памяти nios), счетчик и DCFIFO для передачи из счетчика на sdram.
Nios запускает счетчик, тот в считает до оперделенного числа, и записывает в FIFO, оттуда контроллер sdram забирает данные и пишет в память. Nios и счетчик работают на 100Мгц, sdram и память на 125Мгц, FIFO двухклоковое на запись 100 Мгц на чтение 125 Мгц.
На симуляции все работает отлично но в железе появляются проблемы констрейнов.
В assigment поставил sdram выводам fast IO, клоки сделал Global Clock.
Sdram для Nios работет timequest не ругается, а в моем компоненте постоянно ошибки памяти
и я не могу понять почему такие большие слаки.
Память микрон MT48LC16M16A2. На nios память микрон MT48LC4M32B2.

Констрейны nios sdram

Спойлер

derive_pll_clocks -create_base_clocks

set_clock_groups -exclusive  -group [get_clocks {nios_sdram_oclk 

pll_system_|altpll_component|auto_generated|pll1|clk[0]}]

create_generated_clock -name nios_sdram_oclk -invert -source [get_pins 

{pll_system_|altpll_component|auto_generated|pll1|clk[0]}] [get_ports { sdram_nios_clk}] 

derive_clock_uncertainty
set_multicycle_path -from [get_clocks {nios_sdram_oclk}] -to [get_clocks 

pll_system_|altpll_component|auto_generated|pll1|clk[0]] -setup  2

set_multicycle_path  -from [get_clocks {nios_sdram_oclk}] -to [get_clocks 

pll_system_|altpll_component|auto_generated|pll1|clk[0]]   -hold  0

set_input_delay -clock [get_clocks nios_sdram_oclk] -max 5.4 [get_ports {sdram_nios_dq[*]}]
set_input_delay -clock [get_clocks nios_sdram_oclk] -min 3.1 [get_ports {sdram_nios_dq[*]}]

set_output_delay -clock [get_clocks nios_sdram_oclk] -max 1.2 [get_ports { sdram_nios_dqm[*] sdram_nios_ba[*] 

sdram_nios_a[*] sdram_nios_cs_n sdram_nios_cas_n sdram_nios_ras_n sdram_nios_cke sdram_nios_we_n  sdram_nios_dq[*] }]

set_output_delay -clock [get_clocks nios_sdram_oclk] -min 0.8 [get_ports {   sdram_nios_dqm[*] sdram_nios_ba[*] 

sdram_nios_a[*] sdram_nios_cs_n sdram_nios_cas_n sdram_nios_ras_n sdram_nios_cke sdram_nios_we_n  sdram_nios_dq[*] }]

 


Констрейны контроллера 

Спойлер

create_generated_clock -name sdram_oclk -invert -source [get_pins 

{pll_system_|altpll_component|auto_generated|pll1|clk[1]}] [get_ports {sdram0_clk sdram1_clk}] 

set_clock_groups -exclusive  -group [get_clocks {sdram_oclk pll_system_|altpll_component|auto_generated|pll1|clk[1]}]

set_multicycle_path -from [get_clocks {sdram_oclk}] -to [get_clocks 

pll_system_|altpll_component|auto_generated|pll1|clk[1]] -setup  2

set_multicycle_path  -from [get_clocks {sdram_oclk}] -to [get_clocks 

pll_system_|altpll_component|auto_generated|pll1|clk[1]]   -hold  0

set_input_delay -clock [get_clocks sdram_oclk] -add_delay -max  5.4 [get_ports {sdram0_dq[*]}]
set_input_delay -clock [get_clocks sdram_oclk] -add_delay -min  3.1 [get_ports {sdram0_dq[*]}]
set_input_delay -clock [get_clocks sdram_oclk] -add_delay -max  5.4 [get_ports { sdram1_dq[*]}]
set_input_delay -clock [get_clocks sdram_oclk] -add_delay -min  3.1 [get_ports { sdram1_dq[*]}]

set_output_delay -clock [get_clocks sdram_oclk] -add_delay -max   1.2 [get_ports { sdram0_ba[*] sdram0_a[*] sdram0_cs_n 

sdram0_cas_n sdram0_ras_n sdram0_cke sdram0_we_n sdram0_dq[*]}]
set_output_delay -clock [get_clocks sdram_oclk] -add_delay -max   1.2 [get_ports { sdram1_ba[*] sdram1_a[*] sdram1_cs_n 

sdram1_cas_n sdram1_ras_n sdram1_cke sdram1_we_n sdram1_dq[*] }]

set_output_delay -clock  [get_clocks sdram_oclk] -add_delay -min 0.8 [get_ports { sdram0_ba[*] sdram0_a[*] sdram0_cs_n 

sdram0_cas_n sdram0_ras_n sdram0_cke sdram0_we_n sdram0_dq[*]}]
set_output_delay -clock [get_clocks sdram_oclk] -add_delay -min 0.8 [get_ports { sdram1_ba[*] sdram1_a[*] sdram1_cs_n 

sdram1_cas_n sdram1_ras_n sdram1_cke sdram1_we_n sdram1_dq[*] }]

 

Общая картина:

sdc3.jpg.22dec24ebe32d0db56264c026b38b647.jpg

 

 

 

Клок Nios sdram

sdc.jpg.06b8cf30085041e62f92ea3d9fcce217.jpg

Sdram внутри компонента.

sdc1.jpg.d8f11bf36fb06f48c2cdc21350658978.jpg

 

Не могу понять причину почему sdram внутри моего компонента так отличается от sdram используемого nios. Уже 2 недели
бьюсь, может кто-то подскажет?

Исходник компонента прилагаю.

src.sv

Изменено пользователем Вася0

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


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

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

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

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

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

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

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

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

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

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