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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Приём данных в ПЛИС по внешнему клоку, Методы и подходы.
dxp
сообщение Jun 19 2014, 06:44
Сообщение #1


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Всем привет!

Возможно, тема уже обсуждалась в том или ином виде, но я не заметил, хотя форум читаю регулярно. Поэтому предлагается обсуждение.

Вопрос, собственно, вот в чём. Дано: ПЛИС и некое внешнее цифровое устройство, с которым ПЛИС обменивается данными, причём в этом обмене клок идёт с внешнего устройства на ПЛИС. Соответственно, на ПЛИС нужно принять поток, имея устойчивую синхронизацию, не зависящую от таких факторов, как изменение температуры, зависимость от конкретного образца/партии микросхем и т.п.

Если клок внешнего устройства относительно низкочастотен по отношению к внутреннему клоку ПЛИС, то ситуация выглядит простой: пропускаем все входные сигналы, включая клок внешнего устройства, через синхронизаторы и работаем с полученными внутренними сигналами обычным образом.

Но если клок внешнего устройства соизмерим или больше внутреннего клока ПЛИС, тут остаётся один путь - заводить внешний клок внутрь, организовывать для него клоковый домен, в котором принимать данные (которые потом внутри можно отдавать в другие клоковые домены, например, через двухклоковое FIFO). Вот тут и возникает самый интересный вопрос: как организовать внутренний клок, синхронный с внешним для уверенного приёма данных. Насколько мне известно, существует два подхода.

  1. Подача внешнего клока на I/O пин ПЛИС с дальнейшей трассировкой на глобальный клок, которым и тактировать приём данных.
  2. Подача внешнего клока на специальный пин ПЛИС, который ведёт на вход ФАПЧ, включаемой в режиме zero-compensation (в терминах Altera).

В первом случае необходимо добиться, чтобы клок, пройдя через внутренние трассировочные ресурсы ПЛИС, был приемлемо сфазирован по отношению к данным. Видел, что этого добиваются введением констрейнов задержки (set_delay). Вопрос: неужто этот способ даёт возможность добиться в различных условиях (климатика, зависимость от экземпляра и т.д.) согласованности между полученным указанным образом внутренним клоком и внешними данными, чтобы их (данные), например, можно было безопасно и надёжно захватывать прямо во входных триггерах I/O элементов ПЛИС?

Во втором случае, вроде, теоретически всё хорошо - все пути являются, что называется, dedicated, синтезатор и ПЛИС обеспечивают надёжную организацию согласования клока и данных. Интересует реальный опыт - кто так делал и каков результат? Какие частоты реально использовались?

В общем, интересует любая информация по обозначенной теме: теория, практические достижения и т.д. Практический опыт особенно интересен, как в плане подхода, так и в нюансах. Конкретные примеры тоже в кассу: какие ПЛИС, какие внешние устройства использовались?



--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jun 19 2014, 07:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(dxp @ Jun 19 2014, 10:44) *
В общем, интересует любая информация по обозначенной теме: теория, практические достижения и т.д. Практический опыт особенно интересен, как в плане подхода, так и в нюансах. Конкретные примеры тоже в кассу: какие ПЛИС, какие внешние устройства использовались?

Теория: AN433.
Практика: SLAA545.
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Jun 19 2014, 07:27
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Цитата(dxp @ Jun 19 2014, 10:44) *
...Но если клок внешнего устройства соизмерим или больше внутреннего клока ПЛИС...


Ну если данные шпарят на 1 Ггц и необходимо их принять в ПЛИС и обработать, и всё это обычные пины - то никак. Но ведь PCIe, SRIO, Ethernet и прочее как-то работают!

Цитата(dxp @ Jun 19 2014, 10:44) *
Во втором случае, вроде, теоретически всё хорошо - все пути являются, что называется, dedicated, синтезатор и ПЛИС обеспечивают надёжную организацию согласования клока и данных. Интересует реальный опыт - кто так делал и каков результат? Какие частоты реально использовались?


