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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как задать правильные констрэйны для приема от АЦП
soldat_shveyk
сообщение Jul 6 2016, 15:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Доброго дня!

Есть АЦП подключенное к ПЛИС через DDR LVDS. Частота дискретизации 250 МГц.
АЦП выдает клок и данные на ПЛИС. Форма сигнала на входных ногах ПЛИС показана на приложенной картинке.



По по осциллограмме видно что время от момента переключения данных, до момента последующего нарастания клока равно 1.44 нс.
Эту величину и надо указывать как set_input_delay?

Или же в set_input_delay надо указывать время от нарастания клока до следующего переключения данных = 0.56 нс?

Запутался совсем.
PS В "ТаймКвест для чайников" не отправлять, уже изучаю sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 6 2016, 17:34
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



И сюда не отправлять?
http://www.alterawiki.com/wiki/File:TimeQuest_User_Guide.pdf
Go to the top of the page
 
+Quote Post
krux
сообщение Jul 6 2016, 18:07
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



0. как на плате сделано выравнивание шины DDR LVDS относительно тактового сигнала?
1. плис какая?
2. судя по наличию слова "Timequest" намекаете на альтеру, тогда их рекомендации здесь: https://www.altera.com/en_US/pdfs/literature/an/an433.pdf


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Jul 6 2016, 18:39
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
0. как на плате сделано выравнивание шины DDR LVDS относительно тактового сигнала

Для простоты будем счтать, осциллограф подключен непосредственно к ногам ПЛИС.
Выравнивание, тип ПЛИС не имеет значения.

Цитата
И сюда не отправлять?

Чувсво юмора оценил, спасибо.

Могу поставить вопрос в более общем виде:
Если поставить один вход осциллографа на тактовый вход ПЛИС, а другой на вход данных и получить вышеуказанную осциллограмму, то
как из нее получить констрэйн для этой конкретной ситуации?
Технослогический разброс выходных таймингов источника (АЦП), температурный дрейф и прочие нюансы пока выносим за скобки.

Go to the top of the page
 
+Quote Post
krux
сообщение Jul 6 2016, 19:12
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Цитата(soldat_shveyk @ Jul 6 2016, 21:39) *
Выравнивание, тип ПЛИС не имеет значения.

по факту ты только что этим самым сказал что подсказки тебе не нужны.

Цитата(soldat_shveyk @ Jul 6 2016, 21:39) *
Если поставить один вход осциллографа на тактовый вход ПЛИС, а другой на вход данных и получить вышеуказанную осциллограмму, то
как из нее получить констрэйн для этой конкретной ситуации?

и прочтение TimeQuest_User_Guide.pdf не помогло? я тебя умоляю =))))))
делать твою работу за тебя никто не будет.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Jul 6 2016, 20:50
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
делать твою работу за тебя никто не будет.

Вы все о своем, о наболевшем ?
Это не работа, это развлечение. Кто-то пиво пьет по вечерем у телека, а я ТаймКвест решил освоить sm.gif

На осциллограмме имеем t_setup = 1.44 нс и t_hold = 0.56 нс на входе ПЛИС.
Если я правильно понял, то максимальная задержка на входе не должна превышать t_hold, а минимальная не должна быть меньше -t_setup ?
Тогда входные констрэйны я делаю такие:

create_clock - name dsp_clk -period 4.000 [get_ports adc_clkb]
create_clock - name virt_clk -period 4.000
derive_clock_uncertainty
set T_SETUP 1.440
set T_HOLD 0.560
set_input_delay -clock virt_clk -max T_HOLD [get_ports adc_db11]
set_input_delay -clock virt_clk -min -T_SETUP [get_ports adc_db11]

Я правильно рассуждаю?
Или может быть надо уменьшить оба значения, чтобы отступить от моментов переключения данных?




Go to the top of the page
 
+Quote Post
Dima_G
сообщение Jul 7 2016, 03:15
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(soldat_shveyk @ Jul 7 2016, 02:50) *
create_clock - name dsp_clk -period 4.000 [get_ports adc_clkb]
create_clock - name virt_clk -period 4.000
derive_clock_uncertainty
set T_SETUP 1.440
set T_HOLD 0.560
set_input_delay -clock virt_clk -max T_HOLD [get_ports adc_db11]
set_input_delay -clock virt_clk -min -T_SETUP [get_ports adc_db11]

Я правильно рассуждаю?
Или может быть надо уменьшить оба значения, чтобы отступить от моментов переключения данных?


Лучше эти значения взять из документации на АЦП. То, что вы видите сейчас - это одно, при другой температуре/чипе/политической обстановке на Кубе - может быть другие сетапы и холды.
И еще:
set_input_delay -clock virt_clk -max $T_HOLD [get_ports adc_db11]
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 7 2016, 07:54
Сообщение #8


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Например так. Здесь delta_t можно приравнять нулю.
Код
#**************************************************************
# Set Input Delay
#**************************************************************
#ADC parameters AD9634
set tPD_min 4.1
set tPD_max 5.2
set tDCO_min 4.7
set tDCO_max 5.8
set Tco_max [expr $tPD_max - $tDCO_min]
set Tco_min [expr $tPD_min - $tDCO_max]

