|
Захват lvds данных . Как вычислить задержку CLK в ISE-е? |
|
|
|
Sep 10 2008, 12:52
|
Знающий
   
Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059

|
В ПЛИС захватываю поток lvds данных. Причем data меняется и по фронту и по срезу CLK.Проблема в следующем. CLK заведен на I/O (так получилось, изменить нельзя) , который не является GCLK. Десериализатор lvds данных при помощи контрейнов я разместил возле I/O data. CLK же с I/O идет на DCM, где подстраивается его фаза для компенсации задержки. Вопрос как вычислить эту задержку и подстроить фазу верно ? В аттаче структурная схема. камень Virtex FX12 частота CLK 300 МГц.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
(1 - 7)
|
Sep 15 2008, 08:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(Boris_TS @ Sep 14 2008, 21:56)  Есть очень корявый путь: вручную назначить LOC для первого элемента, на который приходят данные с IBUFDS по ветке 'Data'. Так, чтобы задержки линий 'Data' и 'CLK' (от IBUFDS до DCM) были очень близкими - это позволит сделать менее температурнозависимой компенсацию... Это может дать прямо обратный эффект - цепи данных и синхронизации организованы абсолютно по-разному, и плыть будут соответственно неодинаково. Затем, делая так, придется еще и разводку этой трассы зафиксировать. Вобщем, так делать можно только, если PLL/DCM кончились (используются в других местах, где без них совсем-совсем никак).
|
|
|
|
|
Sep 15 2008, 09:17
|
Знающий
   
Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059

|
Цитата(Boris_TS @ Sep 14 2008, 15:56)  Есть очень корявый путь: вручную назначить LOC для первого элемента, на который приходят данные с IBUFDS по ветке 'Data'. Так, чтобы задержки линий 'Data' и 'CLK' (от IBUFDS до DCM) были очень близкими - это позволит сделать менее температурнозависимой компенсацию... . Спасибо. Идея интересная. Проскакивала как - то в голове , правда откинул. LOC для десеализатора можно назначить, но сигнал DATA рутер может заводить от разводки к разводки по разным путям. В итоге разбежка. Можно ли назначить путь для сигнала с помощью констрейнов ? Цитата Однако, эта задержка может плыть от температуры и напряжения, поэтому, если частота на пределе - то стоит задуматься об автокалибровке. Пасиб. Впринипе так и представлял себе это. Но думал что ISE позволяет измерять задержку , вносимую на линиях. А об автокалибровке уже задумываюсь. А можно ли моделировать после place&route учитывая температуру ? p.s Цитата Это может дать прямо обратный эффект - цепи данных и синхронизации организованы абсолютно по-разному, и плыть будут соответственно неодинаково. Почему ? Если цепи дата и clk проходят одинакоывый путь, пробегают одинаковое кол-во переключательных блоков, из-за чего они будут плыть ? Или кристалл не симметричный нагрев может иметь ? Цитата Затем, делая так, придется еще и разводку этой трассы зафиксировать. Вот. А каким констрейном это сделать ?
|
|
|
|
|
Sep 15 2008, 09:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(Костян @ Sep 15 2008, 13:17)  Почему ? Если цепи дата и clk проходят одинакоывый путь, пробегают одинаковое кол-во переключательных блоков, из-за чего они будут плыть ? Или кристалл не симметричный нагрев может иметь ? Они проходят не одинаковый путь, и не одинаковое количество переключательных блоков. Я говорил уже, что цепи данных и синхронизации организованы абсолютно по-разному: сделайте малюсенький проект, откройте в FPGA Editor и посмотрите, как трассы идут. Только не пытайтесь пустить синхронизацию по линиям, предназначенным для данных. Затем, синхронизация периодична. Это значит, что при частоте синхронизации в, скажем, 100 МГц задержки данных и сихронизации относительно друг друга в 0, 10, 20 и т.д. наносекунд будут смотреться идентично. Однако, плыть они будут опять-таки по-разному.
|
|
|
|
|
Sep 15 2008, 13:34
|
Злополезный
   
Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188

|
Цитата(DmitryR @ Sep 15 2008, 12:59)  Это может дать прямо обратный эффект - цепи данных и синхронизации организованы абсолютно по-разному, и плыть будут соответственно неодинаково. Затем, делая так, придется еще и разводку этой трассы зафиксировать. Вобщем, так делать можно только, если PLL/DCM кончились (используются в других местах, где без них совсем-совсем никак). Ну, как я понимаю, задача сформулирована так: неудается использовать dedicated clk pin. И сейчас ветка 'CLK' идет от обычного IBUFDS к DCM, вот и вопрос, как бы скомпенсировать эту непредвиденную задержку... А DCM'ичиков вроде хватает... Просто так разведена плата. Я думаю, что если сейчас от IBUFGS до DCM трасса проходит через 2 local lines, то можно оттащить в ветке 'Data' первый триггер от своего IBUFDS так, чтобы путь к нему занимал 2 local lines. Если надо больше Local lines, то уже могут понадобиться прыжки с бубном. Если IBUFDS и обоих веток находятся "недалеко" друг от друга, то и термокомпенсация будет не плоха...Хотя опять таки повторюсь с чего начал: "это очень корявый вариант".
|
|
|
|
|
Sep 16 2008, 15:57
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Рекомендую использовть узел автоподстройки фазы тактовой частоты. У меня подобная проблема возникает постоянно. В итоге появился вот такой узел автоподстройки. Идея в том, что входной сигнал тактовой частоты дополнительно защёлкивается на триггере во входном буфере. Защёлкивание производится сигналом с DCM. Автомат управления должен вывести фазу сигнала DCM в то положение, при котором входной сигнал будет защёлкиваться нестабильно, то 0, то 1. Это положение и будет истиным положением тактового сигнала на входной ножке. А дальше для защёлкивания данных можно брать любой удобный сигнал DCM - например сдвинутый на 90 градусов, или на 180. Предлагаю файл ctrl_dcm_phase_v1.vhd; В нём реализована постаянная подстройка фазы. Если кто-нибуть будет его использовать, то большая просьба сообщить о результатах и ошибках.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|