|
синхронизация компонент внутри ПЛИС |
|
|
|
 |
Ответов
(1 - 14)
|
Jul 11 2006, 08:36
|
Местный
  
Группа: Участник
Сообщений: 216
Регистрация: 26-05-06
Из: Коломна
Пользователь №: 17 479

|
Цитата(cornflyer @ Jul 11 2006, 12:14)  Большие проекты для ПЛИС обычно разбиваюца на отдельные части - компоненты. Реализацию пишут, например, на VHDL. В моем случае я сперва разработал архитектуру проекта, соединил "кубики" в графическом редакторе ISE 7. Написал на VHDL код для этих "кубиков". Один из компонентов проекта - ресивер для RS-232. Я сделал ему клок 50 МГц чтобы не мучаца с ошибками. Остальные компоненты у меня раюотают от частоты 20МГц, т.к. у меня внешнее АЦП работает от 20МГц. Возникла проблема синхронизации данных. Клок сделал как написано в мануале - взял DCM, вытацил из него через буфферы BUFG два клока - 50 МГц и 20 МГц, завел feedback (цепь обратной связи для синхронизации). Но полезли глюки ))) вот сижу и думаю, как бы сделать синхронизацию. Есть идеи!? Вам надо из тактового домена A передать данные в тактовый домен B. 1. Для этого на регистре в тактовом домене A выставляются данные и подается импульс в тактовый домен B. Фактически задача сводится к передаче импульса из одного тактового домена в другой. Как это сделать? 2. В тактовом домене А формируем сигнал(назовем его SA), который изменяет свой уровень по импульсу из A. (можно в А формировать не импульс, а сразу изменение уровня некоторого сигнала). 3. Так как изменение SA асинхронно такту домена B, необходимо избежать метастабильности. Пропускаем SA через два (можно больше но минимум два ) триггера, тактируемых тактом B, полученный сигнал назовем SB. 4. По условию, что SB на предыдущем такте не равен SB в текущем такте, защелкиваем данные в домене B.
|
|
|
|
|
Jul 12 2006, 08:01
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972

|
Цитата(cornflyer @ Jul 12 2006, 09:17)  да, наверное лучший вариант - работать с 20МГц. ща попробую
будет ли девайс работать, если по фронту выставлять данные, а по спаду - читать? Лучше избегать таких решений, если не требуется еще большая производительность. Принцип синхронного дизайна предусматривает работу либо от фронта либо от спада. Во первых так вреде синтезаторам проще Во вторых у Вас точно не будет глюков, если скважность тактовой будет плавать
--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
|
|
|
|
|
Jul 14 2006, 13:08
|
Участник

Группа: Свой
Сообщений: 37
Регистрация: 9-08-05
Из: The Netherlands
Пользователь №: 7 477

|
Цитата(cornflyer @ Jul 12 2006, 15:24)  я же использую DCM для генерации стабильного клока. К тому же я испоользую Spartan 3, а у него в мануале написано, что он поддерживает DDR. Значит можна использовать оба фронта Советую Вам внимательно прочесть страницы 37 и 38. ( http://direct.xilinx.com/bvdocs/appnotes/xapp462.pdf )
Сообщение отредактировал AlexB - Jul 14 2006, 13:19
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|