21. D-триггер
21. D-триггер (D Flip-Flop)
🎯 Цель урокаПонять срабатывание по фронту — ключевую концепцию синхронных цифровых систем.
🎮 Фаза 1: Симулятор (10 мин)
Turing Complete
Пройди уровни с триггерами и тактовым сигналом.
🧠 Фаза 2: Теория (15 мин)
Защёлка vs Триггер
| Защёлка (Latch) | Триггер (Flip-Flop) |
|---|---|
| Level-triggered | Edge-triggered |
| Прозрачна при E=1 | Срабатывает только по фронту |
| Чувствительна к глитчам | Защищена от глитчей |
Фронт тактового сигнала
CLK ▁▁▁▁████▁▁▁▁████▁▁▁▁████▁▁▁▁
↑ ↑ ↑
Нарастающий Rising Rising
фронт edge edge
↓ ↓ ↓
Спадающий Falling Falling
фронт edge edge
D-триггер захватывает D только в момент фронта CLK!
Временная диаграмма
CLK ▁▁▁▁█▁▁▁█▁▁▁█▁▁▁█▁▁▁█▁▁▁▁
↑ ↑ ↑ ↑ ↑
D ▁▁▁▁▁▁███████▁▁▁▁▁▁█████
↑ ↑ ↑ ↑ ↑
Q ▁▁▁▁▁▁▁▁▁████████▁▁▁▁▁██
↑ ↑ ↑
здесь здесь здесь
D=1 D=0 D=1
Схема Master-Slave
D-триггер = две D-защёлки с инвертированными тактовыми сигналами:
┌─────────────┐ ┌─────────────┐
D ───┤ Master ├──────┤ Slave ├─── Q
│ D-Latch │ │ D-Latch │
│ │ │ │
CLK ──┤►o E │ ┌───┤ E │
└─────────────┘ │ └─────────────┘
│
NOT──┘
Как работает:
CLK = 0: Master открыт (E=1), Slave закрыт (E=0)
- Master следит за D
- Slave хранит предыдущее Q
CLK: 0→1 (фронт): Master закрывается, Slave открывается
- Master зафиксировал D
- Slave получает значение от Master → Q обновляется
CLK = 1: Master закрыт, Slave открыт
- Изменения D не влияют на Q
Символ D-триггера
┌─────────────┐
D ───┤ ├─── Q
│ D │
CLK ──┤► ├─── ~Q
│ │
└─────────────┘
► означает edge-triggered
🔧 Фаза 3: Собираем (25 мин)
Вариант 1: Из защёлок
Используй две D-защёлки (74HC75 или собранные на NAND):
D ────────────────┤ Master D-Latch ├────┤ Slave D-Latch ├── Q
│ │ │ │
CLK ──┬───────────┤ E │ │ E │
│ └────────────────┘ └────────────────┘
│ ▲
└────────────────┤NOT├───────────────────┘
Вариант 2: Микросхема 74HC74
74HC74 — два D-триггера с асинхронными Set/Reset:
┌───────────────────┐
~1CLR ┤ 1 14 ├── VCC
1D ──┤ 2 13 ├── ~2CLR
1CLK ──┤ 3 74HC74 12 ├── 2D
~1PRE ──┤ 4 11 ├── 2CLK
1Q ───┤ 5 10 ├── ~2PRE
~1Q ───┤ 6 9 ├── 2Q
GND ───┤ 7 8 ├── ~2Q
└───────────────────┘
| Пин | Название | Описание |
|---|---|---|
| D | Data | Вход данных |
| CLK | Clock | Тактовый вход (▲ фронт) |
| Q, ~Q | Output | Выходы |
| ~PRE | Preset | Асинхронная установка (LOW=1) |
| ~CLR | Clear | Асинхронный сброс (LOW=0) |
Схема с 74HC74
D ──────── Pin 2 (1D)
CLK ────── Pin 3 (1CLK)
~PRE ───── Pin 4 ── VCC (не используем preset)
~CLR ───── Pin 1 ── VCC (не используем clear)
Q ──────── Pin 5 ── LED
~Q ─────── Pin 6 ── LED (опционально)
Генератор тактового сигнала
Для тестирования используй кнопку с дебаунсингом или 555-таймер:
Простейший вариант — кнопка:
VCC ──[10kΩ]──┬── CLK
│
[кнопка]
│
GND ──────────┘
(Может давать дребезг — несколько фронтов!)
Проверка
- Установи D = 1
- Нажми CLK (один фронт) → Q = 1
- Установи D = 0
- Q всё ещё = 1 (не изменилось без фронта!)
- Нажми CLK → Q = 0
💡 Применения D-триггера
1. Регистр
N триггеров параллельно = N-битный регистр:
D₀ ── [D-FF] ── Q₀
D₁ ── [D-FF] ── Q₁
D₂ ── [D-FF] ── Q₂
D₃ ── [D-FF] ── Q₃
│
CLK ───┴─────────── (общий такт)
2. Счётчик
D-триггер с обратной связью ~Q → D:
┌────────────────┐
│ │
│ ┌────────┐ │
└───┤ D Q ├───┴─── выход
│ │
CLK ─┤► │
└────────┘
Каждый фронт CLK переключает Q!
3. Синхронизация
Согласование асинхронного сигнала с тактовой частотой.
📝 Мини-задания
✅ Чеклист
- Понимаю edge-triggered vs level-triggered
- Знаю схему Master-Slave
- Собрал D-триггер (из защёлок или 74HC74)
- Понимаю роль CLK
