|
Каким методом лучше захватывать данные АЦП в Spartan 6?, Режим DDR, Различные реализации и способы симуляции проекта |
|
|
|
Dec 23 2011, 05:50
|

Знающий
   
Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121

|
Есть проект в разработке, где планируется использовать АЦП, брать с него данные, ну и алгоритм над ними работает и выдает результат. Пока различные компоненты проекта гоняю в Behavioral симуляции. Но по мере завершения планирую уже проводить Post-Route симуляцию с более подробным тайминг анализом и констрейнами. В зависимости от выбора функционала финального изделия планируется использовать различные АЦП, поэтому какой именно пока незнаю. Но предположим будет использоватся некий АЦП скажем в 400MSPS размером в 14бит, и передающий данные дифф. парой. Я думаю реализовать симуляцию этого проекта в тестбенче в режиме post-route, а данные считывать с жесткого диска (сейчас я почти тоже самое делаю, тока в Behavioral режиме и без всякой эмуляции дифф. пары). Смотрю сейчас книжку предложенную Boris_TS в предыдущем посте, а также читаю документ харр1064 Source-Synchronous Serialization and Deserialization (up to 1050 Mb/s) от Хилых, где рассказывается как получать данные в режиме DDR используя PLL, DCM итд. Но потом наткнулся вот на этот пост в онлайне: http://e2e.ti.com/support/data_converters/...68/t/47555.aspxгде работник Texas Instruments рассказывает мол то что написано в документе хилых харр1064 это слишком комплексно и сложно синхронизуемо, и что он реализовал принятие данных в режиме DDR по другому, ниже он приводит блок диаграмму как это сделал он, в его случае все вроде как проще, и используются IDDR2 и различные элементы задержки. кто что может по этому поводу сказать? По какому пути лучше пойти? И как лучше реализовать чтение данных от АЦП (различной скорости) в режиме DDR? Если есть еще какие документы которые следует почитать по теме?
--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
|
|
|
|
|
 |
Ответов
|
Dec 29 2011, 06:30
|

Знающий
   
Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121

|
Вобщем решил я попробовать так, подать просто данные на флоп с клоком входным, и вписать констрейны, прикрепляю диаграмму. а вот мои констрейны: NET "adc1_clk" TNM_NET = "adc1_clk"; TIMESPEC TS_adc1_clk = PERIOD "adc1_clk" 2.5 ns HIGH 50 %;
NET "adc1_data*" TNM = "IN_DDR";
TIMEGRP ddr_in_rising = RISING "adc1_clk"; TIMEGRP ddr_in_falling = FALLING "adc1_clk";
TIMEGRP "IN_DDR" OFFSET = IN -500 ps VALID 250 ps BEFORE "adc1_clk" TIMEGRP "ddr_in_rising"; TIMEGRP "IN_DDR" OFFSET = IN -750 ps VALID 250 ps BEFORE "adc1_clk" TIMEGRP "ddr_in_falling";Выдает вот что: Paths for end point IDDR2_inst (ILOGIC_X1Y175.D), 2 paths -------------------------------------------------------------------------------- Slack (hold path): -1.718ns (requirement - (clock path + clock arrival + uncertainty - data path)) Source: adc1_data (PAD) Destination: IDDR2_inst (FF) Destination Clock: C0 rising at 0.000ns Requirement: 0.750ns Data Path Delay: 2.031ns (Levels of Logic = 2)(Component delays alone exceeds constraint) Clock Path Delay: 4.474ns (Levels of Logic = 2) Clock Uncertainty: 0.025ns
Paths for end point IDDR2_inst (ILOGIC_X1Y175.D), 2 paths -------------------------------------------------------------------------------- Slack (hold path): -2.714ns (requirement - (clock path + clock arrival + uncertainty - data path)) Source: adc1_data (PAD) Destination: IDDR2_inst (FF) Destination Clock: C0 falling at 1.250ns Requirement: 1.000ns Data Path Delay: 2.031ns (Levels of Logic = 2)(Component delays alone exceeds constraint) Clock Path Delay: 4.470ns (Levels of Logic = 2) Clock Uncertainty: 0.025ns Ведь вроде как правильно констрейны задаю, период входного клока 2.5 нс, данные каждые 1.25 нс, +/- 0.5 нс... соответственно по этому критерию и задаю констрейны, так в чем же может быть дело?
Эскизы прикрепленных изображений
--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
|
|
|
|
|
Dec 30 2011, 06:49
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(BlackOps @ Dec 29 2011, 10:30)  Ведь вроде как правильно констрейны задаю, период входного клока 2.5 нс, данные каждые 1.25 нс, +/- 0.5 нс... соответственно по этому критерию и задаю констрейны, так в чем же может быть дело? На 400МГц DDR только Virtex, может быть, сможет принимать данные. А spartan 6 только с автокалибровкой, которая в данном случае работать не будет, так как на некоторых линиях данных сигнал может подолгу не меняться. Правда, если есть возможность периодически переключать АЦП в тестовый режим, то можно и откалиброваться. Из лоукостеров по-моему только Lattice ECP2/ECP3 могут нормально ловить 400МГц. Зато у них нет внутренних терминаторов. UPD:Вы меня запутали своими констрейнами  . Вам же 200МГц DDR надо, это должно получиться. Что касается топологии - посмотрите картинку 1-18 в документе "spartan 6 FPGA clocking resources", я думаю, надо сделать всё как на ней, только использовать DLL c выходами CLK90 и CLK270 вместо PLL.
Сообщение отредактировал Timmy - Dec 30 2011, 09:08
|
|
|
|
|
Jun 5 2012, 16:16
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 2-06-12
Из: Минск
Пользователь №: 72 138

