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

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

Кнопка, сигнал с другой платы или с другого тактового генератора меняется когда угодно, а триггер принимает решение строго по фронту такта. Если изменение попало в узкое окно вокруг фронта, триггер может на время зависнуть между нулём и единицей. Это и есть метастабильность.

Обновлено Редакция GAW

Метастабильность — неустойчивое состояние триггера, в которое он может попасть, если данные на входе изменились внутри окна времени предустановки и удержания вокруг фронта тактового сигнала. TI в записке SDYA006 описывает его так: логическое состояние не высокое и не низкое, и только шум транзисторов и наводки через некоторое время сбрасывают схему в одно из двух устойчивых состояний — какое именно, предсказать нельзя.

Откуда берётся

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

Как проявляется

По наблюдениям TI, выход метастабильного триггера может:

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

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

Насколько часто

Критическое окно, по TI, — около 10–100 пс. Для оценки TI даёт формулу среднего времени между отказами:

MTBF=1fin⋅fclk⋅td\text{MTBF} = \frac{1}{f_{in} \cdot f_{clk} \cdot t_d}

При fclk = 1 МГц, fin = 1 кГц и td = 30 пс это 33,3 с — сбой примерно раз в полминуты. С учётом времени tx, которое схема ждёт после фронта, прежде чем использовать выход, MTBF растёт экспоненциально: MTBF = exp(T · tx) / (fclk · fin · T0). Здесь T — постоянная семейства с размерностью скорости, в нс⁻¹ (у ALS, по расчёту TI, 1,02 нс⁻¹), tx — в наносекундах, T0 — постоянная в секундах; значения для разных серий TI сводит в таблицу 1. Чем больше T, тем быстрее серия выходит из метастабильности.

Синхронизатор

Стандартная защита — два триггера подряд от одного такта: первый может стать метастабильным, но у него есть целый период, чтобы успокоиться до того, как его прочитает второй. Так устроены входы портов микроконтроллеров; например, курс AVR в уроке о кнопках и подтяжке показывает, что значение вывода проходит через синхронизатор из защёлки и триггера — регистра PINxn (DS40002061B, разд. 14.2.4). Синхронизатор не заменяет подавление дребезга контактов: он борется с другим явлением.

Частые вопросы

Как защититься от метастабильности?

Поставить на асинхронный вход синхронизатор — два триггера подряд от одного такта. Если первый ушёл в метастабильное состояние, у него есть целый период такта, чтобы успокоиться, прежде чем второй прочитает его выход. TI в SDYA006 разбирает такую двухступенчатую схему; формула MTBF показывает, что время безотказной работы растёт экспоненциально с временем ожидания.

Бывает ли метастабильность в микроконтроллере?

Внутри — да, поэтому изготовители ставят синхронизаторы на входы портов. Например, у AVR значение вывода проходит через синхронизатор из защёлки и триггера регистра PINxn, что защищает от метастабильности ценой задержки чтения. Программисту об этом думать не нужно, но прочитанное значение отстаёт от вывода: по даташиту ATmega328P (DS40002061B, разд. 14.2.4) — на ½–1½ периода системного такта.

Почему метастабильность трудно поймать на осциллографе?

Потому что критическое окно, по данным TI, всего 10–100 пс, и попадание в него — редкое случайное событие. Сбой случается раз в минуты, часы или годы в зависимости от частот, и почти никогда не воспроизводится по требованию. Поэтому его исключают расчётом и схемотехникой, а не отладкой.

Источники

  1. Texas Instruments. Metastable Response in 5-V Logic Circuits, SDYA006 (February 1997) — разд. 1: при синхронизации двух систем с разной частотой триггером нарушаются время предустановки и удержания, и триггер может войти в метастабильное состояние; разд. 2: уровень не высокий и не низкий, через некоторое время шум возвращает схему в одно из двух устойчивых, но непредсказуемых состояний; на выходе — промежуточный уровень, медленный фронт (большая задержка) или ложный импульс; критическое окно — около 10–100 пс; формула (1): MTBF = 1 / (fin · fclk · td), пример: fclk = 1 МГц, fin = 1 кГц, td = 30 пс — MTBF = 33,3 с; формула (6): MTBF = exp(T · tx) / (fclk · fin · T0), где tx — время ожидания после фронта, T — постоянная семейства в 1/нс, T0 — в секундах; формула (9): для ALS T = 1,02 нс⁻¹; табл. 1 — значения T и T0 для разных семейств; более быстрые семейства выходят из метастабильного состояния быстрее; одинаковые микросхемы разных производителей заметно различаются; разд. 5: двухступенчатая синхронизация
  2. Texas Instruments. Understanding and Interpreting Standard-Logic Data Sheets, SZZA036C (December 2002, revised June 2016) — разд. 4.8.3–4.8.4: подробнее о времени предустановки и удержания — в записке SDYA006 о метастабильности
  3. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet, DS40002061B, 2020 — разд. 14.2.4: синхронизатор из защёлки и регистра PINxn нужен, чтобы избежать метастабильности, если вывод меняется около фронта внутреннего такта; изменение на выводе доходит до PINxn с задержкой от ½ до 1½ периода системного такта

Нашли ошибку?