Перейти к содержанию
    

Метастабильность Altera

В документе Альтеры понимание метастабильность

Альтера понимание метастабильности

на странице 4 есть пример схемы которой можно оценить MTBF. Собрал я эту схему (длина цепи синхронизации 1), описал констрейны для тайминг анализера, описал в ассигнментс эдиторе, короч все как надо, в итоге получил MTBF равное 2 050 лет для clka= 5 ns (200 МГц) clkb=8.333 ns (120 МГц) на Циклоне 3.

Проведя симуляцию в моделсиме неопределенное состояние выскакиволо каждые 4166 us

 

Вопрос такой: 4166 мкс << 2 050 лет. Кто либо проводил такой же экспиремент, может поделится опытом и результами.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще такой вопрос, может кто грамотно описать механизм работы цепи синхронизации. Я его понимаю так.

 

Допустим регистр scr работает по clka регистр sync (регистр цепи синхронизации для простоты 1) работает по clkb далее к sync подключен регистр dest который принимает данные из клокового домена clka.

Допустим не выполнились временные ограничение по Thold (просто для определенности) получается регистр sync воше в местабильное состояние, но данные в регистр dest поступят только на следующем тактовом импульсе, таким образом у регистра sync есть время = такт - Tsetup для того чтобы выйти из этого стостояния.

В случаи 2 регистров в цепи синхронизации (sync1 и sync2) допустим что sync1 не успел выйти из неопределенного состояния за так и он передал свое состояние регистру sync2. У sync2 так же есть так на разрешение неопределенного состояния до передачи данных в регистр dest. Таким образом время на разрешения неопределенного состояния регистров = 2 такта - Tsetup и так далее.

 

Вопрос в какое состояние попадут регистры синхронизации после разрешения неопределенности (старое или новое)? Похоже что тут зависит многое зависти когда эта неопределенность произошла. Допустим регистр scr переключался из 0 (соотв. напр U=0В) в 1 (соотв. напр U=5В) в тот момент когда на тактовый вход sync пришел фронт тактирующего импульса. Рассмотрим 3 случая для напряжения на выходе регистра scr (1) U=1 В (2) U=2.5В (3) U=4В. В случаи (1) sync скорее всего примет старое значение 0, (3) - новое 1. (2) как карта ляжет 1 либо 0 зависит от шумов и прочей лабуды.

 

Еще один вопро если у меня массив допустим из 8 регистров scr[7:0] и по 8 регистров sync и dest соответственно, так вот можно ли гарантировать что если регистр sync [1] принял старое значение scr[1] то и все остальные примут старое значение, кроме случая ((2) из предыдущего примера). То есть при разрешении неопределенности массив регистров ведет себя одинаково??? Если принять во внимание предыдущий пример то похоже на то, так ли это?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос в какое состояние попадут регистры синхронизации после разрешения неопределенности (старое или новое)?
В неопределенное :rolleyes: Т.е. может быть как старое, так и новое

Еще один вопро если у меня массив допустим из 8 регистров scr[7:0] и по 8 регистров sync и dest соответственно, так вот можно ли гарантировать что если регистр sync [1] принял старое значение scr[1] то и все остальные примут старое значение,
Нет

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тогда смысл цепи синхронизации, без не было бы тоже самое, разве нет?

Поиском по форуму, тема многократно и со всех сторон обсуждалась. Один из участников конференции даже изобрел теорему о метастабильности "теорема Oldring-а".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поиском по форуму, тема многократно и со всех сторон обсуждалась. Один из участников конференции даже изобрел теорему о метастабильности "теорема Oldring-а".

стало интересно...(ранее пропустил и не читал...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проведя симуляцию в моделсиме неопределенное состояние выскакиволо каждые 4166 us

Чтобы такого не было нужно для первого триггера синхронизатора поставить в 0 значеня setup и hold. Например поправить sdf.

 

тогда смысл цепи синхронизации, без не было бы тоже самое, разве нет?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...