Почему каскадные D-триггеры предотвращают метастабильность?


15

Я понимаю, что такое метастабильность, но не понимаю, как связывание вместе шлепанцев уменьшает это?

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

Заранее спасибо!


2
Всегда ищу возможность упомянуть задницу Буридана: en.wikipedia.org/wiki/…
copper.hat

Ответы:


11

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

Это как уравновешивание карандаша. Вероятно, он упадет, и чем дольше вы будете ждать, тем меньше вероятность, что он останется стоять.

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

Основная проблема заключается в том, что если у вас есть один элемент памяти (защелка или триггер, они оба страдают от метастабильности) в синхронизированной системе, получающей выходные данные от асинхронной внешней системы, то вы физически не можете определить нижний предел времени ожидания иногда внешний сигнал совершает переход вблизи грани фиксации. Вы должны передать сигнал на другой триггер, чтобы он дождался там. Это дает вам гарантированное минимальное время ожидания одного такта.

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

У некоторых людей возникают проблемы с визуализацией того, что происходит между шлепанцами. Есть два способа вызвать метастабильность, и оба они связаны с нарушением правил триггера. Одним из способов является нарушение настройки ввода и времени удержания, чтобы выполнить переход, когда триггер ожидает, что вход будет стабильным. Другой - нарушать логические уровни входа, чтобы входной сигнал триггера находился на промежуточном уровне напряжения. Триггер, который является метастабильным, может вызвать любой тип нарушения на его выходе, чтобы каскадно перейти к следующему триггеру.


6
Например, когда я занимался дизайном микросхемы, у меня была «метастабильность», все пересечения тактов, мы делали математические расчеты, выясняли вероятность сбоя синхронизатора на каждом флопе, группу флопов и т. Д. И т. Д. Смотрели на то, какие результаты будут быть ... в основном пиксель на дисплее мог бы взорваться, в конце концов, весь чип снижался примерно раз в два года - это была видеокарта для Win95, которая в то время не могла оставаться на ногах более Примерно через день мы решили, что никто даже не заметит синхронизатор 2 года MTBF.
Taniwha

7
Также одна вещь, о которой никто не упоминает, это то, что происходит с абсолютным наихудшим случаем метастабильности ... иногда сбой синхронизатора приводит к колебаниям флопа на внутренней частоте с тупо высокой частотой, возможно, на уровнях между нормальными цифровыми максимумами и минимумами - если он ускользает от вашего высокого уровня. Получите анти-метастабильность синхронизирующих провалов, чтобы шумная аварийная ситуация могла заразить все нисходящие провалы (как раздувающие вентиляторы), что привело к огромным токовым перебоям и даже потенциальному перегреву и гибели микросхемы - поэтому обратите внимание на это как на проблему
Taniwha

@Neil_UK Вы используете слово «защелка», которое, я думаю, сбивает с толку. В моих кругах защелка является асинхронным элементом. Я бы назвал их шлепанцами для ясности.
jalalipop

1
@jalalipop Я использовал защелку для обозначения триггера, хотя, возможно, его значение изменилось за десятилетия с тех пор, как я начал его использовать. Хотя я согласен, что «защелка» обычно относится к асинхронному прозрачному типу, они также страдают от метастабильности, если данные изменяются на «защелкивающемся» крае входного разрешения. Главный подчиненный триггер, как правило, строится из пары защелок, приводимых в противофазу часами. Спасибо за упоминание, я изменю ответ, чтобы уточнить.
Neil_UK

@ Tamiwha Можете ли вы дать ответ с диаграммами и временными константами, а также с математикой, чтобы прояснить внутреннее поведение защелок во время их разрешения. Вы должны показать (как вы наверняка знаете), как усиление контура, постоянная времени регенерации и минимальный уровень шума (тепловой и VDD) влияют на способность к разрешению.
analogsystemsrf

9

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


2
Хороший ответ. Важным моментом является то, что метастабильность не предотвращается , мы просто снижаем вероятность до приемлемого уровня.
Эллиот Олдерсон

1
Таким образом, каскадные триггеры дают время для сигнала, устанавливаемого между 0 и 1, но это не решает неправильное значение? метастабильный сигнал может падать в обе стороны?
Wouter A

2
@WouterA Если он метастабильный, то оба значения верны.
user253751

4
Я не думаю, что это хороший ответ, только первый флоп дискретизирует входной сигнал в этом случае. Как упомянуто выше, происходит то, что существует вероятность возникновения метастабильности (зависит от усиления во внутренних контурах обратной связи на флопе, тактовой частоты и скорости, с которой выборка проходит между входными порогами) в любом конкретном флопе это (надеюсь) маленькое число <1 = p - два флопа дают нам шанс p ^ 2 на то, что MS
пройдет 2 флопа

4

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

Каскадирование трех (или более) хорошо спроектированных шлепанцев может увеличить время между инцидентами примерно до возраста Земли.


Зависит от вашей тактовой частоты и технологии процесса. Одного триггера может быть достаточно для того, чтобы ваш MTBF был бесконечно малым, пока вы держите слабый высокий уровень.
Джалалипоп

@jalalipop Конечно. В оригинальной статье IEEE есть некоторая актуальная информация о тестировании (очень устаревшая). DOI: 10.1109 / TC.1983.1676187
Спехро Пефхани

@jalalipop: как правило, это проблема, которая более актуальна для случаев, когда вы не можете гарантировать время простоя ... так называемый асинхронный дизайн, такой как FIFO, который обменивается данными между ядром ЦП и SOC, когда соответствующие часы не синхронизированы по фазе. В противном случае вы просто устанавливаете жесткую настройку времени и гарантия метастабильности не произойдет.
jbord39

Да, метастабильность является проблемой асинхронного интерфейса. Я имею в виду слабину, связанную с синхронной логикой после триггера. Если ваша слабость высока, событие Metastability исчезнет, ​​прежде чем оно повлияет на остальную часть вашего дизайна.
jalalipop

2

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


1

Если вы хотите возбуждения метастабильности, внедрите ДВА ОЧЕНЬ МЕДЛЕННЫХ ИНВЕРТОРА, подключите их вплотную и сместите их (в симуляции) в VDD / 2. Затем уберите смещение и наблюдайте скорость разрешения до уровней logic1 и logic0. Вам может потребоваться выбрать начальное напряжение смещения, отличное от VDD / 2.

Если ваши 2 или 3 триггера медленные по сравнению с периодом времени, жизнь может быть полна проблем.


1

Метастабильность просто означает, что, если у вас есть передача данных в пределах определенного временного окна, на которое ссылаются часы, выходные данные будут плохо работать в течение определенного периода после фронта часов. Тем не менее, окно не является фиксированным интервалом. Скорее, вероятность плохого значения (колебания или промежуточного уровня напряжения) экспоненциально уменьшается со временем. Таким образом, если вы сэмплируете сигнал с часами, а затем немного подождете, прежде чем применить часы ко второму триггеру, вы можете уменьшить вероятность плохого бита до любой желаемой (но ненулевой) вероятности. Если требуемое время слишком велико, вы можете использовать 3 или более триггеров подряд.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.