set freqDCO 216.00
set period [expr 1000.0/$freqDCO]
set delta_t [expr $phi_pll_adc * $period / 360.0]
set data_delay_max [expr $Tco_max - $delta_t]
set data_delay_min [expr $Tco_min - $delta_t]

set_input_delay $data_delay_max -max -clock {clk4x4sps_ph}                             [get_ports {InAdc[*]}]
set_input_delay $data_delay_max -max -clock {clk4x4sps_ph} -add_delay -clock_fall  [get_ports {InAdc[*]}]
set_input_delay $data_delay_min -min -clock {clk4x4sps_ph}                               [get_ports {InAdc[*]}]
set_input_delay $data_delay_min -min -clock {clk4x4sps_ph} -add_delay -clock_fall  [get_ports {InAdc[*]}]
set_false_path -rise_from [get_clocks clk4x4sps_ph] -fall_to [get_clocks clk4x4sps_ph]
set_false_path -fall_from [get_clocks clk4x4sps_ph] -rise_to [get_clocks clk4x4sps_ph]
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Jul 7 2016, 08:16
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Anatoliy, спасибо!
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 7 2016, 08:56
Сообщение #10


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(soldat_shveyk @ Jul 7 2016, 11:16) *
Anatoliy, спасибо!

Весьма неплохая страничка здесь:
Timing_Constraints
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Jul 7 2016, 09:03
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(soldat_shveyk @ Jul 6 2016, 23:50) *
На осциллограмме имеем t_setup = 1.44 нс и t_hold = 0.56 нс на входе ПЛИС.
Если я правильно понял, то максимальная задержка на входе не должна превышать t_hold, а минимальная не должна быть меньше -t_setup ?
Тогда входные констрэйны я делаю такие:

create_clock - name dsp_clk -period 4.000 [get_ports adc_clkb]
create_clock - name virt_clk -period 4.000
derive_clock_uncertainty
set T_SETUP 1.440
set T_HOLD 0.560
set_input_delay -clock virt_clk -max T_HOLD [get_ports adc_db11]
set_input_delay -clock virt_clk -min -T_SETUP [get_ports adc_db11]

Я правильно рассуждаю?
Или может быть надо уменьшить оба значения, чтобы отступить от моментов переключения данных?


Вообще говоря, t hold определяет минимальную задержку, t setup - максимальную см. Figure 62 здесь https://www.altera.com/en_US/pdfs/literature/an/an433.pdf.

В Вашем случае, я бы написал:

set T_UI 2

set_input_delay -max [expr $T_UI - $T_SETUP] -clock virt_clk [get_ports adc_db11]
set_input_delay -min $T_HOLD -clock virt_clk -add_delay [get_ports adc_db11]
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Jul 7 2016, 10:03
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
Вообще говоря, t hold определяет минимальную задержку, t setup - максимальную

Точно!

Вот только мне кажется, что период учитывать не надо, если в качестве максимальной задержки поставить $T_PERIOD - $T_SETUP (4.00 - 1.44 = 2.56), то
данные могут "уехать" и в регистр защелкнется значение из другого тактового интервала.
Если я рассуждаю верно, то должно быть так:
set_input_delay -max $T_SETUP -clock virt_clk [get_ports adc_db11]
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 7 2016, 10:12
Сообщение #13


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Minimal setup slack = T - tSU_FPGA - maximum_input_delay, отсюда и пляшите.
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Jul 7 2016, 10:20
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(soldat_shveyk @ Jul 7 2016, 13:03) *
Вот только мне кажется, что период учитывать не надо, если в качестве максимальной задержки поставить $T_PERIOD - $T_SETUP (4.00 - 1.44 = 2.56), то
данные могут "уехать" и в регистр защелкнется значение из другого тактового интервала.
Если я рассуждаю верно, то должно быть так:
set_input_delay -max $T_SETUP -clock virt_clk [get_ports adc_db11]


На мой взгляд, Ваше соображение не вполне корректно. Eсли Вы посмотрите на тот же Figure 62, то увидите, что для одних и тех же данных, максимальная и минимальная входные задержки в TimeQuest определяются по умолчанию для РАЗНЫХ фронтов входного клока. Поэтому, В Вашем случае, максимальная задержка (и это хорошо видно на рисунке) равна T_UI - T_SETUP.

Небольшая коррекция предыдущего поста: так как у Вас DDR, то в максимальной задержке надо учитывать не период, а пол-периода, а именно:

set T_UI 2

set_input_delay -max [expr $T_UI - $T_SETUP] -clock virt_clk [get_ports adc_db11]
set_input_delay -min $T_HOLD -clock virt_clk -add_delay [get_ports adc_db11]
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Jul 7 2016, 10:42
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
так как у Вас DDR, то в максимальной задержке надо учитывать не период, а пол-периода

Меня это и смутило.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:02
Рейтинг@Mail.ru


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