Ответ зависит от типа ПЛИС и той частоты, которыю ПЛИС поддерживает. Положительный опыт - до 300 Мгц. Бывает и больше, но надо изголяться. Обычно самое трудное - обеспечить на выводах ПЛИС синхронность входных данных с опорной частотой на всём климатическом диапазоне! Вот где танцы начинаются! А внутри ПЛИС надо вытянуть частоту и радоваться жизни для второго случая.


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 19 2014, 08:13
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(dxp @ Jun 19 2014, 13:44) *
В первом случае необходимо добиться, чтобы клок, пройдя через внутренние трассировочные ресурсы ПЛИС, был приемлемо сфазирован по отношению к данным. Видел, что этого добиваются введением констрейнов задержки (set_delay). Вопрос: неужто этот способ даёт возможность добиться в различных условиях (климатика, зависимость от экземпляра и т.д.) согласованности между полученным указанным образом внутренним клоком и внешними данными, чтобы их (данные), например, можно было безопасно и надёжно захватывать прямо во входных триггерах I/O элементов ПЛИС?

а вы умнее поступите, сделайте региональный клок, на котором хлопает пара регистров, а потом на остальную логику, работающую от ФАПЧ. Если входной поток нормально сфазирован относительно клока, то там норм все будет. Но при желании можно автомат калибровки сделать и периодически подруливать задержками в падах на лету.


--------------------
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 19 2014, 08:13
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Делал по обоим путям. Первый раз схему развели не верно потому завели на обычную ножку

50 МГц данные на 100 МГц клок, Спартан 6 от ксалинкс. В первом случае были здоровые задержки пока шли данные от ноги до клокового буфера, пришлось описать констрайны сетап и холд, и перейти с выставления данных по падающему фронту и приема по восходящему на работу по одному фронту, то есть данные ставились по восходящему для этого пришлось сделать мультиплексор, то есть первый бит стоял сразу из данных, а по первому клоку переключался на сдвиговый регистр, который уже спокойно ехал.

по данным разводки полностью забитая ПЛИС с 2 такими интерфейсами дала 8 нС и 12 нС на сетап данных, то есть можно получить SPI до 125 и 83 МГц.

По второму пути все гораздо оптимистичнее, и сейчас в забитой ПЛИС равезлось на 6-7 нС, то есть частоты вше плисовых. На пустой было выше.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 19 2014, 10:20
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Stratix II (EP2S30) + ADS6445 (2-Wire Interface 16xSerialization, тактовая для АЦП 61.44 MHz, скорость передачи данных по линии 491.52 Mbit/s). Тактовый сигнал от АЦП заводится на Global Clock -> PLL.
Cyclone V (5CGXFC9E6) + ADS5263 (тактовая для АЦП 61.44 MHz - скорость передачи данных по линии 491.52 Mbit/s, 100 MHz - скорость передачи данных по линии 800 Mbit/s). Тактовый сигнал от АЦП заводится на Global Clock -> PLL.
Если рассматривать АЦП от TI, то клок от АЦП заводится на ногу FPGA, которая поддерживает подключение его к PLL.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Jun 19 2014, 11:26
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Могу поделиться личным фэйлом: пытался ходить первым путем с альтерой (циклон/ария). Ничерта не вышло. Временной анализ проходит успешно (сколько я времени на это положил...), но на практике не работает, даже жалкие 200 МГц (400 MSPS). В итоге использовал схему с кручением фазы принимающего клока либо задержек в пинах с предварительной калибровкой.
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 19 2014, 12:39
Сообщение #8


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(alexadmin @ Jun 19 2014, 19:26) *
Могу поделиться личным фэйлом: пытался ходить первым путем с альтерой (циклон/ария). Ничерта не вышло. Временной анализ проходит успешно (сколько я времени на это положил...), но на практике не работает

а фазировка данных к входному клоку не плыла случайно ? хотя бы просто пытались увидеть ее и измерить ?


--------------------
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 19 2014, 12:49
Сообщение #9


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Спасибо всем за дельные ответы!

