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

Source-Synchronous Output

Здравствуйте. Наверняка моя проблема уже где-то обсуждалась, но либо не нашел, либо не совсем как у меня. Вот есть крохотный проект, в котором есть двунаправленная шина bidir1_data_bus[15..0]. Блок Slava_bidir_Tx отправляет по ней данные кому-то, а блок Slave_bidir_Rx принимает по ней от кого-то

 

Вопрос по блоку Slave_bidir_Tx и шине bidir1_data_bus[15..0] на отправку по схеме Source-Synchronous Output (выдает шину bidir1_data_bus и частоту CLK_TX1). Блок тактируется частотой 125МГц, получаемой на pll_c5gx. Эта же частота уходит вместе с шиной bidir1_data_bus наружу, чтобы приемник этой частотой защелкивал данные.

 

TOP.png

 

описал частоты в sdc-файле:

create_clock -period 150MHz -name CLK_150M [get_ports CLK_150M]
create_clock -name CLK_RX1 -period 125MHz [get_ports CLK_RX1]

create_generated_clock -name clk_125M -source clk_150M -multiply_by 5 -divide_by 6 [get_pins {inst1|pll_c5gx_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}]
create_generated_clock -name CLK_TX1 -source [get_pins {inst1|pll_c5gx_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] [get_ports {CLK_TX1}]

create_clock -name virtual_source1 -period 125MHz

derive_pll_clocks
derive_clock_uncertainty

 

Дальше задал ограничение на выход шины bidir1_data_bus:

 

 

set Tx_max 4.0
set Tx_min -1.0

set_output_delay -max $Tx_max -clock CLK_TX1 [get_ports bidir1_data_bus*]
set_output_delay -min $Tx_min -clock CLK_TX1 [get_ports bidir1_data_bus*]

 

Здесь предполагается, что Tsu и Th приемника этих данных от ПЛИС будет 4.0нс и 1нс соответственно

 

Дальше в Assignment'ах добавил настройки для bidir1_data_bus и сигнала, управляющего переводом ее в третье состояние:

 

bidir1_data_bus Fast Output Register
Slave_bidir_Tx:inst5|en_buf_rg_out1 Fast Output Enable Register

 

Компилирую, запускаю TimeQuest, делаю Report All I/O Timings

 

Смотрю отчет Register to Outputs(Setup) - вроде по Setup укладывается

Смотрю отчет Register to Outputs(Hold) - краснота, не укладывается.

 

Register_to_Outputs(Hold).png

 

Много читал AN433 и другие документы по заданию ограничений на вводы/выводы. Везде пишут

 

Output maximum delay value = maximum trace delay for data + Tsu of external register - minimum trace delay for clock

Output minimum delay = minimum trace delay for data -Th of external register - maximum trace delay for clock

 

Если пренебречь trace delay for data и trace delay for clock, то это вырождается в

 

Output maximum delay value = + Tsu of external register

Output minimum delay = -Th of external register

 

Это я и задаю в set_output_delay max/min

Если правильно задаю констрейны и правильно описаны клоки, то почему не укладывается по Hold'у ?

И как заставить уложиться по Hold'у ?

 

Не нашел кнопки прикрепления файла. Вот ссылка на архив проекта

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


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

выдаваемый наружу TX_CLK должен быть сдвинут на 180 градусов. для этого можно использовать ALTDDIO_OUT

задание fast input register и fast output register тоже не будет лишним.

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


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

задание fast input register и fast output register тоже не будет лишним.

 

Fast Output Register и Fast Output Enable Register стоят.

 

выдаваемый наружу TX_CLK должен быть сдвинут на 180 градусов. для этого можно использовать ALTDDIO_OUT

сделал CLK_TX1 сдвинутым на 180 градусов (инвертировал, добавил ключ -invert):

create_generated_clock -name CLK_TX1 -invert -source [get_pins {inst1|pll_c5gx_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] [get_ports {CLK_TX1}]

По Hold'у стало лучше, но теперь Setup сломался (сдвинулся влево на 4нс - половину периода 125МГц)

 

SETUP БЫЛО

Was_setup.png

 

SETUP СТАЛО

IS_setup.png

 

 

HOLD БЫЛО

Was_hold.png

 

HOLD СТАЛО

IS_hold.png

 

То как HOLD стал - это нормально или я чего-то не понимаю?

 

Как теперь поравить SETUP ? Читал про multicycles, но не совсем понял подходит ли это для моего случая и как конкретно задать ?

В связи с изменением частоты CLK_TX1 относительно данных нужно ведь теперь приемник привести в соответствие с изменившимся передатчиком.

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


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

Вопрос по блоку Slave_bidir_Tx и шине bidir1_data_bus[15..0] на отправку по схеме Source-Synchronous Output (выдает шину bidir1_data_bus и частоту CLK_TX1). Блок тактируется частотой 125МГц, получаемой на pll_c5gx. Эта же частота уходит вместе с шиной bidir1_data_bus наружу, чтобы приемник этой частотой защелкивал данные.

ИМХО , если частота уходит вместе с шиной bidir1_data_bus наружу, чтобы приемник этой частотой защелкивал данные, то это схема не Source-Synchronous Output, а System-Synchronous Output и соответственно констрейны надо делать иначе.

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


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

Я описывал в терминах AN433. Там они все Source-Synchronous, просто ограничения (constraints) там рассматривают System-Centric либо FPGA-Centric.

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


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

Вот здесь это более понятно описано: http://embedders.org/content/timequest-dly...rfeisov-raznykh ( автор - модератор этого подфорума )

На 3-й странице по ссылке описан System-Synchronous Output, но лучше начать с 1-ой.

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


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

Я описывал в терминах AN433. Там они все Source-Synchronous, просто ограничения (constraints) там рассматривают System-Centric либо FPGA-Centric.

Констрейны в общем случае могут не выполняться, особенно если tsu/th источника данных кривые. Судя по вашим данным Tsu = 4ns, Th = 1ns, это окно стабильности сигнала 5нс. Частота 125МГц = 8нс. Вам нужно уложиться в 3-нс (не считая джиттера), во всем диапазоне температур и чипов. Тут может быть не все так просто.

 

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

 

На 3-й странице по ссылке описан System-Synchronous Output, но лучше начать с 1-ой.

только там на первой странице есть оговорка, что терминология авторская :) если клок идет с плис я назвал это System-Synchronius иначе Source-Synchronius

 

 

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


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

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

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

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

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

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

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

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

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

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