|
Приём данных в ПЛИС по внешнему клоку, Методы и подходы. |
|
|
|
Jun 19 2014, 06:44
|

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

|
Всем привет! Возможно, тема уже обсуждалась в том или ином виде, но я не заметил, хотя форум читаю регулярно. Поэтому предлагается обсуждение. Вопрос, собственно, вот в чём. Дано: ПЛИС и некое внешнее цифровое устройство, с которым ПЛИС обменивается данными, причём в этом обмене клок идёт с внешнего устройства на ПЛИС. Соответственно, на ПЛИС нужно принять поток, имея устойчивую синхронизацию, не зависящую от таких факторов, как изменение температуры, зависимость от конкретного образца/партии микросхем и т.п. Если клок внешнего устройства относительно низкочастотен по отношению к внутреннему клоку ПЛИС, то ситуация выглядит простой: пропускаем все входные сигналы, включая клок внешнего устройства, через синхронизаторы и работаем с полученными внутренними сигналами обычным образом. Но если клок внешнего устройства соизмерим или больше внутреннего клока ПЛИС, тут остаётся один путь - заводить внешний клок внутрь, организовывать для него клоковый домен, в котором принимать данные (которые потом внутри можно отдавать в другие клоковые домены, например, через двухклоковое FIFO). Вот тут и возникает самый интересный вопрос: как организовать внутренний клок, синхронный с внешним для уверенного приёма данных. Насколько мне известно, существует два подхода. - Подача внешнего клока на I/O пин ПЛИС с дальнейшей трассировкой на глобальный клок, которым и тактировать приём данных.
- Подача внешнего клока на специальный пин ПЛИС, который ведёт на вход ФАПЧ, включаемой в режиме zero-compensation (в терминах Altera).
В первом случае необходимо добиться, чтобы клок, пройдя через внутренние трассировочные ресурсы ПЛИС, был приемлемо сфазирован по отношению к данным. Видел, что этого добиваются введением констрейнов задержки (set_delay). Вопрос: неужто этот способ даёт возможность добиться в различных условиях (климатика, зависимость от экземпляра и т.д.) согласованности между полученным указанным образом внутренним клоком и внешними данными, чтобы их (данные), например, можно было безопасно и надёжно захватывать прямо во входных триггерах I/O элементов ПЛИС? Во втором случае, вроде, теоретически всё хорошо - все пути являются, что называется, dedicated, синтезатор и ПЛИС обеспечивают надёжную организацию согласования клока и данных. Интересует реальный опыт - кто так делал и каков результат? Какие частоты реально использовались? В общем, интересует любая информация по обозначенной теме: теория, практические достижения и т.д. Практический опыт особенно интересен, как в плане подхода, так и в нюансах. Конкретные примеры тоже в кассу: какие ПЛИС, какие внешние устройства использовались?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 19 2014, 07:17
|
Гуру
     
Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261

|
Цитата(dxp @ Jun 19 2014, 10:44)  В общем, интересует любая информация по обозначенной теме: теория, практические достижения и т.д. Практический опыт особенно интересен, как в плане подхода, так и в нюансах. Конкретные примеры тоже в кассу: какие ПЛИС, какие внешние устройства использовались? Теория: AN433. Практика: SLAA545.
|
|
|
|
|
Jun 19 2014, 07:27
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(dxp @ Jun 19 2014, 10:44)  ...Но если клок внешнего устройства соизмерим или больше внутреннего клока ПЛИС... Ну если данные шпарят на 1 Ггц и необходимо их принять в ПЛИС и обработать, и всё это обычные пины - то никак. Но ведь PCIe, SRIO, Ethernet и прочее как-то работают! Цитата(dxp @ Jun 19 2014, 10:44)  Во втором случае, вроде, теоретически всё хорошо - все пути являются, что называется, dedicated, синтезатор и ПЛИС обеспечивают надёжную организацию согласования клока и данных. Интересует реальный опыт - кто так делал и каков результат? Какие частоты реально использовались? Ответ зависит от типа ПЛИС и той частоты, которыю ПЛИС поддерживает. Положительный опыт - до 300 Мгц. Бывает и больше, но надо изголяться. Обычно самое трудное - обеспечить на выводах ПЛИС синхронность входных данных с опорной частотой на всём климатическом диапазоне! Вот где танцы начинаются! А внутри ПЛИС надо вытянуть частоту и радоваться жизни для второго случая.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Jun 19 2014, 08:13
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dxp @ Jun 19 2014, 13:44)  В первом случае необходимо добиться, чтобы клок, пройдя через внутренние трассировочные ресурсы ПЛИС, был приемлемо сфазирован по отношению к данным. Видел, что этого добиваются введением констрейнов задержки (set_delay). Вопрос: неужто этот способ даёт возможность добиться в различных условиях (климатика, зависимость от экземпляра и т.д.) согласованности между полученным указанным образом внутренним клоком и внешними данными, чтобы их (данные), например, можно было безопасно и надёжно захватывать прямо во входных триггерах I/O элементов ПЛИС? а вы умнее поступите, сделайте региональный клок, на котором хлопает пара регистров, а потом на остальную логику, работающую от ФАПЧ. Если входной поток нормально сфазирован относительно клока, то там норм все будет. Но при желании можно автомат калибровки сделать и периодически подруливать задержками в падах на лету.
--------------------
|
|
|
|
|
Jun 19 2014, 08:13
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Делал по обоим путям. Первый раз схему развели не верно потому завели на обычную ножку
50 МГц данные на 100 МГц клок, Спартан 6 от ксалинкс. В первом случае были здоровые задержки пока шли данные от ноги до клокового буфера, пришлось описать констрайны сетап и холд, и перейти с выставления данных по падающему фронту и приема по восходящему на работу по одному фронту, то есть данные ставились по восходящему для этого пришлось сделать мультиплексор, то есть первый бит стоял сразу из данных, а по первому клоку переключался на сдвиговый регистр, который уже спокойно ехал.
по данным разводки полностью забитая ПЛИС с 2 такими интерфейсами дала 8 нС и 12 нС на сетап данных, то есть можно получить SPI до 125 и 83 МГц.
По второму пути все гораздо оптимистичнее, и сейчас в забитой ПЛИС равезлось на 6-7 нС, то есть частоты вше плисовых. На пустой было выше.
|
|
|
|
|
Jun 19 2014, 12:49
|

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? И из чего исходить в каждом случае при оценке, годится ввод клока непосредственно или нужно его фапчевать? Ведь критериев оценки как-то с ходу не просматривается.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 19 2014, 13:24
|
Профессионал
    
Группа: Свой
Сообщений: 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  ), что позволило перебросить тактовую на "клоковый" пин и использовать SERDES с PLL.
|
|
|
|
|
Jun 19 2014, 13:43
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(alexadmin @ Jun 19 2014, 20:23)  Не. Клок был прямо от АЦП, сопровождающий данные. я не про это, вы осцилом не пробовали посмотреть что там на самом деле ? Это я к тому, что констрейны они же рассчитываются под определенные соотношения входных сигналов и если они не те, то рассчет будет не корректный. В моей практике такое было, пока осцилом не увидел что в даташите приведены другие данные тоже была такая ситуация. Цитата(dxp @ Jun 19 2014, 19:49)  А чем это лучше, чем вариант два (с генерацией клока на ФАПЧ с компенсацией задержки)? Тем, что внешний клок не надо подавать на специальный (dedicated) пин? тем что клок проходит путь через пины аналогичный данным и задержки плывут одинакого.
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|