Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Spartan-6 и АЦП 210MSPS.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Voloh
Всем привет.
Необходимо использовать АЦП на 210МГц вместе со Spartan-6. Выбор пал на AD9613-210.
DS: http://www.analog.com/static/imported-file...eets/AD9613.pdf
Мне не понятны параметры времянок(

Data Propagation Delay (tPD) 4.8 ns
DCO Propagation Delay (tDCO) 5.5 ns
DCO to Data Skew (tSKEW) 0.3 ... 0.7 ... 1.1 ns

Чтобы АЦП подходило по времянкам, я должен видеть, что окно валидных данных на выходе АЦП больше, чем Tsetup + Thold на входе ПЛИС. Не забываем также и про всевозможные джиттеры.
А какое оно, это окно? Допустим, данные станут валидными за 1.1ns (либо за 0.3ns) до переключения сопровождающего их клока. Но здесь не указано через сколько ns после фронта данные перестанут быть валидны и начнут переключаться на следующее слово.

Смотрел Техасовские АЦП. У них иная система параметров - указываются выходные Tsetup и Thold, которые обеспечивает микросхема относительно фронта своего клока.
А тут вот непонятно..

И второй вопрос:
Какой запас по сетапу и холду на входе ПЛИС необходимо иметь, чтобы был гарантированный прием от АЦП. +/- 10% от периода достаточно?
Hoodwin
Действительно, немного загадочное описание. Я думаю, что tSKEW - по своему определению и является Tsetup? поскольку отсчитывается от момента установления данных до момента фиксации тактового перепада. При этом само это время много меньше периода тактирования: 700 пс (типовое значение) против 4800 пс. Само по себе окно данных в даташите не указали, но это, видимо, потому, что о нем можно говорить только после уточнения параметров принимающей стороны: емкостей, импедансов и т.п. Но даже если подходить пессимистически, посчитав окно данных равным трети периода, то 4800 / 3 ~= 1600 пс. Из чего вытекает, что Thold = 500...1300 пс. И этого вполне достаточно для ПЛИС.
VladimirB
Цитата(Voloh @ Jan 19 2012, 18:41) *
Всем привет.
Необходимо использовать АЦП на 210МГц вместе со Spartan-6. Выбор пал на AD9613-210.
DS: http://www.analog.com/static/imported-file...eets/AD9613.pdf
Мне не понятны параметры времянок...

АЦП всего на 210 МГц, а вы сетапы и холды считаете. Проблемы если и будут - то уж никак не во входных цепях(сердезах) - тут у спартана6 всё просто супер - почти как у виртекса (циклоны курят в сторонке).
Вот люди, например, гравицапу на 2.1ГГц к спартану приделали и радуются:
http://www.mvd-fpga.com/cores/en/up_converter_overview.html

А вот разгонится ли дальнейшая ваша система обработки на 210МГц в спартане - вот это вопрос - тут нужно и прикидочный проектик накатать и PlahAhead в руках покрутить и подумать.

P.S. конечно можно специально разработать печатную плату так, что разброс длин дорожек от АЦП к ПЛИС будет полметра - тогда возникнут проблемы и данные съедут на полпериода тактовой.

P.S2. Ну и как всегда у аналоговых девиц имеется волшебный SPI, который "Allows the user to vary the DCO delay".
Timmy
Цитата(Voloh @ Jan 19 2012, 18:41) *
Data Propagation Delay (tPD) 4.8 ns
DCO Propagation Delay (tDCO) 5.5 ns
DCO to Data Skew (tSKEW) 0.3 ... 0.7 ... 1.1 ns

Чтобы АЦП подходило по времянкам, я должен видеть, что окно валидных данных на выходе АЦП больше, чем Tsetup + Thold на входе ПЛИС. Не забываем также и про всевозможные джиттеры.

Тут всё понятно - данные типично задерживаются относительно входного клока АЦП на 4.8, а DCO на 5.5, то есть DCO отстаёт. tSKEW показывает диапазон отставания DCO от данных. В более привычных терминах можно сказать, что tSETUP_min(гарантированное время выставления данных до фронта DCO) составляет 0.3ns, а tHOLD_min(гарантированное время удержания данных после фронта DCO) составляет минимальную половину периода минус 1.1ns , на частоте 200МГц это 2.5ns-???-1.1ns=>1.4ns - ???. На сколько полупериод может получиться короче, чем 2.5ns из-за нестабильности клока - вопрос. Не забываем, что там два параллельных АЦП, поэтому канал 200МГц DDR. Уложиться в такое окно на Spartan 6 достаточно сложно, так как не получится задействовать автокалибровку задержки данных, поскольку не гарантируется регулярное переключение сигнала на всех линиях с АЦП между 0 и 1.

И недавно уже поднимался вопрос по констрейнам spartan-6 + ADC, поищите.
VladimirB
Цитата(Timmy @ Jan 21 2012, 01:02) *
...Уложиться в такое окно на Spartan 6 достаточно сложно...

Откуда возьмётся нестабильность клока, если клок идёт с АЦП?
Не забываем про BUFIO2 в Спартане и про возможность варьировать DCO delay АЦП в пределах 0-3.3нс
BlackOps
В спартан6 например ести примитива ИДДР2, это флип-флоп работающий в режиме ДДР. Ставите ПЛЛ, регенерируете клоки входные, подаете эти клоки на ИДДР2 (или аналогичную примитиву в виртексе), задаете равнение по первому или второму клоку, а дальше тот клок по которому задано равнение подключаете к памяти итд.

Прикрепляю картинку для наглядности.

clk_p и clk_n это клоки поступающие от АЦП, затем первая строка это данные поступающие на 0.5нс раньше, вторая строка если они поступают на 0.5нс позже, третья строка это промежуток времени который включает в себя верные данные вне зависимости от максимальной задержки.

ПЛЛ генерирует смещенные клоки C0 и C1, для захвата данных. C0 и C1 подаются на ИДДР2 как и сами данные (первое слово и второе).

красное поле это промежуток полученный из Даташит Репорт, вобщем он должен быть короче чем зеленый промежуток (валид дата как вы назвали), это означает что ФПГА осиливает АЦП данной скорости.

желтая линия показывает смещение относительно референс клока для того чтобы правильно задать констрейны. Констрейны чтобы правильно задать нужно сгруппировать клоки C0 и C1 и указать смещение их пиков относительно clk_p. А вот сами констрейны:

NET "adc1_clk_p" TNM_NET = "adc1_clk_p";
TIMESPEC TS_adc1_clk_p = PERIOD "adc1_clk_p" 5 ns HIGH 50 %;

NET "adc1_data*" TNM = "IN_DDR";

NET "C0" TNM_NET = "clk0_grp";
NET "C1" TNM_NET = "clk180_grp";
TIMEGRP "IN_DDR" OFFSET = IN -500 ps VALID 1500 ps BEFORE "adc1_clk_p" TIMEGRP "clk0_grp";
TIMEGRP "IN_DDR" OFFSET = IN -3000 ps VALID 1500 ps BEFORE "adc1_clk_p" TIMEGRP "clk180_grp";



Теперь обраите внимание на следующих отрывок из Даташит Репорт:
Data Sheet report:
-----------------
All values displayed in nanoseconds (ns)

Setup/Hold to clock adc1_clk_p
------------+------------+------------+------------+------------+------------------+--------+
|Max Setup to| Process |Max Hold to | Process | | Clock |
Source | clk (edge) | Corner | clk (edge) | Corner |Internal Clock(s) | Phase |
------------+------------+------------+------------+------------+------------------+--------+
adc1_data_n | -0.515®| SLOW | 1.831®| FAST |C0 | 1.250|
| -3.010®| SLOW | 4.257®| FAST |C1 | 3.750|
adc1_data_p | -0.516®| SLOW | 1.831®| FAST |C0 | 1.250|
| -3.011®| SLOW | 4.257®| FAST |C1 | 3.750|
------------+------------+------------+------------+------------+------------------+--------+


Из этого даташит репорта можно определить требование Setup/Hold, и то каким образом ИСЕ сгенерирует Слэки:

1.250ns - 0.515ns = 0.735ns Setup time, поэтому Setup Slack для группы "C0" укасзан как: 0.75ns-0.735ns = 0.015ns

1.831ns - 1.250ns = 0.581ns Hold time, поэтому Hold Slack для группы "C0" указан как: 0.75ns-0.581ns = 0.169ns



3.750ns - 3.010ns = 0.740ns Setup time, поэтому Setup Slack для группы "C1" указан как: 0.75ns-0.740ns = 0.010ns

4.257ns - 3.750ns = 0.507ns Hold time, поэтому Hold Slack для группы "C1" указан как: 0.75ns-0.507ns = 0.243ns


Исходя из выделенных цифр и составлена красное поле на диаграмме.


Я вижу у вас АЦП немного другой, но если принцип уже ясен то разобратся можно очень быстро.


А с варьированием Delay думаю не стоит вообще связыватся.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.