Метастабильность
Кнопка, сигнал с другой платы или с другого тактового генератора меняется когда угодно, а триггер принимает решение строго по фронту такта. Если изменение попало в узкое окно вокруг фронта, триггер может на время зависнуть между нулём и единицей. Это и есть метастабильность.
Обновлено Редакция GAW
Метастабильность — неустойчивое состояние триггера, в которое он может попасть, если данные на входе изменились внутри окна времени предустановки и удержания вокруг фронта тактового сигнала. TI в записке SDYA006 описывает его так: логическое состояние не высокое и не низкое, и только шум транзисторов и наводки через некоторое время сбрасывают схему в одно из двух устойчивых состояний — какое именно, предсказать нельзя.
Откуда берётся
Внутри D-триггера — защёлка с положительной обратной связью. Если в момент фронта разность потенциалов на её плечах почти нулевая, защёлке нечем «решить», куда упасть, и она балансирует на вершине, как шарик на гребне. В синхронной схеме, где все сигналы меняются от одного такта, setup и hold соблюдаются расчётом. Но асинхронный вход — кнопка, сигнал с другой платы, данные из другого тактового домена — рано или поздно попадёт в запрещённое окно.
Как проявляется
По наблюдениям TI, выход метастабильного триггера может:
- долго находиться между логическими уровнями;
- переключиться с большим опозданием, медленным фронтом;
- выдать короткий ложный импульс и вернуться обратно.
Схемы после него могут прочитать разные значения одного и того же сигнала, и система разойдётся во мнениях.
Насколько часто
Критическое окно, по TI, — около 10–100 пс. Для оценки TI даёт формулу среднего времени между отказами:
При 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 пс, и попадание в него — редкое случайное событие. Сбой случается раз в минуты, часы или годы в зависимости от частот, и почти никогда не воспроизводится по требованию. Поэтому его исключают расчётом и схемотехникой, а не отладкой.
Источники
- 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: двухступенчатая синхронизация
- Texas Instruments. Understanding and Interpreting Standard-Logic Data Sheets, SZZA036C (December 2002, revised June 2016) — разд. 4.8.3–4.8.4: подробнее о времени предустановки и удержания — в записке SDYA006 о метастабильности
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet, DS40002061B, 2020 — разд. 14.2.4: синхронизатор из защёлки и регистра PINxn нужен, чтобы избежать метастабильности, если вывод меняется около фронта внутреннего такта; изменение на выводе доходит до PINxn с задержкой от ½ до 1½ периода системного такта
Нашли ошибку?
Смотрите также
- Время предустановки и удержанияИнтервалы до и после фронта такта, когда данные на входе триггера не должны меняться
- D-триггерЯчейка памяти по фронту такта: таблица истинности, установка, счётный режим
- Дребезг контактовСерия переключений вместо одного при нажатии кнопки
- Цифровая логикаВентили, таблицы истинности, СДНФ, карты Карно, мультиплексор, защёлка, триггер, регистр
- Кнопки и дребезгВход с подтяжкой, чтение PIND, антидребезг опросом
- Перекос (skew)Разница задержек сигналов, которые должны переключаться одновременно