D-триггер (DFF)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| D | bit | Вход данных |
| Clock | bit | Тактовый сигнал: запись по фронту 0→1 |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Q | bit | Сохранённое значение |
Логика работы
Представь фотовспышку: пока кнопка не нажата, сцена может меняться как угодно, но на снимок попадает ровно один кадр. D-триггер работает так же: между «вспышками» он просто держит на выходе Q последний снимок входа D. Это и есть память в чистом виде — ни вентили, ни провода ничего не помнят, а DFF помнит.
Главное свойство: значение D фиксируется строго в момент фронта такта — перехода Clock из 0 в 1. Всё, что происходит на D между фронтами, триггер игнорирует. Пусть на первом такте D = 1 — после фронта Q = 1; на втором такте D = 0 — после фронта Q = 0; а на третьем D дёрнулся в 1 уже после фронта — Q останется равным 0 до следующего такта.
Нюанс: внутри DFF — четыре NAND-вентиля, соединённые в пару защёлок master-slave. Пока одна защёлка принимает данные, вторая закрыта, поэтому «гонки» невозможны: прозрачной передачи нет, и на выход попадает ровно то значение, которое было на D в мгновение фронта.
Примеры (последовательность тактов)
| Такт (фронт Clock) | D в момент фронта | Q после фронта |
|---|---|---|
| 1 | 1 | 1 — единица записана |
| 2 | 0 | 0 — записан ноль |
| 3 | 1 (изменился уже после фронта) | 0 — прежнее значение сохранено |
| 4 | 1 | 1 — записана новая единица |
Обрати внимание на такт 3: изменение D после фронта не влияет на выход — фронт уже прошёл.
Применение
Уровень 11 — первое знакомство с памятью. Из D-триггеров собирается вся тактируемая часть компьютера: восемь DFF на общем Clock образуют 8-битный регистр (уровень 12), а триггеры живут и внутри счётчика команд, и внутри индексного регистра. Осознание, которое даёт этот уровень: один DFF = один бит памяти.
Конкретное применение — «задержка на такт» и хранение флага: подай на D результат сравнения, и Q будет стабильно держать его до следующего такта, как бы ни дёргался вход. Именно так процессор запоминает бит нуля, а схемы управления решают, выполнять ли переход.
Смежные компоненты
Статьи по теме
Частые вопросы
Чем DFF отличается от защёлки?
Защёлка реагирует на уровень сигнала, DFF — на фронт такта: значение фиксируется в момент перехода Clock из 0 в 1.
Что хранит DFF между тактами?
Последнее записанное значение — один бит памяти, который обновляется только по фронту Clock.
Что будет, если Clock постоянно держать в 1?
Ничего: фронтов больше нет, и Q навсегда сохранит последнее записанное значение. Новая запись случится только после спада и следующего фронта.
Почему DFF называют «одним битом памяти»?
Потому что он хранит ровно один бит до следующего фронта такта. Восемь таких триггеров, соединённых параллельно, дают один байт — то есть регистр.