2016-11-28 1 views
1

Для решения метастабильности, вызванной различными часовыми областями в Verilog, используется метод двойного регистра.Решение проблемы метастабильности с использованием метода двойной регистрации

Но, насколько я знаю, конечный результат метастабильности не определен. Выход не зависит от входа.

Итак, мой вопрос заключается в том, как гарантировать правильность вывода с использованием метода с двумя регистрами?

Спасибо.

+1

Этот вопрос может быть лучше подходит для http://electronics.stackexchange.com/ –

+0

Хорошо, спасибо. Могу ли я опубликовать этот вопрос еще раз? –

ответ

1

Вы не можете быть полностью уверены, что избежали метастабильности. Как вы упомянули, выход метастабильного триггера непредсказуем, поэтому вы можете потенциально распространять неправильное значение, когда у вас есть метастабильность даже при использовании подхода с двумя регистрами.

Этот метод, однако, никогда не предназначен для решения метастабильности, но пытается уменьшить вероятность того, что метастабильное значение входит в вашу схему. То, что называется here MTBF (среднее время между отказами). Чтобы уменьшить MTBF, вы можете даже подключить больше двух регистров.

Даже если это не решает unpredictive-ность значения, интересно использовать эти двойные регистры, потому что, когда значение является метастабильной, он будет колебаться, пока не стабилизируется до 0 или 1.

Это колебание заставит вашу схему переключиться, а затем использовать много энергии ни за что, так как каждый переход потребляет энергию. По этой причине важно использовать двойные регистры для перехода по частотной области.

Для обеспечения того, чтобы данные были действительными, вы можете использовать механизм подтверждения запроса между двумя часовыми доменами.

Быстрый пример:

  1. Набор данных на шину (вход двойных регистров)
  2. Подождите 1 (или более) такт, чтобы быть уверенным, что данные хорошо установлена ​​на другой стороне
  3. Отправить запрос сигнал (ввод двойного регистра)
  4. Худший случай: сигнал запроса метастабилен и остается 0 после стабилизации. Следующий такт будет равен 1, так как он будет уже установлен на 1, по крайней мере, на 1 такт. Наилучший случай: следующий цикл адресат примет данные
  5. Данные стабильны, запрос стабилен и в 1 -> данные могут быть использованы. Отправьте подтверждение источнику.
  6. Признание приходит (на двойной регистр в случае метастабильности). Если метастабильно, может потребоваться больше времени на такт.
  7. Запрос падает.
  8. Другие данные могут быть отправлены через шину

Этот протокол называется протоколом 4-фазы. Вы можете найти много документации об этом в Интернете, поскольку это классический протокол для асинхронных проектов.

Это довольно просто понять и реализовать. Имейте в виду, что это создаст накладные расходы в области, которые могут быть весьма важными.

Надеюсь, это поможет.

+0

Спасибо Krouitch, но у меня все еще есть путаница. Итак, после шага 4 я могу только гарантировать, что сигнал запроса стабилен и равен 1, но как гарантировать, что данные также стабильны? Благодарю. –

+0

Если вы отправили данные по крайней мере за один такт до отправки запроса, данные должны быть стабильными. Если это не означает, что путь слишком длинный для выбранного периода времени. Вот статья, которая иллюстрирует, что я имею в виду: http://www.eetimes.com/document.asp?doc_id=1276114 – Krouitch

Смежные вопросы