Цитата(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.