QUOTE (blackfin @ Jun 19 2014, 14:17) *
Теория: AN433.
Практика: SLAA545.

Спасибо, изучаю второй документ, первый видел.

QUOTE (warrior-2001 @ Jun 19 2014, 14:27) *
Ответ зависит от типа ПЛИС и той частоты, которыю ПЛИС поддерживает. Положительный опыт - до 300 Мгц.

До 300 МГц - это приём на логике (без спец аппаратуры типа аппаратных десериалайзеров)?

QUOTE (warrior-2001 @ Jun 19 2014, 14:27) *
Бывает и больше, но надо изголяться. Обычно самое трудное - обеспечить на выводах ПЛИС синхронность входных данных с опорной частотой на всём климатическом диапазоне! Вот где танцы начинаются!

Во-от, именно этот момент меня больше всего интересует и смущает.

QUOTE (warrior-2001 @ Jun 19 2014, 14:27) *
А внутри ПЛИС надо вытянуть частоту и радоваться жизни для второго случая.



QUOTE (des00 @ Jun 19 2014, 15:13) *
а вы умнее поступите, сделайте региональный клок, на котором хлопает пара регистров, а потом на остальную логику, работающую от ФАПЧ. Если входной поток нормально сфазирован относительно клока, то там норм все будет. Но при желании можно автомат калибровки сделать и периодически подруливать задержками в падах на лету.

А чем это лучше, чем вариант два (с генерацией клока на ФАПЧ с компенсацией задержки)? Тем, что внешний клок не надо подавать на специальный (dedicated) пин?

QUOTE (doom13 @ Jun 19 2014, 17:20) *
Stratix II (EP2S30) + ADS6445 (2-Wire Interface 16xSerialization, тактовая для АЦП 61.44 MHz, скорость передачи данных по линии 491.52 Mbit/s). Тактовый сигнал от АЦП заводится на Global Clock -> PLL.
Cyclone V (5CGXFC9E6) + ADS5263 (тактовая для АЦП 61.44 MHz - скорость передачи данных по линии 491.52 Mbit/s, 100 MHz - скорость передачи данных по линии 800 Mbit/s). Тактовый сигнал от АЦП заводится на Global Clock -> PLL.
Если рассматривать АЦП от TI, то клок от АЦП заводится на ногу FPGA, которая поддерживает подключение его к PLL.

Циклончик пятый, я понял, с аппаратным десериалайзером, у которого есть своя ФАПЧ, обеспечвающая корректный внутренний клок?
А на стратиксе втором завели по второму варианту и принимали поток на логике? Неужто сия уже довольно древняя ПЛИС успевает щёлкать на частоте под полгига?

QUOTE (alexadmin @ Jun 19 2014, 18:26) *
Могу поделиться личным фэйлом: пытался ходить первым путем с альтерой (циклон/ария). Ничерта не вышло. Временной анализ проходит успешно (сколько я времени на это положил...), но на практике не работает, даже жалкие 200 МГц (400 MSPS). В итоге использовал схему с кручением фазы принимающего клока либо задержек в пинах с предварительной калибровкой.

Как я вижу, для более-менее ВЧ сигналов реальный путь - через ФАПЧ с компенсацией задержки. Осталось понять, где начинается это ВЧ в каждом конкретном случае. Вот например, есть у нас кит от терасика на третьем стратиксе, к нему есть примочка (платка) с GbE трансиверами (два штуки там стоит 88Е1111), с трансивера идёт клок RXD_CLK 125 МГц и заводится на обычную ножку ПЛИС, не на специальную. И в sdc файле прописан констрейн про задержку. Всё. Вот и интересно, то ли 125 МГц - это для этой ПЛИС не частота, но будет ли это так же хорошо, скажем, на циклоне 4, то ли, исходя из того, что это кит и работает он на столе, климатики, в общем, никакой почти нет, и на столе всё работает хорошо, будет ли так же хорошо, если понизить температуру до -40? И из чего исходить в каждом случае при оценке, годится ввод клока непосредственно или нужно его фапчевать? Ведь критериев оценки как-то с ходу не просматривается.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jun 19 2014, 13:21
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(dxp @ Jun 19 2014, 16:49) *
А на стратиксе втором завели по второму варианту и принимали поток на логике? Неужто сия уже довольно древняя ПЛИС успевает щёлкать на частоте под полгига?

