Цитата Сообщение от Sandro Посмотреть сообщение
Нихрена не пофигу. Метастабильность прекрасно распространяется сквозь комбинаторную логику. Особенно,через КМОП, поскольку она (почти) симметрична.

Мне как-то реально пришлось разгребать последствия такого вот заблуждения, когда разработчик не защитил от метастабильности вход UART, "поскольку метастабильность бывает только из-за медленно меняющихся сигналов, а у меня там триггер Шмитта!" Цитата дословная, запомнил ниазусть. Разумеется, это чушь, а ошибка вылазила совсем в другом месте, на шин процессора сыпался мусор. Метастабильность просачивалась через автомат состояния предатчика в автомат управления шиной, и привет.

Поэтому -- два триггера последовательно, стабильное значение брать с выхода второго. Выход первого нестабилен. Был бы он стабилен -- второй триггер был бы не нужен.
Так, стоп. Речь шла за сигнал из #25 поста, который был раскритикован в #31 посту. Это суррогаты внутри ПЛИС, откуда тут про триггер Шмидта и вообще навесную логику? Давайте отделять мух от котлет: так как работает внутри ПЛИС нельзя делать логикой на россыпи. И это главная причина ошибок начинающих ПЛИСоводов, которые перешли с обычной логики.

Цитата Сообщение от KTSerg Посмотреть сообщение
Сразу приношу извинения за глупый вопрос, возможно я ещё не проснулся, и не понимаю смысла этой конструкции...
Но разве процитированную функцию нельзя записать вот так:
Код:
  AnyEdge <= (FIFO[1] ^ FIFO[0]);
Или просто схема сгенерируется более сложная?
Можно, и схема будет вот такой:

Обратите внимание на различие в RTL: в первом случае есть оптимизация ресурсов синтезатором. Иногда, необходимо помогать синтезатору, причём следует всегда учитывать внутреннюю архитектуру выбранной FPGA/CPLD. У некоторых из них ограниченный набор логических функций и XOR им даётся труднее, нежели простые AND/OR. У последних циклопов там LUT, что делает накладные расходы элементов одинаковыми. Забавен тот факт, что оптимизированный верилог из моего примера из поста #36 конкретно для циклопа выглядит вот так:

Т.е., фиттер сам распознал там XOR и сделал его в LUT.