|
Цитата(Timmy @ Dec 30 2011, 10:49)  На 400МГц DDR только Virtex, может быть, сможет принимать данные. А spartan 6 только с автокалибровкой, которая в данном случае работать не будет, так как на некоторых линиях данных сигнал может подолгу не меняться. Правда, если есть возможность периодически переключать АЦП в тестовый режим, то можно и откалиброваться. Из лоукостеров по-моему только Lattice ECP2/ECP3 могут нормально ловить 400МГц. Зато у них нет внутренних терминаторов. UPD:Вы меня запутали своими констрейнами  . Вам же 200МГц DDR надо, это должно получиться. Что касается топологии - посмотрите картинку 1-18 в документе "spartan 6 FPGA clocking resources", я думаю, надо сделать всё как на ней, только использовать DLL c выходами CLK90 и CLK270 вместо PLL. Сейчас еще ECP4. Внутренние терминаторы LVDS? если да - то есть
|
|
|
|
Сообщений в этой теме
BlackOps Каким методом лучше захватывать данные АЦП в Spartan 6? Dec 23 2011, 05:50 disel Цитата(BlackOps @ Dec 23 2011, 08:50) Ест... Dec 23 2011, 06:20 Костян Достаточно след.
1. Входной триггер DDR для данн... Dec 23 2011, 07:08 disel Положение данных относительно клока у разных ацп м... Dec 23 2011, 07:42 Костян QUOTE (disel @ Dec 23 2011, 06:42) Положе... Dec 26 2011, 11:34  disel Цитата(Костян @ Dec 26 2011, 14:34) как п... Dec 30 2011, 07:34 BlackOps Я думаю об АЦП ADS5474, вот его даташит: http://ww... Dec 28 2011, 17:05 BlackOps Прошу прощения, с линком на даташит перепутал.
ча... Jan 4 2012, 04:02 Timmy Цитата(BlackOps @ Jan 4 2012, 08:02) TIME... Jan 9 2012, 13:14 Алга Есть проекты (design package) с полной документаци... Jan 9 2012, 09:10 Алга "..Смотрю сейчас книжку предложенную Boris_TS... Jan 9 2012, 11:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|