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

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


Знающий
****

Группа: Свой
Сообщений: 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?

Если есть еще какие документы которые следует почитать по теме?


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BlackOps
сообщение Dec 29 2011, 06:30
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 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 нс... соответственно по этому критерию и задаю констрейны, так в чем же может быть дело?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
Timmy
сообщение Dec 30 2011, 06:49
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 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:Вы меня запутали своими констрейнамиsm.gif. Вам же 200МГц DDR надо, это должно получиться.

Что касается топологии - посмотрите картинку 1-18 в документе "spartan 6 FPGA clocking resources", я думаю, надо сделать всё как на ней, только использовать DLL c выходами CLK90 и CLK270 вместо PLL.

Сообщение отредактировал Timmy - Dec 30 2011, 09:08
Go to the top of the page
 
+Quote Post
MishaN
сообщение Jun 5 2012, 16:16
Сообщение #4


Участник
*

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



Цитата(Timmy @ Dec 30 2011, 10:49) *
На 400МГц DDR только Virtex, может быть, сможет принимать данные. А spartan 6 только с автокалибровкой, которая в данном случае работать не будет, так как на некоторых линиях данных сигнал может подолгу не меняться. Правда, если есть возможность периодически переключать АЦП в тестовый режим, то можно и откалиброваться.
Из лоукостеров по-моему только Lattice ECP2/ECP3 могут нормально ловить 400МГц. Зато у них нет внутренних терминаторов.

UPD:Вы меня запутали своими констрейнамиsm.gif. Вам же 200МГц DDR надо, это должно получиться.

Что касается топологии - посмотрите картинку 1-18 в документе "spartan 6 FPGA clocking resources", я думаю, надо сделать всё как на ней, только использовать DLL c выходами CLK90 и CLK270 вместо PLL.


Сейчас еще ECP4.
Внутренние терминаторы LVDS? если да - то есть
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:01
Рейтинг@Mail.ru


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