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

 
 
> Проблема приема данных Spartan-6 от АЦП
maxics
сообщение Nov 26 2013, 13:39
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Требуется принять поток данных в SPARTAN-6 с двухканальной АЦП LTC2195. Частота 100 МГц, режим DDR 4 lane, т.е данные в АЦП приходят с частотой 200 МГц по переднему и заднему фронту.
Прикрепленное изображение

Это второй релиз платы (разводка сильно не менялась). В первом релизе, потратив много времени, удалось подобрать смещение фазы DCO (такт с АЦП) с помощью DCM (PHASE_SHIFT).
В последнем релизе сделать это не удается. Видно искажение входного сигнала. Пытались подобрать фазу DCO, закреплять в PlanAhead, но безрезультатно. Бывает, что при определенном значении Phase Shift данные принимаются верно, но достаточно что-нибудь поменять в проекте, как все "уезжает". В чем может таиться ошибка? Как лучше организовать прием?
Файл с исходным кодом:
Прикрепленный файл  ADC2195_receiver.vhd ( 9.53 килобайт ) Кол-во скачиваний: 638
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mityan
сообщение Dec 20 2013, 13:01
Сообщение #2


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

Группа: Участник
Сообщений: 78
Регистрация: 5-07-11
Пользователь №: 66 068



Здравствуйте.
В ПЛИС новичок. Изучаю вопрос подключения АЦП к ПЛИС (V6) по LVDS.
Сигнал DCO+/- предполагается 448 МГц (не дотягивает до GTH).
FCO+/- - 64 МГц (т.е. 14 битов данных в режиме DDR по одному каналу).
Надо , видимо, принимать на IO Tile и делать преобразователь из последовательных данных в параллельные.

Нашел документ xapp1071_v6_adc_dac_lvds.pdf

там для сохранения временных соотношений между DCO, FCO и D предлагается схема с автоподстройкой временной задержки тактового сигнала согласно следующему рисунку (прикрепил)

А в документе ds152_DC_and_Switching_Characteristics для IODELAY
указан параметр T_IODELAY_CLK_MAX = 300 МГц (у меня speed grade -1).
Означает ли это, что ПЛИС с таким показателем скорости не подойдет для приема сигнала с указанной тактовой частотой (448 МГц)?

Спасибо.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Dec 22 2013, 05:01
Сообщение #3


Знающий
****

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



Цитата(Mityan @ Dec 20 2013, 20:01) *
Здравствуйте.
В ПЛИС новичок. Изучаю вопрос подключения АЦП к ПЛИС (V6) по LVDS.
Сигнал DCO+/- предполагается 448 МГц (не дотягивает до GTH).
FCO+/- - 64 МГц (т.е. 14 битов данных в режиме DDR по одному каналу).
Надо , видимо, принимать на IO Tile и делать преобразователь из последовательных данных в параллельные.

Нашел документ xapp1071_v6_adc_dac_lvds.pdf

там для сохранения временных соотношений между DCO, FCO и D предлагается схема с автоподстройкой временной задержки тактового сигнала согласно следующему рисунку (прикрепил)

А в документе ds152_DC_and_Switching_Characteristics для IODELAY
указан параметр T_IODELAY_CLK_MAX = 300 МГц (у меня speed grade -1).
Означает ли это, что ПЛИС с таким показателем скорости не подойдет для приема сигнала с указанной тактовой частотой (448 МГц)?

Спасибо.

Это немного другие 300МГц. Дело в том, что макросу IODELAY для работы ещё необходим блок упарвления IODELAY_CTRL, которому как раз для успешной работы нужны независимые клоки в районе 200МГц.
Ну а цифра 300 - это похоже верхний предел для этих клоков.

Go to the top of the page
 
+Quote Post
Mityan
сообщение Dec 22 2013, 18:31
Сообщение #4


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

Группа: Участник
Сообщений: 78
Регистрация: 5-07-11
Пользователь №: 66 068



Цитата(Bad0512 @ Dec 22 2013, 07:01) *
Это немного другие 300МГц. Дело в том, что макросу IODELAY для работы ещё необходим блок упарвления IODELAY_CTRL, которому как раз для успешной работы нужны независимые клоки в районе 200МГц.
Ну а цифра 300 - это похоже верхний предел для этих клоков.

То есть правильно ли я понимаю, что внутри IODELAY линия задержки с 32 отводами обеспечивает задержку входного сигнала от 1/64 до 1/2 периода опорной тактовой частоты?
Если я не могу завести на тактовый вход 448 непосредственно, как примере, то можно, разделив ее на 2 (в BUFR), завести 224 МГц и получить 32 отвода ЛЗ уже не на полпериода, а на целый период интересующей частоты 448 (от 1/32 до 1)?
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Dec 23 2013, 04:51
Сообщение #5


