Что такое метастабильность?


15

Из статьи Википедии Метастабильность в электронике :

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

Кажется, это хорошее определение, но что это значит в приложении?

С точки зрения разработчика электроники, каковы некоторые примеры того, когда это может произойти, и где этот тип отказа должен вызывать беспокойство?

Есть ли более прагматичное или прикладное определение - что-то более конкретное?


2
Лесли Лэмпорт (он из $ \ LaTeX $ fame) написал хорошее описание метастабильности в этой статье: research.microsoft.com/users/lamport/pubs/buridan.pdf
markrages

@markrages Блестящий. Это также может случиться с падающими кошками и тостами с маслом .
Расти

Ответы:


15

Быстрый ответ: Если вы нарушите настройку и задержите время на входе триггера, то выходной сигнал будет непредсказуемым в течение некоторого времени. Этот непредсказуемый результат называется метастабильным (или метастабильным).

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

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

Большинство метастабильных времен довольно коротки, хотя вероятность долгого времени не равна нулю. Теоретически вы могли бы иметь метастабильное время порядка секунд, хотя шансы на это невероятно редки. Когда скорость триггера увеличивается, среднее метастабильное время уменьшается - при прочих равных условиях.

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

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

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


3
Какие-нибудь зависимости от типа принесенного в жертву животного?
Расти

11

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

Стабильные равновесия используются в электрических системах для создания элементов хранения. Нестабильная эквилибрия не делает хороших элементов хранения (поскольку они легко теряют свое состояние), но часто существует как паразитное состояние.

Обычный цифровой запоминающий элемент представляет собой пару инверторов с перекрестными связями:

Два инвертора соединены в петлю, выход-вход

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

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

Передаточная функция инвертора

