Jump to content

    

Recommended Posts

Доброго всем!

Имеется плата с кривым разводом DVI и как следствие кривым приемом данных по этому самому DVI. Решил поправить данную ситуацию с помощью TimeQuest, но, скорее всего из-за малого опыта, у меня это не удалось.

 

Схема всего этого безобразия во вложении, вкратце поясню:

  • данные со скоростью 650 Mbps поступают в сдвиговый регистр 1:10, далее уходят на пиксельной частоте в обработку
  • PLL имеет тип source synchronous, умножает входную частоту на 20, первый выход делит на 2, второй на 20
  • имеется простой блок подстройки фаз PLL, который ориентируется на входные данные

Все что я знаю о источнике сигналов - глазковая диаграмма из спецификации на интерфейс(во вложении, диаграмма нормализованная)

 

Имея сей стартовый набор данных, я набросал ограничений:

Spoiler

create_clock -name {TMDS_CLK} -period 15.384 [get_ports {TMDS_CLK}]
create_clock -name {TMDS_virt} -period 1.538 -waveform {0.769 1.538}
set_clock_groups -logically_exclusive -group {TMDS_CLK TMDS_virt}

#Размеры глаза
set TMDS_Tsu [expr 0.25 * $freq_period]
set TMDS_Th [expr 0.25 * $freq_period]

#Скорость распространения сигнала
set spd 0.007

#Длины линий
set TMDS_D0_min 111.729
set TMDS_D0_max 111.729
set TMDS_D1_min 130.603
set TMDS_D1_max 133.275
set TMDS_D2_min 138.99
set TMDS_D2_max 142.327
set TMDS_CLK_min 113.957
set TMDS_CLK_max 114.785

#Задержки
set TMDS_D0_min_delay [expr $TMDS_D0_min * $spd]
set TMDS_D0_max_delay [expr $TMDS_D0_max * $spd]
set TMDS_D1_min_delay [expr $TMDS_D1_min * $spd]
set TMDS_D1_max_delay [expr $TMDS_D1_max * $spd]
set TMDS_D2_min_delay [expr $TMDS_D2_min * $spd]
set TMDS_D2_max_delay [expr $TMDS_D2_max * $spd]
set TMDS_CLK_min_delay [expr $TMDS_CLK_min * $spd]
set TMDS_CLK_max_delay [expr $TMDS_CLK_max * $spd]

set_input_delay -clock { TMDS_virt } -min [expr $TMDS_D0_min - $TMDS_Th -  $TMDS_CLK_max ] [get_ports {TMDS_DATA[0]}]
set_input_delay -clock { TMDS_virt } -max [expr $TMDS_D0_max + $TMDS_Tsu - $TMDS_CLK_min ] [get_ports {TMDS_DATA[0]}]
set_input_delay -clock { TMDS_virt } -min [expr $TMDS_D1_min - $TMDS_Th -  $TMDS_CLK_max ] [get_ports {TMDS_DATA[1]}]
set_input_delay -clock { TMDS_virt } -max [expr $TMDS_D1_max + $TMDS_Tsu - $TMDS_CLK_min ] [get_ports {TMDS_DATA[1]}]
set_input_delay -clock { TMDS_virt } -min [expr $TMDS_D2_min - $TMDS_Th -  $TMDS_CLK_max ] [get_ports {TMDS_DATA[2]}]
set_input_delay -clock { TMDS_virt } -max [expr $TMDS_D2_max + $TMDS_Tsu - $TMDS_CLK_min ] [get_ports {TMDS_DATA[2]}]

 

 

  1. Описал входную частоту
  2. Описал виртуальную частоту со сдвигом 180 градусов(center aligned)
  3. Объединил их в одну группу
  4. Задал задержки относительного виртуальной частоты

Собственно к чему все это... Просьба "оценить" написанные ограничения, да и от советов по приему и десериализации данных сигналов не откажусь

bitmap.png

eye.png

Share this post


Link to post
Share on other sites

DVI констрейны по данным и не нужны по сути ) 

В соответствии со стандартом - положение клока относительно данных может быть абсолютно случайным. Задача приемника по тестовым данным (которые передаются пока DE = 0) подстроиться под центр глаза - соответственно констрейны никак не помогут 

P.S. Лучше не в сдвиговый регистр 1:10 данные принимать. А в DDR регистр - сможете больше разрешений принять.

Share this post


Link to post
Share on other sites
15 minutes ago, Flip-fl0p said:

DVI констрейны по данным и не нужны по сути ) 

В соответствии со стандартом - положение клока относительно данных может быть абсолютно случайным. Задача приемника по тестовым данным (которые передаются пока DE = 0) подстроиться под центр глаза - соответственно констрейны никак не помогут 

P.S. Лучше не в сдвиговый регистр 1:10 данные принимать. А в DDR регистр - сможете больше разрешений принять.

Я хочу максимально компенсировать разницу в длине дифф пар.

Приемник у меня конечно может и простой, но в нем конкретно прописаны длины синхронизирующих последовательностей, но вот от компиляции к компиляции результат не стабилен, он может "поймать" синхронизацию, а может и не принять

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.

Sign in to follow this