Знающий
****

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



Цитата(Mityan @ Dec 23 2013, 01:31) *
То есть правильно ли я понимаю, что внутри IODELAY линия задержки с 32 отводами обеспечивает задержку входного сигнала от 1/64 до 1/2 периода опорной тактовой частоты?
Если я не могу завести на тактовый вход 448 непосредственно, как примере, то можно, разделив ее на 2 (в BUFR), завести 224 МГц и получить 32 отвода ЛЗ уже не на полпериода, а на целый период интересующей частоты 448 (от 1/32 до 1)?

Не совсем правильно. Задержка , насколько я понял, фиксированная, то есть не зависит от частоты никак. Частота 200МГц нужна для каких-то внутренних дел (калибровок или чего-то ещё).
Почему вы не можете завести 448МГц напрямую в ПЛИС? Какую ПЛИС использовать планируете?
И какая АЦП у вас? Дело в том, что частота на DCO как правило в 2 раза ниже частоты сэмплирования, так как данные передаются по обоим фронтам (DDR).
Go to the top of the page
 
+Quote Post
Mityan
сообщение Dec 23 2013, 06:35
Сообщение #6


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

Группа: Участник
Сообщений: 78
Регистрация: 5-07-11
Пользователь №: 66 068



Цитата(Bad0512 @ Dec 23 2013, 06:51) *
Не совсем правильно. Задержка , насколько я понял, фиксированная, то есть не зависит от частоты никак. Частота 200МГц нужна для каких-то внутренних дел (калибровок или чего-то ещё).
Почему вы не можете завести 448МГц напрямую в ПЛИС? Какую ПЛИС использовать планируете?
И какая АЦП у вас? Дело в том, что частота на DCO как правило в 2 раза ниже частоты сэмплирования, так как данные передаются по обоим фронтам (DDR).

ПЛИС XC6VLX240T-1FFG1156.
Если я правильно понял, то эта схема на IODELAY нужна для компенсации доп. задержки, которую вносит BUFR. Конечно, поскольку временные диаграммы сигналов на выходе АЦП (а значит и на входе ПЛИС) как раз такие, как нужно, было бы идеально их завести через одинаковые буферы IBUFDS. Но поскольку DCO используется для тактирования преобразователя последовательных данных в параллельные, он должен быть подан в цепи тактирования (region clock) на специальные входы (clock capable). Через буфер. И вот тут-то временные соотношения и поплывут при высоких входных частотах. Верно? Или я чего-то недопонял?

В документе харр1071 (см. картинку выше) изображена именно обратная связь - выходной тактовый сигнал с BUFR заводится в блок IODELAY1 на опорный вход С. И задержка блока выражается именно в долях данного тактового (ниже привожу картинку из документа v6_DC_and_Switching_Characteristics).

Или мне нужно некий сторонний сигнал REF CLK обеспечить, и это должно быть либо 200 либо 300 МГц ровно?

По поводу АЦП, кстати, еще один вопрос. АЦП AD9257 - 8 каналов (1-wire), 14 бит, 65 МГц.
Приведенные 448 МГц, я уже писал выше, это именно в режиме DDR.
Преобразователь ISERDESE1 дает только 6 битов, каскадное включение возможно только двух примитивов, поэтому 14=(6+1)+(6+1) - итого 4. На 8 каналов это будет 8*4 + 1 в цепи DCO = 33 примитива ISERDESE1. Имеется ли в наличии столько в одном IOBank (для данной ПЛИС)? Или как это сформулировать - влезет ли? Учитывая, что примитивы все-таки универсальные, на все случаи жизни, что обуславливает их избыточность (в контексте моей задачи).

Сообщение отредактировал Mityan - Dec 23 2013, 06:42
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Dec 23 2013, 08:09
Сообщение #7


Знающий
****

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



Цитата(Mityan @ Dec 23 2013, 13:35) *
ПЛИС XC6VLX240T-1FFG1156.
Если я правильно понял, то эта схема на IODELAY нужна для компенсации доп. задержки, которую вносит BUFR. Конечно, поскольку временные диаграммы сигналов на выходе АЦП (а значит и на входе ПЛИС) как раз такие, как нужно, было бы идеально их завести через одинаковые буферы IBUFDS. Но поскольку DCO используется для тактирования преобразователя последовательных данных в параллельные, он должен быть подан в цепи тактирования (region clock) на специальные входы (clock capable). Через буфер. И вот тут-то временные соотношения и поплывут при высоких входных частотах. Верно? Или я чего-то недопонял?

