BSACPLD 9 28 апреля, 2020 Опубликовано 28 апреля, 2020 · Жалоба Коллеги, подскажите, пожалуйста, в чем может быть дело. ALTDDIO подключен к триггеру: rx_ddr #( .WIDTH (1), .FPGA_VENDOR (FPGA_VENDOR), .DEVICE_FAMILY (DEVICE_FAMILY) ) rx_ddr_0 ( .datain (ser_in), .inclock (clk_sys_2x), .dataout_h (ser_in_2x[0]), .dataout_l (ser_in_2x[1]) ) ; always @(negedge clk_sys_2x) begin ser_in_2x_reg <= ser_in_2x ; end altddio_in #( .intended_device_family (DEVICE_FAMILY), .invert_input_clocks ("ON"), .lpm_hint ("UNUSED"), .lpm_type ("altddio_in"), .power_up_high ("OFF"), .width (WIDTH) ) RXDDR ( .datain (datain), .inclock (inclock), .dataout_h (dataout_h), .dataout_l (dataout_l), .aclr (1'b0), .aset (1'b0), .inclocken (1'b1), .sclr (1'b0), .sset (1'b0) ) ; Задержка от ALTDDIO до триггера какая-то огромная получается. Этот же код спокойно даёт 400МГц в Cyclone IV E и MAX 10, а в Cyclone V получается от силы 150МГц :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 28 апреля, 2020 Опубликовано 28 апреля, 2020 · Жалоба Возможно, дело в HMCPHY_RE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 28 апреля, 2020 Опубликовано 28 апреля, 2020 · Жалоба А детальный STA отчет что дает по этому пути? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 28 апреля, 2020 Опубликовано 28 апреля, 2020 · Жалоба А не та же проблема, с которой я давно сталкивался ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 28 апреля, 2020 Опубликовано 28 апреля, 2020 · Жалоба 7 hours ago, andrew_b said: HMCPHY_RE Нда... Похоже эта самая гадость. Проблема с большой задержкой лишь по нескольким пинам. Остальные нормально укладываются в тайминги. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 29 апреля, 2020 Опубликовано 29 апреля, 2020 · Жалоба Пытаюсь решить проблему через мультициклы. 1. Собираю проект без мультициклов. TQ ругается на задержки. 2. Прописываю мультицикл. set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 TQ перестает ругаться на задержки. 3. Собираю проект с новым sdc. TQ опять ругается на задержки. ??????????????? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 29 апреля, 2020 Опубликовано 29 апреля, 2020 · Жалоба 6 минут назад, BSACPLD сказал: Пытаюсь решить проблему через мультициклы. 1. Собираю проект без мультициклов. TQ ругается на задержки. 2. Прописываю мультицикл. set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 TQ перестает ругаться на задержки. 3. Собираю проект с новым sdc. TQ опять ругается на задержки. ??????????????? Судя по описанию Вы работаете с кодировкой 8b/10b. Вы можете подвигать фазу PLL для этих ножек. И по тестовым паттернам найти стабильный приём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 29 апреля, 2020 Опубликовано 29 апреля, 2020 · Жалоба Там гораздо хитрее чем 8b/10b. Самодельный приемопередатчик с автоопределнием момента семплирования входного сигнала (передискретизация в 4 раза). Проблема именно в переходе от DDIO к логике. Этот модуль замечательно работает на 400МГц в Cyclone IV E и MAX 10. А вот с Cyclone V пока проблема. Точнее в железе все работает. Вопрос как правильно описать констрейны для случая когда задержка от DDIO до логики больше одного такта. rx_tx_8b_10b.7z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 29 апреля, 2020 Опубликовано 29 апреля, 2020 · Жалоба Получилось :) Я забыл еще на hold мультицикл прописать :( Вот так нормально собирается: set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -setup -end 2 set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_l[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[1]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[0].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[1].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[2].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[3].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[4].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[5].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[6].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 set_multicycle_path -from {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|rx_ddr:rx_ddr_0|altddio_in:RXDDR|ddio_in_s6f:auto_generated|dataout_h[0]} -to {rx_8b_10b:loop_ser[7].rx_8b_10b_0|rx_8b_10b_4x:rx_8b_10b_4x_0|ser_in_2x_reg[0]} -hold -end 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 6 hours ago, BSACPLD said: Получилось :) Я забыл еще на hold мультицикл прописать :( Вот так нормально собирается: ЕМНИП когда пишется еще и hold, то это честный мультицикл, описывающий, в вашем случае, "понижение" тактовой в 2 раза, а вот задержка как раз, описывается только через мультицикл с setup. Подозреваю что ваше получилось это "ква больше не ругается", а не то что вы думаете) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 8 часов назад, BSACPLD сказал: Я забыл еще на hold мультицикл прописать :( Вам правильно des00 сказал. У вас корректная задержка от 0 до 2-х тактов, а вы вероятно каждый такт данные забираете. Лучше бы разобрались с путями из-за которых такая задержка получается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 2 hours ago, dvladim said: Лучше бы разобрались с путями из-за которых такая задержка получается. Так после DDIO сразу идет триггер. Там больше ничего нет. rx_ddr #( .WIDTH (1), .FPGA_VENDOR (FPGA_VENDOR), .DEVICE_FAMILY (DEVICE_FAMILY) ) rx_ddr_0 ( .datain (ser_in), .inclock (clk_sys_2x), .dataout_h (ser_in_2x[0]), .dataout_l (ser_in_2x[1]) ) ; always @(negedge clk_sys_2x) begin ser_in_2x_reg <= ser_in_2x ; end 2 hours ago, dvladim said: У вас корректная задержка от 0 до 2-х тактов, а вы вероятно каждый такт данные забираете. Данные я забираю каждый такт, но частота изменения данных в 4 раза ниже частоты семплирования данных. Высокая частота семплирования нужна чтобы в цифре можно было динамически выбирать момент семплирования данных. Что-то вроде управляемой ЛЗ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 7 минут назад, BSACPLD сказал: Так после DDIO сразу идет триггер Это вы приводили, я имел ввиду детальный путь от STA. На чем набегает задержка? Вы указывали 150 МГц. Т.е. около 6.5 нс. Вот с этим и нужно разбиратья. 9 минут назад, BSACPLD сказал: Данные я забираю каждый такт, но частота изменения данных в 4 раза ниже частоты семплирования данных Насколько я понял у вас 8-ми разрядная шина. При -setup 2 -hold 1 разные разряды могут попадать из разных отсчетов. Ну если вас это устраивает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 3 minutes ago, dvladim said: Насколько я понял у вас 8-ми разрядная шина. Нет. Это 8 независимых 1-битных линков. Текущий проект это что-то вроде роутера Ethernet в 8 независимых LVDS линков. 10 minutes ago, dvladim said: Вы указывали 150 МГц. Т.е. около 6.5 нс. Вот с этим и нужно разбиратья. Вот отчет. На 150МГц собирается без мультициклов. На 300МГц нужно ставить мультицикл 2. print.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба У вас на LABCELL_X23_Y3_N33 набегает 4.8 нс. Добавьте конвейерные триггера в позицию X53_Y1. Дальнейшее расхождение времянок можно скомпенсировать фазами PLL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться