Из статьи Википедии Метастабильность в электронике :
Метастабильность в электронике - это способность цифровой электронной системы сохраняться в течение неограниченного времени в неустойчивом равновесном или метастабильном состоянии. В метастабильных состояниях схема может быть не в состоянии установить стабильный логический уровень «0» или «1» в течение времени, необходимого для правильной работы схемы. В результате схема может действовать непредсказуемым образом и может привести к отказу системы.
Кажется, это хорошее определение, но что это значит в приложении?
С точки зрения разработчика электроники, каковы некоторые примеры того, когда это может произойти, и где этот тип отказа должен вызывать беспокойство?
Есть ли более прагматичное или прикладное определение - что-то более конкретное?
Ответы:
Быстрый ответ: Если вы нарушите настройку и задержите время на входе триггера, то выходной сигнал будет непредсказуемым в течение некоторого времени. Этот непредсказуемый результат называется метастабильным (или метастабильным).
Длинный ответ: когда результат непредсказуем, я имею в виду, что он непредсказуем. Это может быть высоко, это может быть низко, это может быть где-то посередине, или это может колебаться. После этого метастабильного периода выход будет высоким или низким, но мы не знаем, каким образом он пойдет, пока не произойдет.
Время, которое это непредсказуемо, несколько предсказуемо, как бы то ни было. Есть два основных фактора, которые определяют продолжительность метастабильного периода: скорость триггера и то, насколько «близко к краю» вы получили время.
Большинство метастабильных времен довольно коротки, хотя вероятность долгого времени не равна нулю. Теоретически вы могли бы иметь метастабильное время порядка секунд, хотя шансы на это невероятно редки. Когда скорость триггера увеличивается, среднее метастабильное время уменьшается - при прочих равных условиях.
В триггере есть «воображаемое» время относительно фронта часов, когда вы наиболее подвержены проблемам метастабильности. Точно, когда это происходит, зависит от множества факторов, таких как температура, напряжение, процесс, фаза луны, жертвы животных и то, с какой политической партией вы состоите. Когда бы это время не было, чем ближе ваш край ввода данных к этому времени, тем больше будет время метастабильности.
Лучший способ справиться с метастабильностью - это сделать всю логику синхронной и не нарушать время установки и удержания. Это, конечно, трудно или невозможно для схем любой сложности. Поэтому мы пытаемся ограничить места, где может возникнуть проблема с метастабильностью, а затем разобраться с этими местами.
Нормальным методом было бы «удвоить время» данных. То есть иметь два D-триггера последовательно с выходом первого, подающего на вход второго. Есть надежда, что если первый триггер станет метастабильным, то метастабильный период закончится, прежде чем он нарушит время установки / удержания второго. На практике это работает довольно хорошо. В сверхкритических приложениях может происходить «тройное тактирование».
источник
Метастабильное состояние похоже на неустойчивое равновесие. Распространенным примером неустойчивого равновесия является перевернутый маятник . Если вы можете сбалансировать маятник в вертикальном положении, это стабильное состояние. Однако, если что-то толкает рычаг в любую сторону (например, воздушные потоки или вибрации земли), маятник не вернется в вертикальное положение, он упадет. Контраст с обычным маятником, который, если его отодвинуть в сторону, в конце концов вернется в вертикальное положение.
Стабильные равновесия используются в электрических системах для создания элементов хранения. Нестабильная эквилибрия не делает хороших элементов хранения (поскольку они легко теряют свое состояние), но часто существует как паразитное состояние.
Обычный цифровой запоминающий элемент представляет собой пару инверторов с перекрестными связями:
Запоминающий элемент имеет два стабильных состояния: одно, где узел слева находится под напряжением питания, а узел справа - на земле, а другое - в противоположном состоянии. Существует также нестабильное состояние, в котором каждый узел находится под некоторым промежуточным напряжением.
Чтобы лучше понять, как возникает нестабильное состояние, вспомним передаточную функцию для инвертора. График передаточной функции показывает выходное напряжение инвертора для заданного входного напряжения.
Инвертор нелинейный; Один простой способ получить приближенное решение нелинейной схемы - построить характеристики схемы; пересечения графиков представляют собой решения или, другими словами, точки, в которых выполняются электрические характеристики всех компонентов схемы. Обычно это делается с помощью 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). Как только он находится в метастабильном состоянии, он может оставаться там бесконечно (при условии, что защелка снова не синхронизируется), но, поскольку это неустойчивое равновесие, обычно что-то происходит относительно быстро, чтобы выбить его из метастабильного состояния.
Когда беспокоиться о метастабильности
Если ваши элементы хранения становятся метастабильными, то вы, по крайней мере, теряете часть временного бюджета для последующей логики. Логика не может выполнить желаемую оценку, пока не разрешится метастабильное состояние. В худшем случае метастабильное состояние сохраняется или распространяется через логику, и нисходящие элементы хранения также становятся метастабильными, или несколько связанных элементов хранения захватывают несовместимые значения.
Правильно спроектированная и функционирующая синхронная логика не имеет проблем с метастабильностью. Тактовый период длиннее, чем время оценки для логики, все триггерные входы стабильны на следующем фронте тактового сигнала (требование установки выполнено), и все они загружают действительное значение.
Некоторые из распространенных ситуаций, в которых проблема метастабильности:
источник
Метастабильный сигнал - это сигнал, который может произвольно казаться высоким или низким в любом произвольном паттерне в течение некоторого произвольного отрезка времени. Если сигнал подает несколько ворот прямо или косвенно , возможно, что некоторые из этих ворот «увидят» его высоко, а другие увидят его низко. Противные вещи.
Для систем с одним тактовым сигналом метастабильные сигналы часто можно обрабатывать, проходя через две защелки. Более сложная проблема возникает при стробировании часов. Существует много схем (особенно с использованием RS-защелок), которые чудесно работали бы, если бы метастабильность была невозможна, но которые могли бы, в случае возникновения метастабильности, приводить к генерации тактовых импульсов (которые, в свою очередь, могли вызывать метастабильность в нисходящем направлении).
Между прочим, еще один важный момент, касающийся метастабильности: время распространения защелки показывает, когда, если время выборки и время выдержки соблюдены , выходной сигнал будет стабильным при новом значении. Если время настройки и удержания не соблюдено, нет никакой гарантии относительно того, будет или когда выход переключится или не переключится, до тех пор, пока защелка не получит действительное событие синхронизации. Даже если выход «переключается», нет гарантии, что он самопроизвольно не переключится обратно.
источник
Классический случай - если вы нарушаете время установки / удержания для синхронной защелки, и это проблема, о которой вы должны знать при проектировании FPGA (я уверен, что Xilinx и Altera будут иметь примечания по этому поводу). Если сигнал может появиться в любое случайное время, вы никогда не можете быть уверены, что когда вы его синхронизируете, он не изменится в пределах спецификации окна времени установки / удержания. То, что может произойти, - вместо того, чтобы выходной сигнал защелки становился высоким или низким в указанное время после фронта тактового сигнала, он может некоторое время колебаться перед установкой в стабильном состоянии. Обычный способ предотвратить это - использовать двухступенчатую защелку с одинаковыми или задержанными или несинфазными тактовыми сигналами в зависимости от баланса между вашими требованиями к задержке и вероятностью метастабильности. Это позволяет стабилизировать время первой защелки до того, как вторая защелка зафиксирует устойчивое состояние. Между прочим, Это то, с чем микроконтроллерам приходится иметь дело внутренне, поскольку внешние сигналы ввода / вывода обычно асинхронны с тактовой частотой процессора, поэтому порты ввода / вывода часто имеют двойную блокировку, чтобы избежать проблем, и программному обеспечению не нужно беспокоиться об этом , Смутно вспомнить чтение много лет назад о проблеме с 6502, когда чтение шины данных, которые изменились вне спецификации времени установки / удержания, могло вызвать переход к адресу, который не был ни целью перехода, ни следующей инструкцией, как некоторые внутренние состояние стало метастабильным. Это видео показывает несколько примеров: Смутно вспомнить чтение много лет назад о проблеме с 6502, когда чтение шины данных, которые изменились вне спецификации времени установки / удержания, могло привести к переходу по адресу, который не был ни целью перехода, ни следующей инструкцией, как некоторые внутренние состояние стало метастабильным. Это видео показывает несколько примеров: Смутно вспомнить чтение много лет назад о проблеме с 6502, когда чтение шины данных, которые изменились вне спецификации времени установки / удержания, могло вызвать переход к адресу, который не был ни целью перехода, ни следующей инструкцией, как некоторые внутренние состояние стало метастабильным. Это видео показывает несколько примеров:http://www.youtube.com/watch?v=tKHCwjWMMyg
Аналогия в том, что если вы бросаете кому-то мяч - он в большинстве случаев либо ловит его, либо бросает / пропускает его, поэтому через некоторое время после броска он будет либо удерживать его, либо нет. Но иногда они некоторое время возятся, прежде чем поймать или уронить его, поэтому их состояние не удерживается и не сбрасывается - это метастабильное состояние!
источник