Так на втором стратиксе вроде как до 550 МГц с помощью ALTDDIO получали: Source Synchronous Interfaces between Altera FPGAs.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Jun 19 2014, 13:23
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(des00 @ Jun 19 2014, 16:39) *
а фазировка данных к входному клоку не плыла случайно ? хотя бы просто пытались увидеть ее и измерить ?


Не. Клок был прямо от АЦП, сопровождающий данные.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 19 2014, 13:24
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(dxp @ Jun 19 2014, 15:49) *
Циклончик пятый, я понял, с аппаратным десериалайзером, у которого есть своя ФАПЧ, обеспечвающая корректный внутренний клок?

Да, так и есть.
Цитата(dxp @ Jun 19 2014, 15:49) *
А на стратиксе втором завели по второму варианту и принимали поток на логике? Неужто сия уже довольно древняя ПЛИС успевает щёлкать на частоте под полгига?

У второго стратикса тоже есть встроенные SERDES блоки, они и ипользовались. Изначально клок был заведён на "неклоковый" пин и была попытка создать свой десериалайзер на логике, но он потянул тактовую АЦП где-то 20 МГц (160 Mbps на линии). Благо, плата была разведена таким образом (светодиоды висели на пинах подключённых к Global Clock sm.gif ), что позволило перебросить тактовую на "клоковый" пин и использовать SERDES с PLL.
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 19 2014, 13:43
Сообщение #13


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(alexadmin @ Jun 19 2014, 20:23) *
Не. Клок был прямо от АЦП, сопровождающий данные.

я не про это, вы осцилом не пробовали посмотреть что там на самом деле ? Это я к тому, что констрейны они же рассчитываются под определенные соотношения входных сигналов и если они не те, то рассчет будет не корректный. В моей практике такое было, пока осцилом не увидел что в даташите приведены другие данные тоже была такая ситуация.

Цитата(dxp @ Jun 19 2014, 19:49) *
А чем это лучше, чем вариант два (с генерацией клока на ФАПЧ с компенсацией задержки)? Тем, что внешний клок не надо подавать на специальный (dedicated) пин?

тем что клок проходит путь через пины аналогичный данным и задержки плывут одинакого.


--------------------
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Jun 20 2014, 04:47
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



300 МГц у меня было на логике в режиме ddr.

На самом деле для 4 и 5 поколения альтеры 250-300 МГц на логике и частота на ножку pll - и всё будет работать при условии вытягивания всех ограничений. Если же надо больше - либо бубен эксклюзивный в каждом случае и никакого реюза, либо использовать известные высокоскоростные средства.

А можно узнать, что за необходимость такая использовать большие частоты на обычную логику ПЛИС?


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jun 20 2014, 06:51
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



У меня ситуация была не та, которая важна dxp, но может кому будет интересно...
Занимался недавно прототипированием объемных устройств - более 10 стратикс4 самых жирных и там приходилось перетягивать просто огромное кол-во сигналов с одной плис на другую - больше 1000. Работала вся логика на медленной частоте от одного генератора, но т.к. требовалась передача больших объемов, то были задействованы и sstl и lvds ноги. sstl работал на частоте чего-то около 800МГц, lvds - 1200МГц. При этом был организован режим тренинга и проверка четности - работало все стабильно на нескольких прототипах на очень длительных сроках.
Тренинг lvds был организован по принципу dpa и выбором оптимальной частоты из набора 8 частот. SSTL - есть набор задержек - 64 значения и находился центр самого длинного рабочего окна по данным, эта задержка и добавлялась к клоку. Все это естественно относится к DDR регистрам, т.е. все что альтера заявляет про частоты при правильном использовании выполняется.
Go to the top of the page
 
+Quote Post

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

 


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


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