[an error occurred while processing this directive]
|
Вроде бы все верно. Но остается какое-то чувство не удовлетворенности. Вот уже не первый раз поднимается вопрос о мультиклоковой синхронизации, а в ответ вопрошающий получает набор штампов и ссылок на статьи, в основе которой почему-то лежит только понятие метастабильности. Причем взаимно противоречащих друг другу.
Достаточно посмотреть FAQ конференции по этому вопросу.
(Особенно умиляет своей логической непоследовательностью статья Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs).
И так, эффект метастабильности может проявиться только в дух случаях. При приеме данных на кристалл без сопровождающего эти данные стробом и при использовании мультиклоковой синхронизации. Первый вариант с трудом можно представить. Второй вариант можно избежать уже рассмотренным Вами способом. Причем эффекта метастабильности не будет или его можно игнорировать (распространения нелогического уровня далее по схеме не будет, потому что сигнал приходящий на D вход не меняется), если строб ENABLE формировать на частотах выше несущей хотя бы в 4 раза. Можно и в 2 раза и даже добавить один триггер впереди. Уважая рекомендации фирмы производителя. Ведь по ресурсам это ничего не стоит. Ну а если по каким то причинам без мультиклоковой синхронизации не обойтись, почему нельзя использовать соответствующие LPM функции, ведь советов типа буферизации данных (не говоря уже о существенных затратах по ресурсам) не достаточно, а ссылки на реализацию FIFO с раздельными записью и чтением неуместны, ведь все примеры при этом базирутся на использовании двухпортовой памяти, которая есть далеко не во всех кристаллах. Да и с точки зрения пакета многоклоковая синхронизация - это головная боль проекта. Борьба за приемленные Tsu, Th преобретает повседневный характер. А ведь многие при этом не обладают соответствующей квалификацией и работают с установками по умолчанию.
E-mail: info@telesys.ru