Altifigence Academy

20 / 63 · Теория

D-триггер: от уровня к фронту

Сравните моменты обновления защёлки и триггера, свяжите понятия регистра, setup и hold.

Высокий уровень такта и момент его появления различаются

ЗащёлкаЗащёлка — элемент хранения, который следует за входом, пока управляющий сигнал активен, и удерживает значение, когда он неактивен. Этим она отличается от триггера, записывающего данные только на фронте. Подробнее с высоким активным уровнем следует за D всё время CLK=1. D-триггерТриггер записывает вход на заданном фронте такта и удерживает его до следующего фронта. Вход должен удовлетворять ограничениям setup и hold. по положительному фронтуПоложительный фронт — момент перехода такта из 0 в 1. Его следует отличать от уровня, означающего весь интервал CLK=1. принимает D на переходе CLK из 0 в 1 и хранит до следующего такого фронта. Условие clk=1 само по себе не делает эти два поведения одинаковыми.

Выполните сравнение:

  1. При CLK=0 измените D на 1. Оба Q пока равны 0.
  2. Поднимите CLK до 1. Оба Q станут 1.
  3. Оставьте CLK=1 и измените D на 0. Только Q защёлки станет 0.
  4. Опустите CLK до 0, затем снова поднимите до 1. Триггер тоже захватит 0.
Два элемента хранения с разным поведением при одинаковых D и CLK

Предположим, что оба q первоначально равны 0. D-защёлка следует за D при CLK=1 и удерживает значение при CLK=0. D-триггер захватывает D только при переходе CLK из 0 в 1.

Один цикл последовательностной схемы

Когда выход Q триггера проходит через комбинационную схему и образует следующий вход D, получается переход состояния. Пусть DkD_k — вход перед фронтом, Qk+1Q_{k+1} — сохранённое состояние после него. Идеальная модель:

Qk+1=DkQ_{k+1}=D_k

Реальный выход меняется не мгновенно вместе с фронтом, а после clock-to-Q. Несколько триггеров принимают собственные входы на одном фронте, поэтому могут вычислять следующие состояния из прежних состояний друг друга. На этом основаны счётчики и сдвиговые регистрыРегистр хранит многобитное состояние. Синхронные регистры в этом курсе записывают определённый вход на фронте тактового сигнала..

От текущего состояния к следующему
  1. Текущее Q: Сохранённое состояние этого цикла
  2. Комбинационная схема: Вычислите D по Q и внешним входам
  3. Следующий положительный фронт: Запишите D при выполнении временных ограничений
  4. Новое Q: Следующее состояние на выходе после задержки clock-to-Q

Setup и hold — предпосылки выборки

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

Регистр объединяет несколько триггеров. Ширина 8 бит сама по себе не гарантирует, что восемь входных битов образуют одно согласованное значение. Нужны общие временные условия и правила передачи данных.

Начальное состояние и сброс

Начать симуляцию с Q=0 — не то же самое, что гарантированно включить оборудование с нулём. В следующей лекции добавим reset и enable, определив инициализацию и хранение. Синхронный reset действует на фронте, асинхронный — независимо от него, но требует внимания и к моменту снятия.

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

При CLK=1 вход D меняется 0→1→0, а перед следующим положительным фронтом устанавливается в 1. Когда меняются Q защёлки и триггера? Обновится ли триггер на фронте дважды?

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

Защёлка следует изменениям D всё время CLK=1. Триггер игнорирует эти изменения и один раз захватывает допустимое D=1 на следующем положительном фронте. Для реальной схемы нужно учитывать setup, hold и clock-to-Q.

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