реклама на сайте
подробности

 
 
> LVDS передатчик, sdc constraints для LVDS
Denisnovel
сообщение Dec 19 2017, 18:11
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Приветствую.
На ПЛИС Arria V сделал LVDS SerDes с внешней PLL, как показано на рисунке. Кроме данных на внешний выход подается тактовая частота с этой же PLL с отдельного выхода(c0-c2 для передатчика и c3 на внешный выход).
Как мне описать задержки клока? Сейчас описываю примерно так
Код
#Делаем новый клок на выходе.
create_clock -period 8.0 -name fpga_clk [get_ports fpga_clk]
derive_pll_clocks
create_generated_clock -source [get_pins {inst1|altpll_component|auto_generated|pll1|clk[1]}] -name ssync_tx_clk_ext [get_ports {ssync_tx_clk}]
set_output_delay -clock ssync_tx_clk_ext -max -0.25 [get_ports {ssync_tx_data[*]}]
set_output_delay -clock ssync_tx_clk_ext -min 0.25 [get_ports {ssync_tx_data[*]}]

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

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Denisnovel
сообщение Dec 20 2017, 13:21
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753



Ошибся когда переносил min max. Сейчас попробовал сделать с использованием ALTDDIO_OUT. При этом c0_cl - клок, которым тактируется tx_inclock. Какие то каналы работают с инверсией, какие-то без. Результат зависит от компиляции. Все клоки видны в отчете. Сейчас есть только ошибка minimum pulse width на входе регистров, на которые подаются datain_h datain_l.
Код
ddr_clk ddr_clk_cl
            (
              .datain_h  (1'b1),
              .datain_l  (1'b0),
              .outclock  (c0_cl),
              .dataout   (ClientTxClk)
            );
Либо  приходится делать так:
ddr_clk ddr_clk_cl
            (
              .datain_h  (1'b0),
              .datain_l  (1'b1),
              .outclock  (c0_cl),
              .dataout   (ClientTxClk)
            );



Код
create_generated_clock -name lvds_clk0 -source [get_pins {*lvds_ln_gen[0]*ddr_clk*|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}] -invert [get_ports {LvdsTxClk[0]}]
create_generated_clock -name lvds_clk1 -source [get_pins {*lvds_ln_gen[1]*ddr_clk*|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}]  [get_ports {LvdsTxClk[1]}]
create_generated_clock -name lvds_clk2 -source [get_pins {nam1.ddr_clk_cl|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}]   [get_ports {ClientTxClk}]
#Tsu Th 0.25 +0.025 extra
set_output_delay  -clock [get_clocks lvds_clk0] -min -0.275ns  [get_ports *LvdsTxData[0][*]* ]
set_output_delay  -clock [get_clocks lvds_clk0] -max  0.275ns  [get_ports *LvdsTxData[0][*]* ]
set_output_delay  -clock [get_clocks lvds_clk1] -min -0.275ns  [get_ports *LvdsTxData[1][*]* ]
set_output_delay  -clock [get_clocks lvds_clk1] -max  0.275ns  [get_ports *LvdsTxData[1][*]* ]
set_output_delay  -clock [get_clocks lvds_clk2] -min -0.275ns  [ get_ports *ClientTxData[*]* ]
set_output_delay  -clock [get_clocks lvds_clk2] -max  0.275ns  [ get_ports *ClientTxData[*]* ]

p.s. линии данных и клока в каждом канале выровнены относительно друг друга.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 12:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016