Altifigence Academy

34 / 37 · Теория

Границы тактовых доменов и метастабильность

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

У входа другого домена нет гарантированного расстояния до фронта

Условия setupВремя предустановки (setup) — минимальное время, в течение которого входные данные должны быть стабильны до захватывающего фронта такта. При нарушении результат записи не гарантирован. Подробнее и holdВремя удержания (hold) — минимальное время, в течение которого входные данные должны оставаться стабильными после захватывающего фронта такта. Учитывайте контекст: это не то же самое, что обычное сохранение значения. Подробнее требуют достаточной устойчивости данных около приёмного фронта. Кнопка или выход независимого тактового домена имеет произвольное отношение к этому фронту, поэтому гарантировать условия всегда трудно.

В результате внутреннее состояние триггераТриггер записывает вход на заданном фронте такта и удерживает его до следующего фронта. Вход должен удовлетворять ограничениям setup и hold. Подробнее может некоторое время не определяться быстро как 0 или 1: это метастабильность. Обычная RTL-симуляция 0/1 не воспроизводит этот аналоговый эффект напрямую. Чистая тестовая диаграмма не доказывает безопасность CDC.

Две ступени — для одного бита, удерживаемого достаточно долго

SystemVerilog
module level_synchronizer (
    input  logic clk_dst,
    input  logic rst_dst,
    input  logic async_level,
    output logic synced_level
);
    logic first_stage;
    always_ff @(posedge clk_dst) begin
        if (rst_dst) begin
            first_stage  <= 1'b0;
            synced_level <= 1'b0;
        end else begin
            first_stage  <= async_level;
            synced_level <= first_stage;
        end
    end
endmodule

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

В реализации нужны подходящие инструменту и компоненту атрибуты синхронизатораСинхронизатор позволяет обрабатывать сигнал из другой временной области в принимающем тактовом домене. Многоступенчатую цепочку триггеров для одного бита нельзя без изменений применять к многобитным данным., короткие соединения между ступенями, STA- и CDC-проверки. Само наличие двух регистровРегистр хранит многобитное состояние. Синхронные регистры в этом курсе записывают определённый вход на фронте тактового сигнала. Подробнее не гарантирует нужных размещения и путей.

Асинхронный вход поступает в первую ступень, функциональная схема использует только последнюю. Время между ступенями даёт шанс установления, но не гарантирует полного исчезновения аналоговой метастабильностиМетастабильность — аналоговое состояние, в котором элемент хранения временно не устанавливается в устойчивый 0 или 1. Схема синхронизации снижает вероятность распространения этого состояния, но не сводит вероятность его возникновения к нулю..

Границы применения однобитного синхронизатора
  1. Асинхронный уровень: Фаза не связана с тактом приёмника
  2. Первый FF (риск метастабильности): Возможна метастабильность
  3. синхронизированный триггер: Захват на следующем фронте такта приёмника
  4. Функциональная схема: Используйте только последнюю ступень

Вероятность отказа уменьшается, но не становится нулевой

В одной упрощённой модели среднее время между отказами MTBF имеет тенденцию:

MTBF ∝ eTresolve/τfdstfevent\mathrm{MTBF}\ \propto\ \frac{e^{T_{\mathrm{resolve}}/\tau}}{f_{\mathrm{dst}}f_{\mathrm{event}}}

TresolveT_{\mathrm{resolve}} — время установления, τ\tau — характеристика компонента, fdstf_{\mathrm{dst}} — частота приёмного такта, feventf_{\mathrm{event}} — частота переходов асинхронного входа. Реальный расчёт требует констант конкретного компонента. Одной формулой нельзя назначить произвольной схеме «безопасность на столько-то лет».

Разным задачам нужны разные структуры

Передаваемая информацияДостаточно ли двухступенчатой синхронизации одного бита?Рассматриваемая структура
Долго удерживаемый уровеньМожно при соблюдении требований вероятности и задержкиСинхронизатор в приёмном домене
Импульс короче приёмного периодаСам импульс может быть пропущенРастяжение, toggle, handshake
Несколько битов с общим смысломБиты могут отражать разные моментыУстойчивый bus с handshake, async FIFO
Механическая кнопкаПовторные отскоки контакта — отдельная задачаСинхронизация, затем debounce

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

Дополнительное чтение: MIT OpenCourseWare — Synchronization, Metastability and Arbitration

Попробуйте сами

Приёмный такт 50 MHz, ширина входного импульса 5 ns. Гарантирует ли двухступенчатый синхронизатор обнаружение каждого импульса? Удаляет ли он дребезг кнопки?

Прочитать объяснение

Период 50 MHz равен 20 ns. Импульс 5 ns может появиться и исчезнуть между фронтами, не попав даже в первую ступень. Увеличение числа ступеней не обеспечивает сохранение импульса. Нужен контракт растяжения импульса, handshake и т.п.; дребезг кнопки требует отдельного подавления.

Выбор действует в этом браузере. Его можно изменить внизу страницы.