|
Как задать правильные констрэйны для приема от АЦП |
|
|
|
Jul 6 2016, 15:43
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859

|
Доброго дня! Есть АЦП подключенное к ПЛИС через DDR LVDS. Частота дискретизации 250 МГц. АЦП выдает клок и данные на ПЛИС. Форма сигнала на входных ногах ПЛИС показана на приложенной картинке.  По по осциллограмме видно что время от момента переключения данных, до момента последующего нарастания клока равно 1.44 нс. Эту величину и надо указывать как set_input_delay? Или же в set_input_delay надо указывать время от нарастания клока до следующего переключения данных = 0.56 нс? Запутался совсем. PS В "ТаймКвест для чайников" не отправлять, уже изучаю
|
|
|
|
|
Jul 6 2016, 18:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
0. как на плате сделано выравнивание шины DDR LVDS относительно тактового сигнала? 1. плис какая? 2. судя по наличию слова "Timequest" намекаете на альтеру, тогда их рекомендации здесь: https://www.altera.com/en_US/pdfs/literature/an/an433.pdf
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Jul 6 2016, 18:39
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859

|
Цитата 0. как на плате сделано выравнивание шины DDR LVDS относительно тактового сигнала Для простоты будем счтать, осциллограф подключен непосредственно к ногам ПЛИС. Выравнивание, тип ПЛИС не имеет значения. Цитата И сюда не отправлять? Чувсво юмора оценил, спасибо. Могу поставить вопрос в более общем виде: Если поставить один вход осциллографа на тактовый вход ПЛИС, а другой на вход данных и получить вышеуказанную осциллограмму, то как из нее получить констрэйн для этой конкретной ситуации? Технослогический разброс выходных таймингов источника (АЦП), температурный дрейф и прочие нюансы пока выносим за скобки.
|
|
|
|
|
Jul 6 2016, 19:12
|
Профессионал
    
Группа: Свой
Сообщений: 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 не помогло? я тебя умоляю =)))))) делать твою работу за тебя никто не будет.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Jul 6 2016, 20:50
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859

|
Цитата делать твою работу за тебя никто не будет. Вы все о своем, о наболевшем ? Это не работа, это развлечение. Кто-то пиво пьет по вечерем у телека, а я ТаймКвест решил освоить  На осциллограмме имеем 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] Я правильно рассуждаю? Или может быть надо уменьшить оба значения, чтобы отступить от моментов переключения данных?
|
|
|
|
|
Jul 7 2016, 03:15
|
Местный
  
Группа: Свой
Сообщений: 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]
|
|
|
|
|
Jul 7 2016, 09:03
|

Местный
  
Группа: Свой
Сообщений: 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]
|
|
|
|
|
Jul 7 2016, 10:03
|
Местный
  
Группа: Свой
Сообщений: 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]
|
|
|
|
|
Jul 7 2016, 10:20
|

Местный
  
Группа: Свой
Сообщений: 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]
|
|
|
|
|
Jul 7 2016, 10:42
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859

|
Цитата так как у Вас DDR, то в максимальной задержке надо учитывать не период, а пол-периода Меня это и смутило.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|