Здравствуйте, уважаемые!
Делаю проект на альтере (Stratix IV), где имеются несколько (4-5) тактовых доменов. Клоки на все домены вырабатываются внутренним PLL от единственного внешнего синхросигнала. Сигнал внешнего сброса заведён на вход сброса PLL. Сигнал захвата PLL тактовой частоты (lock) использую как асинхронный сброс на генератор внутреннего резета (8-ми битный счётчик с триггером на выходе). Генератор внутреннего сброса синхронизируется от одного из сигналов, вырабатываемого PLL. И уже дальше этот внутренний резет идёт на входы асинхронного сброса всех остальных модулей.
Проблема - TimeQuest выдаёт дофигище нарушений ограничения типа Recovery/Removal практически во всех блоков всех тактовых доменов.
Основной вопрос - корректно ли делать такую схему сброса в принципе?
Допустим, можно синхронизировать резет на все тактовые домены, но:
1) Как это корректнее делать (имею в виду - превращение в чистый синхронный резет или же в синхронизированный асинхронный)? 2) В FPGA вроде бы есть глобальные роуты по которым идёт клок? Почему по этим же линиям нельзя пускать асинхронный сброс? 3) Есть блок (фреймбуфер), работающий сразу в 3-х тактовых тактовых доменах, с кучей Dual-Clocked FIFO для пересинхронизации - как правильно сбросить его?
Заранее спасибо за советы.
Сообщение отредактировал MIX@ - Jan 10 2013, 13:33
|