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

 
 
> Входные сигналы ПЛИС и их "времянка", Тема, комплиментарная теме про выходные сигналы. :)
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
Ответов
Boris_TS
сообщение Jun 26 2009, 12:50
Сообщение #2


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(dxp @ Jun 26 2009, 07:27) *
Кто как делается в таких случаях? Какие мнения, опыт?

Для XIlinx FPGA (Virtex-e/Spartan-2E и Spartan-3A) мухлевал так:
1. До некоторых под возможно скомпенсировать задержку clock IBUFG путём использования в IBUF данных элементов Delay.
2. Если есть возможно использовать ПЛИС'овый DLL/PLL (обратная связь внутрикристальная), то до некоторых под хватает его компенсации задержки + использования в IBUF данных элементов Delay.
3. Если всего вышеперечисленного не хватает, то тогда тоже использует ПЛИС'овый DLL/PLL, но обратную связь делаем с проходом через дополнительную пару ног (выход - вход).

Мне обычно хватало и первого варианта,.. но т.к. случаи могут быть разные прорабатывал все 3. Во всех случаях данные фиксировались в InputFlipFlop.

В случае необходимости перехода на внутреннею частоту, данные после InputFlipFlop подавались на двухпортовую память (часто на Distributed DpRAM, а не на блочную, т.к. объема Distributed DpRAM вполне хватает и размазана она по всему кристаллу - задержки от IOB получаются меньше).
Go to the top of the page
 
+Quote Post



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

 


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


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