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

 
 
 
Reply to this topicStart new topic
> Сигналы внутри ПЛИС, передача между компонентами
ADA007
сообщение Nov 19 2010, 06:36
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266



Доброго времени суток, господа форумчане. Может подобная тема уже обсуждалась, но я честно ее не смог найти. laughing.gif
Вопрос заключается в правильной и гарантированной передаче сигнала между компонентами. Как мне известно, это можно делать способами, которые я привел на рисунке. data_reg_1 - этот сигнал записывается по переднему фронту и так оно работает только для функционального моделирования, в временном это будет выглядеть как data_reg_0. Второй способ - по заднему фронту или по частоте смещенной на 180....мы защелкиваем сигнал по середине data_ready. Ну и data_reg_3 защелкивается гарантированно, т.к. латч для него длится аж 3 такта...
Помогите разобраться какие подводные камни? Есть ли существенные отличия? rolleyes.gif Интересует реализация в железе...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 19 2010, 08:02
Сообщение #2


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Правильная и гарантированная передача сигналов внутри ПЛИС достигается синхронизацией всех триггеров по переднему фронту тактового сигнала.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Nov 19 2010, 09:50
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



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


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
ADA007
сообщение Nov 19 2010, 10:04
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266



Цитата(Евгений Николаев @ Nov 19 2010, 12:50) *
В последнее время использую такое только при острой необходимости и только применительно к внешним по отношению к ПЛИС сигналам.

Интересно было бы узнать какой именно метод вы, и другие участники поста применяют и для первичного описания передачи данных между компонентами, и для вторичного описания, то есть после обнаружения критических задержек и др. проблем.....и при приеме внешних данных...
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Nov 19 2010, 10:34
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Цитата(ADA007 @ Nov 19 2010, 13:04) *
после обнаружения критических задержек и др. проблем.....и при приеме внешних данных...

С внешними достаточно просто - либо захватываю инверсным и зафиксированное в триггере уже перезахватываю нужным фронтом, внося задержку на 1 такт, либо и вовсе работаю на более высокой, чем у данных, частоте.
А внутри ставлю конвеер с захватом промежуточных состояний и таким поэтапным проведением на выход, либо счётчик для выдержки времени и захват уже готового по нужному такту.
Как-то делал КИХ-фильтр 20-го порядка, так там такие задержки были на перемножении отсчётов на коэффициенты, что после каждой операции приходилось ставить регистр и так до тех пор, пока эта "пирамида" из комбинаторных умножителей (встроенных там не было) и триггеров не свелась к конечному регистру результата. Фактически, был организован конвеер со скоростью 1 результат за 1 такт, но с задержкой в те самые 20 тактов. Конечно, можно было бы сделать задержку на счётчике, но при смене коэффициентов-констант менялось время выполнения, да и степень использования ресурсов меняла время выполнения. Поэтому потактовая разбивка с фиксацией промежуточного результата оказалась дубовым, но надёжным решением.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post

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

 


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


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