Инвертор нелинейный; Один простой способ получить приближенное решение нелинейной схемы - построить характеристики схемы; пересечения графиков представляют собой решения или, другими словами, точки, в которых выполняются электрические характеристики всех компонентов схемы. Обычно это делается с помощью IV-графиков, как в этом примере с диодами в Википедии . Тем не менее, для инверторов мы сделаем это с vv plots. Наложение второй передаточной функции инвертора на график (с заменой осей, поскольку второй инвертор направлен назад:

Наложенные передаточные функции для инверторов

Есть три пересечения графиков: одно в (0, Vs), одно в (Vs, 0) и одно в (Vs / 2, Vs / 2). Состояние (Vs / 2, Vs / 2) является метастабильным. После небольшого возмущения любого из узлов схема почти всегда устанавливается в одно из устойчивых состояний, а не возвращается в (Vs / 2, Vs / 2).

Способ записи значения в запоминающий элемент с двумя инверторами состоит в том, чтобы принудительно установить один из узлов на требуемое значение, используя драйвер, более сильный, чем инверторы. Один из распространенных способов сделать это с помощью транзистора:

Инверторы с перекрестными связями с проходным транзистором

Если вы подключите затвор транзистора к часам, у вас есть D-защелка (я опускаю структуру вывода). Когда часы на высоком уровне, что позволяет пассивный транзистор, защелка прозрачна - входной сигнал проходит непосредственно на выход. Когда часы низкие, защелка удерживает предыдущее значение. Метастабильность возникает в момент защелки образцов. Если при выборке защелки на входе присутствует стабильное высокое или низкое напряжение, оно будет работать правильно. Тем не менее, если входной сигнал находится около точки Vs / 2 при выборке защелки, существует вероятность того, что защелка окажется в метастабильном состоянии (Vs / 2, Vs / 2). Как только он находится в метастабильном состоянии, он может оставаться там бесконечно (при условии, что защелка снова не синхронизируется), но, поскольку это неустойчивое равновесие, обычно что-то происходит относительно быстро, чтобы выбить его из метастабильного состояния.

Когда беспокоиться о метастабильности

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

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

Некоторые из распространенных ситуаций, в которых проблема метастабильности:

  • Логическая выборка внешнего входа, например, переключателя на передней панели или выхода цепей монитора, которые могут переходить в любое время (пониженное напряжение, перегрев).
  • Логика с использованием нескольких часов, которые не имеют синхронных отношений. Это часто происходит с интерфейсами ввода / вывода, которые предъявляют особые требования к тактовым частотам, но также возникают внутри системы, когда разные части микросхемы имеют разные требования к производительности. Например, не вся логика вашего процессора с частотой 3 ГГц работает на частоте 3 ГГц. (Тем не менее, процессор не является хорошим примером, так как многие часы в процессоре являются кратными друг другу.)

В основном хороший ответ, но следует упомянуть еще одну вещь: из-за задержек распространения не существует ни одного метастабильного состояния, а целого семейства из них, и нет определенного способа определения метастабильных состояний. Можно спроектировать схему с выходом с тремя состояниями (высокий / низкий / метастабильный) и расположить вещи так, чтобы никогда не сообщалось о «высоком», если выходной сигнал в конечном итоге станет низким, или наоборот, но нет никакой гарантии, что выходной не будет подпрыгивать между «высоким» и «метастабильным» (заканчивая «высоким») или между «низким» и «метастабильным» (заканчивая «низким»).
суперкат

+1 Это хороший материал, но он имеет больше смысла после прочтения ответа @David Kessner. +2 за графику.
Расти

3

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

Для систем с одним тактовым сигналом метастабильные сигналы часто можно обрабатывать, проходя через две защелки. Более сложная проблема возникает при стробировании часов. Существует много схем (особенно с использованием RS-защелок), которые чудесно работали бы, если бы метастабильность была невозможна, но которые могли бы, в случае возникновения метастабильности, приводить к генерации тактовых импульсов (которые, в свою очередь, могли вызывать метастабильность в нисходящем направлении).

Между прочим, еще один важный момент, касающийся метастабильности: время распространения защелки показывает, когда, если время выборки и время выдержки соблюдены , выходной сигнал будет стабильным при новом значении. Если время настройки и удержания не соблюдено, нет никакой гарантии относительно того, будет или когда выход переключится или не переключится, до тех пор, пока защелка не получит действительное событие синхронизации. Даже если выход «переключается», нет гарантии, что он самопроизвольно не переключится обратно.


2

Классический случай - если вы нарушаете время установки / удержания для синхронной защелки, и это проблема, о которой вы должны знать при проектировании FPGA (я уверен, что Xilinx и Altera будут иметь примечания по этому поводу). Если сигнал может появиться в любое случайное время, вы никогда не можете быть уверены, что когда вы его синхронизируете, он не изменится в пределах спецификации окна времени установки / удержания. То, что может произойти, - вместо того, чтобы выходной сигнал защелки становился высоким или низким в указанное время после фронта тактового сигнала, он может некоторое время колебаться перед установкой в ​​стабильном состоянии. Обычный способ предотвратить это - использовать двухступенчатую защелку с одинаковыми или задержанными или несинфазными тактовыми сигналами в зависимости от баланса между вашими требованиями к задержке и вероятностью метастабильности. Это позволяет стабилизировать время первой защелки до того, как вторая защелка зафиксирует устойчивое состояние. Между прочим, Это то, с чем микроконтроллерам приходится иметь дело внутренне, поскольку внешние сигналы ввода / вывода обычно асинхронны с тактовой частотой процессора, поэтому порты ввода / вывода часто имеют двойную блокировку, чтобы избежать проблем, и программному обеспечению не нужно беспокоиться об этом , Смутно вспомнить чтение много лет назад о проблеме с 6502, когда чтение шины данных, которые изменились вне спецификации времени установки / удержания, могло вызвать переход к адресу, который не был ни целью перехода, ни следующей инструкцией, как некоторые внутренние состояние стало метастабильным. Это видео показывает несколько примеров: Смутно вспомнить чтение много лет назад о проблеме с 6502, когда чтение шины данных, которые изменились вне спецификации времени установки / удержания, могло привести к переходу по адресу, который не был ни целью перехода, ни следующей инструкцией, как некоторые внутренние состояние стало метастабильным. Это видео показывает несколько примеров: Смутно вспомнить чтение много лет назад о проблеме с 6502, когда чтение шины данных, которые изменились вне спецификации времени установки / удержания, могло вызвать переход к адресу, который не был ни целью перехода, ни следующей инструкцией, как некоторые внутренние состояние стало метастабильным. Это видео показывает несколько примеров:http://www.youtube.com/watch?v=tKHCwjWMMyg

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


Я до сих пор работаю с системами на базе 6502 в качестве хобби. Было бы неплохо узнать некоторые подробности о проблемах метастабильности в данных шины. Я, конечно, могу предположить, что если аккумулятор содержит $ FF и считывает значение, равное или $ 00, или $ 01, аккумулятор может получить любое возможное значение. Однако прежде чем можно было бы взять какую-либо ветку, я ожидал бы, что пройдут еще два цикла, во время которых флаги будут повторно связаны дважды. Я не могу представить, чтобы метастабильное состояние оставалось так долго.
суперкат

Это было то, что я слышал из вторых или третьих рук, может быть, 20 лет назад, но это происходило от людей, которые абсолютно знали, что они делают - это было связано с интерфейсом Tube на 6502-м втором процессоре для BBC Micro и чтением статуса флагов, и был случай, когда-то на голубую луну, но достаточно часто, что это задержало запуск продукта. Это не обязательно должно длиться 2 цикла, поскольку сигналы, вероятно, блокируются внутри на различных этапах конвейера. Я думаю, что это был также самый быстрый 6502 вариант, доступный в то время - 3 МГц 65C02 ISTR.
mikeselectricstuff

Интересный. [Между прочим, есть ли способ использовать пунктуацию без использования StackExchange?] При нормальном поведении, например, «ADC 0xD000», адрес будет выводиться на фазе 1 четвертого цикла, а данные будут фиксироваться в конце фазы 2 из этого цикла. Данные будут поступать в АЛУ в фазе 1 следующего цикла (это будет выборка кода операции для следующей инструкции). Цикл после этого будет выборкой операнда. Если бы в тот момент все еще было метастабильно, система могла бы расплавиться, но это казалось бы маловероятным, поскольку динамические регистры были бы повторно связаны.
суперкат

Я не хочу сказать, что метастабильность шины данных не может повлиять на 6502, потому что я знаю, что есть некоторые другие странные поведения, которые я не могу объяснить. Например, шина данных фиксируется во время фазы 2 тактового генератора и действует в течение следующей фазы 1. Таким образом, не должно иметь значения, изменяется ли она во время фазы 2, если она стабильна в конце. Однако есть несколько недокументированных инструкций, на поведение которых влияет содержимое шины данных в течение ранней части цикла (демонстрируется на машинах, таких как C64 и Apple, которые извлекают видео во время фазы 1). Я не знаю, как ...
суперкат

... на поведение этих инструкций фактически влияет раннее поведение шины данных, но я подозреваю, что это какое-то странное состояние гонки. IIRC, один из кодов операций соответствует шаблонам декодирования для LDA #imm, LDX #imm и TAX, поэтому выход ALU отображается обратно на его вход. Weird.
суперкат
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.