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

 
 
> Virtex 6. Прием данных с АЦП. Констрейны, Дифференциальный сигна, параллельная шина, ддр
Ethereal
сообщение Jul 10 2014, 15:14
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Здравствуйте.

Имеется проект на шестом виртексе с параллельными АЦП на 400 МГц.
Выходная шина АЦП 10 бит, сопровождаются тактом 200 МГц с привязкой к центру UI. Сигналы дифференциальные. Передача идет с удвоенной скоростью. tsu, th относительно переднего фронта синхросигнала 1нс

В проекте, соответственно реализован приемник.
Дифференциальная шина пропускается сначала через IBUFDS.
С выхода IBUFDS она идет на IDDR и далее на синхронизатор на FIFO.

Клок от АЦП пропускается через IBUFDS и далее идет на клок IDDR, на котором защелкивается входная шина.

В .ucf описаны констрейны:

Код
NET InputAdcClockPos TNM_NET = TnmAdcClockPos;
TIMESPEC TsAdcClockPos = PERIOD TnmAdcClockPos 200 Mhz HIGH 50%;

TIMEGRP GrpRiseAdcClockPos = RISING TnmAdcClockPos;
TIMEGRP GrpFallAdcClockPos = FALLING TnmAdcClockPos;

OFFSET = IN 750 ps VALID 1500 ps BEFORE InputAdcClockPos TIMEGRP GrpRiseAdcClockPos;
OFFSET = IN 750 ps VALID 1500 ps BEFORE InputAdcClockPos TIMEGRP GrpFallAdcClockPos;


Описал с запасом на разбег в длинах проводников, хотя он там настолько влиять не должен.

При этом PAR долго разводит, а потом фейлит констрейны.

После этого клок стал пропускать не через IBUFDS, а IBUFGDS, и стало намного лучше в части скорости работы, но фейл с констрейнами остался.
Например.

Код
Slack (setup path):     -1.144ns (requirement - (data path - clock path - clock arrival + uncertainty))
  Source:               InputAdcDataPos<3> (PAD)
  Destination:          GenDdr[3].IDDR_inst (FF)
  Destination Clock:    AdcClock rising at 0.000ns
  Requirement:          0.750ns
  Data Path Delay:      5.235ns (Levels of Logic = 1)
  Clock Path Delay:     3.366ns (Levels of Logic = 2)
  Clock Uncertainty:    0.025ns


где AdcClock - это клок на выходе IBUFGDS.

Tsu всей шины на переднем фронте болтается в районе 1.86нс. Th в районе минус 0.1.

Не подскажете, чем можно вылечить данную проблему?

Заранее спасибо.


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Bad0512
сообщение Jul 11 2014, 02:14
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Ethereal @ Jul 10 2014, 22:14) *
Здравствуйте.

Имеется проект на шестом виртексе с параллельными АЦП на 400 МГц.
Выходная шина АЦП 10 бит, сопровождаются тактом 200 МГц с привязкой к центру UI. Сигналы дифференциальные. Передача идет с удвоенной скоростью. tsu, th относительно переднего фронта синхросигнала 1нс

В проекте, соответственно реализован приемник.
Дифференциальная шина пропускается сначала через IBUFDS.
С выхода IBUFDS она идет на IDDR и далее на синхронизатор на FIFO.

Клок от АЦП пропускается через IBUFDS и далее идет на клок IDDR, на котором защелкивается входная шина.

В .ucf описаны констрейны:

Код
NET InputAdcClockPos TNM_NET = TnmAdcClockPos;
TIMESPEC TsAdcClockPos = PERIOD TnmAdcClockPos 200 Mhz HIGH 50%;

TIMEGRP GrpRiseAdcClockPos = RISING TnmAdcClockPos;
TIMEGRP GrpFallAdcClockPos = FALLING TnmAdcClockPos;

OFFSET = IN 750 ps VALID 1500 ps BEFORE InputAdcClockPos TIMEGRP GrpRiseAdcClockPos;
OFFSET = IN 750 ps VALID 1500 ps BEFORE InputAdcClockPos TIMEGRP GrpFallAdcClockPos;


Описал с запасом на разбег в длинах проводников, хотя он там настолько влиять не должен.

При этом PAR долго разводит, а потом фейлит констрейны.

После этого клок стал пропускать не через IBUFDS, а IBUFGDS, и стало намного лучше в части скорости работы, но фейл с констрейнами остался.
Например.

Код
Slack (setup path):     -1.144ns (requirement - (data path - clock path - clock arrival + uncertainty))
  Source:               InputAdcDataPos<3> (PAD)
  Destination:          GenDdr[3].IDDR_inst (FF)
  Destination Clock:    AdcClock rising at 0.000ns
  Requirement:          0.750ns
  Data Path Delay:      5.235ns (Levels of Logic = 1)
  Clock Path Delay:     3.366ns (Levels of Logic = 2)
  Clock Uncertainty:    0.025ns


где AdcClock - это клок на выходе IBUFGDS.

Tsu всей шины на переднем фронте болтается в районе 1.86нс. Th в районе минус 0.1.

Не подскажете, чем можно вылечить данную проблему?

Заранее спасибо.

Довольно странная картина у вас получается.
Обычно задержка по клоку больше чем по данным.
Советы такие :
1. Задержку можно увеличить с помощью IDELAY макро как по клоку, так и по данным.
2. Пользуйте региональные клоки - для вашей задачи это то, что нужно.

Go to the top of the page
 
+Quote Post
Ethereal
сообщение Jul 11 2014, 06:28
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Цитата(Bad0512 @ Jul 11 2014, 06:14) *
Довольно странная картина у вас получается.
Обычно задержка по клоку больше чем по данным.
Советы такие :
1. Задержку можно увеличить с помощью IDELAY макро как по клоку, так и по данным.
2. Пользуйте региональные клоки - для вашей задачи это то, что нужно.

Пробовал руками ставить IODELAYE1 в разрыв между IBUFDS и IDDR в режиме "DEFAULT".
Кроме почти восьмикратного увеличения времени компиляции получилась еще большая разбежка по времени.
Вообще, я сейчас думаю, что может неправильно вставил.
На схемах указано, что делей вставляется между IBUF и IDDR. Но, возможно, что для дифференциального входа порядок иной?
Или вообще не нужно руками ставить?

Еще пробовал использовать DCM и затактировать вход его выходом.
В итоге получил предупреждение, что клок ничего не тактирует и игнор всех констреинтов в .ucf.


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 13:21
Рейтинг@Mail.ru


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