Jump to content

    

DVI и TimeQuest

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

Имеется плата с кривым разводом 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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now