Перейти к содержанию
    

Захват lvds данных . Как вычислить задержку CLK в ISE-е?

В ПЛИС захватываю поток lvds данных. Причем data меняется и по фронту и по срезу CLK.Проблема в следующем. CLK заведен на I/O (так получилось, изменить нельзя) , который не является GCLK.

Десериализатор lvds данных при помощи контрейнов я разместил возле I/O data. CLK же с I/O идет на DCM, где подстраивается его фаза для компенсации задержки.

Вопрос как вычислить эту задержку и подстроить фазу верно ?

В аттаче структурная схема.

камень Virtex FX12

частота CLK 300 МГц.

post-19059-1221051083_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поставить нулевую задержку в DCM, сделать timesim, посмотреть, насколько надо подвинуть (чтобы попало в середину окна данных). Однако, эта задержка может плыть от температуры и напряжения, поэтому, если частота на пределе - то стоит задуматься об автокалибровке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть очень корявый путь: вручную назначить LOC для первого элемента, на который приходят данные с IBUFDS по ветке 'Data'. Так, чтобы задержки линий 'Data' и 'CLK' (от IBUFDS до DCM) были очень близкими - это позволит сделать менее температурнозависимой компенсацию...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть очень корявый путь: вручную назначить LOC для первого элемента, на который приходят данные с IBUFDS по ветке 'Data'. Так, чтобы задержки линий 'Data' и 'CLK' (от IBUFDS до DCM) были очень близкими - это позволит сделать менее температурнозависимой компенсацию...

Это может дать прямо обратный эффект - цепи данных и синхронизации организованы абсолютно по-разному, и плыть будут соответственно неодинаково. Затем, делая так, придется еще и разводку этой трассы зафиксировать. Вобщем, так делать можно только, если PLL/DCM кончились (используются в других местах, где без них совсем-совсем никак).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть очень корявый путь: вручную назначить LOC для первого элемента, на который приходят данные с IBUFDS по ветке 'Data'. Так, чтобы задержки линий 'Data' и 'CLK' (от IBUFDS до DCM) были очень близкими - это позволит сделать менее температурнозависимой компенсацию...
.

Спасибо. Идея интересная. Проскакивала как - то в голове , правда откинул.

LOC для десеализатора можно назначить, но сигнал DATA рутер может заводить от разводки к разводки по разным путям. В итоге разбежка. Можно ли назначить путь для сигнала с помощью констрейнов ?

Однако, эта задержка может плыть от температуры и напряжения, поэтому, если частота на пределе - то стоит задуматься об автокалибровке.

Пасиб. Впринипе так и представлял себе это. Но думал что ISE позволяет измерять задержку , вносимую на линиях. А об автокалибровке уже задумываюсь. :)

А можно ли моделировать после place&route учитывая температуру ?

 

p.s

 

Это может дать прямо обратный эффект - цепи данных и синхронизации организованы абсолютно по-разному, и плыть будут соответственно неодинаково.

Почему ? Если цепи дата и clk проходят одинакоывый путь, пробегают одинаковое кол-во переключательных блоков, из-за чего они будут плыть ? Или кристалл не симметричный нагрев может иметь ?

Затем, делая так, придется еще и разводку этой трассы зафиксировать.

Вот. А каким констрейном это сделать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему ? Если цепи дата и clk проходят одинакоывый путь, пробегают одинаковое кол-во переключательных блоков, из-за чего они будут плыть ? Или кристалл не симметричный нагрев может иметь ?
Они проходят не одинаковый путь, и не одинаковое количество переключательных блоков. Я говорил уже, что цепи данных и синхронизации организованы абсолютно по-разному: сделайте малюсенький проект, откройте в FPGA Editor и посмотрите, как трассы идут. Только не пытайтесь пустить синхронизацию по линиям, предназначенным для данных.

Затем, синхронизация периодична. Это значит, что при частоте синхронизации в, скажем, 100 МГц задержки данных и сихронизации относительно друг друга в 0, 10, 20 и т.д. наносекунд будут смотреться идентично. Однако, плыть они будут опять-таки по-разному.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это может дать прямо обратный эффект - цепи данных и синхронизации организованы абсолютно по-разному, и плыть будут соответственно неодинаково. Затем, делая так, придется еще и разводку этой трассы зафиксировать. Вобщем, так делать можно только, если PLL/DCM кончились (используются в других местах, где без них совсем-совсем никак).

Ну, как я понимаю, задача сформулирована так: неудается использовать dedicated clk pin. И сейчас ветка 'CLK' идет от обычного IBUFDS к DCM, вот и вопрос, как бы скомпенсировать эту непредвиденную задержку... А DCM'ичиков вроде хватает... Просто так разведена плата.

 

Я думаю, что если сейчас от IBUFGS до DCM трасса проходит через 2 local lines, то можно оттащить в

ветке 'Data' первый триггер от своего IBUFDS так, чтобы путь к нему занимал 2 local lines.

Если надо больше Local lines, то уже могут понадобиться прыжки с бубном.

 

Если IBUFDS и обоих веток находятся "недалеко" друг от друга, то и термокомпенсация будет не плоха...Хотя опять таки повторюсь с чего начал: "это очень корявый вариант".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендую использовть узел автоподстройки фазы тактовой частоты.

У меня подобная проблема возникает постоянно. В итоге появился вот такой узел автоподстройки.

Идея в том, что входной сигнал тактовой частоты дополнительно защёлкивается на триггере во входном буфере.

Защёлкивание производится сигналом с DCM. Автомат управления должен вывести фазу сигнала DCM в то положение, при котором входной сигнал будет защёлкиваться нестабильно, то 0, то 1. Это положение и будет истиным положением тактового сигнала на входной ножке. А дальше для защёлкивания данных можно брать любой удобный сигнал DCM - например сдвинутый на 90 градусов, или на 180.

 

Предлагаю файл ctrl_dcm_phase_v1.vhd; В нём реализована постаянная подстройка фазы.

Если кто-нибуть будет его использовать, то большая просьба сообщить о результатах и ошибках.

ctrl_dcm_phase_v1.vhd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...