Jump to content

    

Recommended Posts

Правильно ли я понял : 

-reference_pin нужен если плис на своём пине формирует клок поступающий на внешнюю мс, и уже эта мс выставляет данные на входы плис ?

Share this post


Link to post
Share on other sites

-reference_pin {pin | portAdds source and network latency of the specified reference pin to the input delay value in propagated mode. A reference pin is a leaf pin in the fanout cone of the clock source of the clock that you specify using the -clock parameter.

По сути этот параметр позволяет добавить лейтенси клока, выходящего наружу, к задержке входного пина. Но Ваша трактовка также вполне правильная

Share this post


Link to post
Share on other sites

Задержка одного сигнала всегда указывается - по отношению к чему (какому-то другому сигналу) она привязана. 
Т.е. есть первый аргумент - какой сигнал задерживается/опережает, и второй аргумент - по отношению к какому сигналу (или его местоположению на каком-то пине).

Разработчик и должен выбрать - как ему правильно описать соотношения сигналов.
Насколько понял - Вы выводите клок на пин для внешней микросхемы, она по клоку с задержкой выдает данные на входа ПЛИС - так?
Можно писать не относительно ref pin, а CLK, формируемого на этом пине.

 

Share this post


Link to post
Share on other sites
2 часа назад, Yuri124 сказал:

Насколько понял - Вы выводите клок на пин для внешней микросхемы, она по клоку с задержкой выдает данные на входа ПЛИС - так?

Да, именно так.

2 часа назад, Yuri124 сказал:

Можно писать не относительно ref pin, а CLK, формируемого на этом пине.

А как правильно описать клок формируемый на пине?

Хочу сигнал формируемый в плис (PLL,триггер ...) вывести на пин.

И внешнюю мс и часть схемы в плис тактировать именно этой частотой.

Описать просто как виртуальный клок?

 

Share this post


Link to post
Share on other sites
25.11.2021 в 11:54, Nick_K сказал:

Но Ваша трактовка также вполне правильная

Спасибо.

Поправьте меня если я чего перемудрил.

Задача :

Нужно подключить к плис некий внешний модуль. Все входные и выходные сигналы модуля (в том числе и его клок) должны быть подключены к обычным IO пинам плис.

Решение:

На плис (любым доступным способом) сформировать клок для модуля на выходном пине, и обозвать этот пин, к примеру, CK.

В sdc описать частоту как обычный входной клок через create_clock -period ... -name {CLKP} [get_ports {CK (выходной пин плис на котором сама плис эту частоту и формирует) }]

Все set_*_delay задать относительно клока CLKP.

И в проекте все тактовые входы триггеров-защелок подключить к CLKP.

Share this post


Link to post
Share on other sites
1 minute ago, Freibier said:

В sdc описать частоту как обычный входной клок через create_clock -period ... -name {CLKP} [get_ports {CK (выходной пин плис на котором сама плис эту частоту и формирует) }]

Немного не так. Для формарования внешней тактовой, нужно создать create_generated_clock который будет описывать отношение создаваемого клока к внутренним частотам (например в 2 раза медленнее или 1.3 и т.д.).

А дальше - да, задавать задержки относительно выходного пина CK, который указать в виде -reference_pin для input/output дилеев.

6 minutes ago, Freibier said:

И в проекте все тактовые входы триггеров-защелок подключить к CLKP

Что значит все? Только те, которые будут работать с этой частотой. То что будет работать на другой частоте - на своей.

Share this post


Link to post
Share on other sites
4 часа назад, Nick_K сказал:

Что значит все? Только те, которые будут работать с этой частотой. То что будет работать на другой частоте - на своей.

Ну конечно же только на те, которые будут защелкивать вх/вых шины модуля и на те которые будут их обрабатывать! Спасибо.

 

ЗЫ.

Т.е. в плис будет некий кусок схемы (блок) который будет работать с этим внешним модулем.

А как быть если к плис таким же образом нужно подключить десяток-другой таких же модулей.

Неужели для каждого индивидуальный блок придётся городить организовывать?

 

ЗЫ.ЗЫ.

Я вот задумался, а что если только на входные и выходные регистры (буфера) подключить этот клок с пина (и описать соответственно).

А всю остальную логику тактировать частотой "рождённой" в плис (той же что и на пин выходит, но до поступления на пин).

Будет ли квартус учитывать задержку между этими двумя частотами, сдвиг фаз и т.д и т.п.

Понизит ли временной анализатор максимально допустимую частоту для проекта?

 

Share this post


Link to post
Share on other sites

Насколько я понял, тут случай source-synchronous интерфейса. Для этого достаточно определить клок, относительно которого прописать констрейны. Но клок нужно определить именно в точке, которая максимально близка к выходному пину выходного клока, в этом случае -reference_pin не нужен. Вот пример из рабочего проекта:

 

set DATA_TSU 1.5
set DATA_TH  1.0

set VM_SCLK  {memory_port|memport_vm|memcontroller|ext_mem_clk|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}
set VM_BUS   {V_A* V_BA* V_nWE V_nRAS V_nCAS V_D*}


create_generated_clock -name vm_ram_clk -source [get_pins $VM_SCLK] -invert  [get_ports {V_SCLK}]

set_output_delay -clock [get_clocks {vm_ram_clk}] -max   $ADDR_TSU [get_ports $VM_BUS]
set_output_delay -clock [get_clocks {vm_ram_clk}] -min  -$ADDR_TH  [get_ports $VM_BUS]

 

Share this post


Link to post
Share on other sites

Как я понял это проект с SDRAM.

У меня не память, но частота близка к 100 МГц.

Вы выводите на пин плис клок для SDRAM с мультиплексора и в добавок еще и инверсный?

 

Share this post


Link to post
Share on other sites

Есть аналогичный пример для GMII (125 МГц). Суть та же, т.к. там тот же source-synchronous интерфейс.

Для формирования выходного клока используется элемент altddio, он содержит два флопа и мультиплексор, который коммутирует выходы этих флопов на выходной пин. На входы флопов поданы лог. 1 и 0, на вход sel мультиплексора (muxsel) подан тот же клок - именно он и описан в констрейне. Инверсия там связана с фазировкой клока относительно данных (если на входы флопов подать уровни наоборот, то и инверсию в описании клока нужно убрать).

В доках Альтеры есть картинки на эту тему (у меня под рукой сейчас нет, оперативно показать не могу).

 

Share this post


Link to post
Share on other sites

Ну, так ничего удивительного - это специально и предназначено для подобных вещей. Использование очень простое: модуль генерируете, вставляете в проект, констрейните и всех делов.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.