Вы не можете быть полностью уверены, что избежали метастабильности. Как вы упомянули, выход метастабильного триггера непредсказуем, поэтому вы можете потенциально распространять неправильное значение, когда у вас есть метастабильность даже при использовании подхода с двумя регистрами.
Этот метод, однако, никогда не предназначен для решения метастабильности, но пытается уменьшить вероятность того, что метастабильное значение входит в вашу схему. То, что называется here MTBF (среднее время между отказами). Чтобы уменьшить MTBF, вы можете даже подключить больше двух регистров.
Даже если это не решает unpredictive-ность значения, интересно использовать эти двойные регистры, потому что, когда значение является метастабильной, он будет колебаться, пока не стабилизируется до 0 или 1.
Это колебание заставит вашу схему переключиться, а затем использовать много энергии ни за что, так как каждый переход потребляет энергию. По этой причине важно использовать двойные регистры для перехода по частотной области.
Для обеспечения того, чтобы данные были действительными, вы можете использовать механизм подтверждения запроса между двумя часовыми доменами.
Быстрый пример:
- Набор данных на шину (вход двойных регистров)
- Подождите 1 (или более) такт, чтобы быть уверенным, что данные хорошо установлена на другой стороне
- Отправить запрос сигнал (ввод двойного регистра)
- Худший случай: сигнал запроса метастабилен и остается 0 после стабилизации. Следующий такт будет равен 1, так как он будет уже установлен на 1, по крайней мере, на 1 такт. Наилучший случай: следующий цикл адресат примет данные
- Данные стабильны, запрос стабилен и в 1 -> данные могут быть использованы. Отправьте подтверждение источнику.
- Признание приходит (на двойной регистр в случае метастабильности). Если метастабильно, может потребоваться больше времени на такт.
- Запрос падает.
- Другие данные могут быть отправлены через шину
Этот протокол называется протоколом 4-фазы. Вы можете найти много документации об этом в Интернете, поскольку это классический протокол для асинхронных проектов.
Это довольно просто понять и реализовать. Имейте в виду, что это создаст накладные расходы в области, которые могут быть весьма важными.
Надеюсь, это поможет.
Этот вопрос может быть лучше подходит для http://electronics.stackexchange.com/ –
Хорошо, спасибо. Могу ли я опубликовать этот вопрос еще раз? –