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

 
 
> Входные сигналы ПЛИС и их "времянка", Тема, комплиментарная теме про выходные сигналы. :)
dxp
сообщение Jun 26 2009, 03:27
Сообщение #1


Adept
******

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



Вопрос про входные сигналы поднимался тут. Теперь про ответную часть.

Вот валится поток - данные (по параллельной шине, хотя это и не важно) и клок. Клок, понятное дело, задержан на какую-то величину. Величина не очень большая, не больше половины периода. Если поток принимает "железяное" устройство, где четко указаны setup/hold времена, то вопросов нет. Но если поток идет в FPGA, то тут возникают вопросы.

Т.к. скорость потока (тактовая частота синхросигнала - клока) достаточно велика - соизмерима с клоком в принимающей FPGA, то просто пропустить через синхронизаторы не годится. Напрашивается использование двухклокового FIFO, в которое поток будет наливаться со своей скоростью, а выгребается из другого порта на частоте собственного клока ПЛИС. Это, в общем, известное и понятное решение. Но вот есть нюанс. Дело в том, что это FIFO двухклоковое строится на основе двухпортовой памяти, а блоки этой памяти лежат где-то в недрах ядра ПЛИС. И от входных пинов до выходных портов памяти задержки вполне соизмеримы с задержкой входного клока относительно входных данных. Иными словами, когда эти входные сигналы дойдут до портов памяти, временнЫе соотношения между ними будут уже совсем не такими, какими они были на входе.

Вот если бы можно было бы защелкнуть входные данные по входному клоку прямо во входных триггерах IO элементов, то проблемы бы не было. Но сделать это, насколько понимаю, вряд ли возможно - нельзя подать этот клок на тактовые входы триггеров, сохраняя при этом временнЫе соотношения с данными.

Второй вариант - обконстрейнить. Т.е. и на сигналы входных данных, и их клока наложены констрейны, задающие максимальную и минимальную задержки от входных пинов до входных портов памяти. Этот вариант работает. Вроде. Но почему-то нет уверенности, что это 100%-ный вариант, что это будет всегда и везде работать.

Кто как делается в таких случаях? Какие мнения, опыт?

Спасибо.


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


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Всем здравствовать.

DXP, выглядит все так, что лучший способ по цене/качеству тактировать регистры во входных буфферах стробом, получаемым снаружи. Разводить его не по глобальным клоковым сетям, а локально, стараясь минимизировать количество регистров напрямую от него тактируемых.

По поводу FIFO. Они вовсе не обязаны быть на dual port sram, помучайте wizard и получите на ячейках общего назначения. Фишка в dual clock не память, а схема управления и передачи информации об указателях через границу клоковых доменов.

В HyperTransport 400MHz я подавал опорный клок на DCM(PLL), его выход через глобальную сеть передавал к регистрам в IOB, там сэмплировал им и клок и данные. Для синхронизации после reset пробегал по шагам полный оборот фазы, находил фронты клока, затем ставил фазу на найденный фронт клока и снимал reset с остальной схемы.
Go to the top of the page
 
+Quote Post
dsmv
сообщение Jul 2 2009, 10:39
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(Shtirlits @ Jun 29 2009, 14:21) *
В HyperTransport 400MHz я подавал опорный клок на DCM(PLL), его выход через глобальную сеть передавал к регистрам в IOB, там сэмплировал им и клок и данные. Для синхронизации после reset пробегал по шагам полный оборот фазы, находил фронты клока, затем ставил фазу на найденный фронт клока и снимал reset с остальной схемы.



Есть ещё вариант. У Вас подстройка фазы производится однократно, но никто не запрещает подстройку фазы производить постоянно.

Я сделал автомат подстройки фазы, который за 1024 такта определяет принимает решение куда сдвинутся и производит сдвиг DCM. Это работает постоянно во время работы основной схемы.
В результате удалось принимать поток данных на частотатх от 50 MHz до 500 MHz
Go to the top of the page
 
+Quote Post



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

 


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


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