Skip to main content

21. D-триггер

21. D-триггер (D Flip-Flop)

🎯 Цель урока
Понять срабатывание по фронту — ключевую концепцию синхронных цифровых систем.

🎮 Фаза 1: Симулятор (10 мин)

Turing Complete

Пройди уровни с триггерами и тактовым сигналом.


🧠 Фаза 2: Теория (15 мин)

Защёлка vs Триггер

Защёлка (Latch)Триггер (Flip-Flop)
Level-triggeredEdge-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──┘

Как работает:

  1. CLK = 0: Master открыт (E=1), Slave закрыт (E=0)

    • Master следит за D
    • Slave хранит предыдущее Q
  2. CLK: 0→1 (фронт): Master закрывается, Slave открывается

    • Master зафиксировал D
    • Slave получает значение от Master → Q обновляется
  3. 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
        └───────────────────┘
ПинНазваниеОписание
DDataВход данных
CLKClockТактовый вход (▲ фронт)
Q, ~QOutputВыходы
~PREPresetАсинхронная установка (LOW=1)
~CLRClearАсинхронный сброс (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 ──────────┘
    
    (Может давать дребезг — несколько фронтов!)

Проверка

  1. Установи D = 1
  2. Нажми CLK (один фронт) → Q = 1
  3. Установи D = 0
  4. Q всё ещё = 1 (не изменилось без фронта!)
  5. Нажми 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. Синхронизация

Согласование асинхронного сигнала с тактовой частотой.


📝 Мини-задания

В чём разница между защёлкой и триггером?

Ответ: Защёлка срабатывает по уровню (level), триггер — по фронту (edge)

Когда D-триггер записывает данные?

Ответ: Только в момент нарастающего (или спадающего) фронта CLK

Сколько D-защёлок в схеме Master-Slave?

Ответ: 2 — одна Master, одна Slave


✅ Чеклист

  • Понимаю edge-triggered vs level-triggered
  • Знаю схему Master-Slave
  • Собрал D-триггер (из защёлок или 74HC74)
  • Понимаю роль CLK

➡️ Следующий урок

22. Регистр →