В документе харр1071 (см. картинку выше) изображена именно обратная связь - выходной тактовый сигнал с BUFR заводится в блок IODELAY1 на опорный вход С. И задержка блока выражается именно в долях данного тактового (ниже привожу картинку из документа v6_DC_and_Switching_Characteristics).

Или мне нужно некий сторонний сигнал REF CLK обеспечить, и это должно быть либо 200 либо 300 МГц ровно?

По поводу АЦП, кстати, еще один вопрос. АЦП AD9257 - 8 каналов (1-wire), 14 бит, 65 МГц.
Приведенные 448 МГц, я уже писал выше, это именно в режиме DDR.
Преобразователь ISERDESE1 дает только 6 битов, каскадное включение возможно только двух примитивов, поэтому 14=(6+1)+(6+1) - итого 4. На 8 каналов это будет 8*4 + 1 в цепи DCO = 33 примитива ISERDESE1. Имеется ли в наличии столько в одном IOBank (для данной ПЛИС)? Или как это сформулировать - влезет ли? Учитывая, что примитивы все-таки универсальные, на все случаи жизни, что обуславливает их избыточность (в контексте моей задачи).

Если задержка возникает именно в клоковой цепи, то логично было бы её компенсировать добавлением доп. задержки в канал данных, т.е. добавить IODELAY в data lane. Хотя возможно и предложенная в XAPP схема тоже работает. Тут ещё многое зависит от качества разводки вашей платы. Если все дифф. пары на плате у вас выровнены по длине, то достаточно порулить задержкой по клоку для нахождения устойчивого состояния приёма данных (абсолютная фаза тут не очень важна - задержка на целое число бит далее скомпенсируется логикой подстройки по фрейму).
В принципе в вашем случае чем выше частота на клоках IODELAY тем лучше разрешение по времени задержки.
Десериализатор вам нужен только один на каждый канал данных. Достаточно режима 1:4, весь дальнейший демультиплекс данных и выравнивание по фрейму можно делать на частоте 224МГц. Для frame adjustment также можно пользовать bitslip логику десериализаторов.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- maxics   Проблема приема данных Spartan-6 от АЦП   Nov 26 2013, 13:39
- - TRILLER   А вы входные триггеры в "лапы" поместили...   Nov 26 2013, 13:59
|- - maxics   Цитата(TRILLER @ Nov 26 2013, 16:59) А вы...   Nov 26 2013, 14:21
|- - Maverick   Цитата(maxics @ Nov 26 2013, 16:21) Что е...   Nov 26 2013, 14:33
||- - elzaro   Цитата(Maverick @ Nov 26 2013, 17:33) лап...   Nov 26 2013, 16:27
|- - o_khavin   Цитата(maxics @ Nov 26 2013, 18:21) Что е...   Nov 26 2013, 16:35
|- - maxics   Сделал все как было написано выше. Такт пускаю чер...   Dec 6 2013, 06:33
|- - o_khavin   Цитата(maxics @ Dec 6 2013, 10:33) Сделал...   Dec 8 2013, 08:43
|- - XVR   Цитата(o_khavin @ Dec 8 2013, 12:43) А на...   Dec 8 2013, 14:00
|- - o_khavin   Цитата(XVR @ Dec 8 2013, 18:00) Смотрел, ...   Dec 8 2013, 15:20
|- - XVR   Цитата(o_khavin @ Dec 8 2013, 19:20) Во п...   Dec 9 2013, 09:44
|- - o_khavin   Цитата(XVR @ Dec 9 2013, 13:44) Пока ТС н...   Dec 10 2013, 19:56
- - dmitry-tomsk   Цитата(maxics @ Nov 26 2013, 16:39) Требу...   Nov 26 2013, 14:07
- - Bad0512   Цитата(maxics @ Nov 26 2013, 20:39) Требу...   Nov 26 2013, 16:34
- - XVR   Судя по этим строкам в отчете - ЦитатаData Path De...   Dec 6 2013, 09:48
- - TRILLER   Извините, со спартанами не работал, но.. каким обр...   Dec 9 2013, 10:19
|- - maxics   Между IDDR2 и данными никакой доп. логики нет. Это...   Dec 11 2013, 10:27
- - TRILLER   Хм.. А в обратной связи, значит, оставили? Может п...   Dec 12 2013, 06:20
|- - Timmy   Цитата(Mityan @ Dec 23 2013, 10:35) По по...   Dec 23 2013, 07:22
- - Mityan   Большое спасибо за идею по поводу понижения тактов...   Dec 23 2013, 13:24
- - Mityan   Нашел еще один несколько похожий документ - харр88...   Dec 24 2013, 09:32


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:22
Рейтинг@Mail.ru


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