|
Плавает задержка то ли клоков то ли данных, Прием данных от АЦП |
|
|
|
Mar 20 2013, 15:02
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Имеется FPGA (Arria 2), которая принимает данные от АЦП (по lvds) на относительно небольших частотах 150-200МГц DDR (то есть клок 200, данные 400). Клок приходит от того же АЦП с некоторым фазовым сдвигом относительно данных. Изначально пытался принимать данные этим же клоком варьируя задержку по данным во входных пинах. Качественно не вышло - списал все на собственную тупость и недостаточное знакомство с таймквестом. Теперь добавил по входу клока PLL, кручу фазу тактового сигнала, им и сэмплирую входные данные. Все хорошо, нашел допустимое окно по сдвигу фазы клока, при котором сигналы не ломаются, выбрал среднее значение, сижу радуюсь. Запускаю тот же проект на другой плате - не работает, оптимальная фаза сильно уехала, так что окна вообще не перекрываются. У меня есть несколько вариантов кто виноват: 1) изменение задержек между клоком и данными по выходу АЦП - вполне может быть, но макимально возможное изменение прописанное в даташите на АЦП в потора раза меньше, чем получилось у меня. Попробую проверить осциллом. 2) Ошибки при фазовой подстройке PLL - в даташите было что-то про 50 пс. Несущественно. Что еще? Считаем, что внешние условия одинаковые, 300 по Кельвину, ветер умеренный, погода на Марсе стабильна.
И главный вопрос - что делать? У меня идей пока только две и обе мне не нравятся своей бесперспективностью для общего случая: 1) откалибровать каждую плату под свои задержки. 2) реализовать динамическую подстройку
|
|
|
|
|
 |
Ответов
|
Mar 20 2013, 15:33
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 28-11-12
Из: Москва
Пользователь №: 74 605

|
Цитата(alexadmin @ Mar 20 2013, 18:02)  2) реализовать динамическую подстройку Чем не нравится этот вариант? Мы применяли данный вариант, работает вполне себе хорошо. Даже отслеживает изменения температуры при нагреве платы.
Сообщение отредактировал crono - Mar 20 2013, 15:34
|
|
|
|
|
Mar 21 2013, 05:30
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(crono @ Mar 20 2013, 19:33)  Чем не нравится этот вариант? Мы применяли данный вариант, работает вполне себе хорошо. Даже отслеживает изменения температуры при нагреве платы. Не то, чтобы не нравится, но это во-первых много лишней возни, а во вторых, как справедливо отметил Bad0512 ниже, для таких скоростей, как мне казалось, и так должно быть решение без динамической подстройки. Ну и подспудно меня мучает, что для данного конкретного АЦП я могу калиброваться по встроенным паттернам, а вот что мне делать, если для какого-то другого АЦП (или просто высокоскоростного входного интерфейса) паттернов не окажется? В общем доберусь до осцилла, померяю реально возникающие задержки, буду думать. Похоже действительно придется калиброваться динамически... Цитата(TRILLER @ Mar 20 2013, 19:36)  Ваш PLL запускается в то время, когда от АЦП идёт устойчивый клок? Если нет, то он может подхватить неонятно что и непонятно в какой фазе. Хороший вопрос. С уверенностью в 99% думаю что да. Сам АЦП клока фактически не трогает, просто пропускает через себя. Системный синтезатор порождающий для него клок проверяется на lock. Плюс саму PLL фпга я сбрасывал (и тоже ждал lock) перед подстройкой фазы. Но в эту сторону я тоже подумаю, спасибо.
|
|
|
|
|
Mar 21 2013, 08:44
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 28-11-12
Из: Москва
Пользователь №: 74 605

|
Цитата(alexadmin @ Mar 21 2013, 08:30)  Ну и подспудно меня мучает, что для данного конкретного АЦП я могу калиброваться по встроенным паттернам, а вот что мне делать, если для какого-то другого АЦП (или просто высокоскоростного входного интерфейса) паттернов не окажется? В общем доберусь до осцилла, померяю реально возникающие задержки, буду думать. Похоже действительно придется калиброваться динамически... Вообще, я говорил о динамеческой компенсации линии клока от входной ножки до точки, где клок становится глобальным. Так как все остальное при правильной трассировки платы, по идее, компенсации не требует. На входе ПЛИС клок и данные симфазны. Данные АЦП защелкиваются прямо на входе ПЛИС. Значит остается неопределенным только путь клока от входной ножки до буфера глобального клока. А для компенсации этого пути никакие паттерны не нужны. нужен только сам клок. Идея там очень простая. Входной клок защелкивается во входном буфере глобальным клоком после плл. и вращением фазы плл добиваемся примерно равной вероятности появления 0 и 1. Если мы этого добиваемся, то наш глобальный клок по фазе совпадает с входным клоком АЦП. А данные АЦП защелкиваются клоком сдвинутым на 90 градусов от этого клока.
|
|
|
|
Сообщений в этой теме
alexadmin Плавает задержка то ли клоков то ли данных Mar 20 2013, 15:02 Bad0512 Цитата(crono @ Mar 20 2013, 22:33) Чем не... Mar 20 2013, 15:39  crono Цитата(Bad0512 @ Mar 20 2013, 19:39) На 2... Mar 20 2013, 15:54  alexadmin Цитата(Bad0512 @ Mar 20 2013, 19:39) Авто... Mar 21 2013, 11:15   dm.pogrebnoy Цитата(crono @ Mar 21 2013, 12:44) А для ... Mar 21 2013, 11:16   alexadmin Цитата(crono @ Mar 21 2013, 12:44) А для ... Mar 21 2013, 11:29    crono Цитата(alexadmin @ Mar 21 2013, 14:29) А ... Mar 21 2013, 13:58 TRILLER Ваш PLL запускается в то время, когда от АЦП идёт ... Mar 20 2013, 15:36 Torpeda Цитата(alexadmin @ Mar 20 2013, 19:02) И ... Mar 21 2013, 15:12 krux что-то имхо для 200 МГц DDR - делать динамическую ... Mar 21 2013, 19:42
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|