[an error occurred while processing this directive]
|
подсказать литературу не могу. Попробуйте поискать ко словам:
synchronous design
clock domain
также на сайтах альтеры и ксайлинкса м.б. есть какие-либо рекомендации.
Имхо, идеология для фпга такова:
1. синхронный дизайн
2. один клок, если реально нужно больше - аккуратно прописывать переход упр. сигналов с одного клокового домена на другой
3. клоки разводить по глобальным цепям, генерация клоков - через pll
4. на все внешние ноги задавать констрайны
дальше не идеология, а практ. опыт:
5. на все внешние асинхронные входы ставить сихронизирующие буфера (2 последоват. триггера) для убирания метастабильности
6. все внешние выходы щелкать триггерами, никакой комбинаторной логики на выходе чипа
7. все внутренние триггера сбрасывать в исходное состояние сигналом сброса, сброс д.б. один, подаваться снаружи чипа, разведен глоб. цепью, лучше асинхронный, лучше активный 0.
По этой теме можно долго распространяться, но основная ошибка начинающих - "псевдосинхронный" дизайн с кучей клоков, в роли которых выступают упр. сигналы. Тут-то и начинается пьянка с задержками в разных вариантах разводки и крики о помощи типа "изменил один оператор, и перестал работать уже отлаженый другой модуль" и т.д.
ps забыл еще очевидную вещь - написание тестбенчей и моделей внешнего окружения и отладка
1. исходного hdl кода
2. postroute
E-mail: info@telesys.ru