Skip to main content

20. D-защёлка

20. D-защёлка

🎯 Цель урока
Понять D-защёлку — память без запрещённых состояний.

🧠 Теория (15 мин)

Проблема SR-защёлки

  1. Два входа — сложно управлять
  2. Запрещённое состояние S=1, R=1 — источник ошибок
  3. Нет контроля — данные записываются сразу при изменении S или R

Решение: D-защёлка

Идея: Один вход данных D (Data), один вход разрешения E (Enable).

    D ───┬─────────────────► S ───┐
         │                        │
         │    ┌───────┐          SR-
         │    │  NOT  │          защёлка ──► Q
         │    └───┬───┘          │
         │        │              │
         └────────┴──────────► R ─┘
              (через NOT)

Ключевая идея: S = D, R = NOT(D) — они никогда не равны 1 одновременно!

С добавлением Enable

         ┌─────────────────────────────────────┐
         │                                     │
    D ───┼──┬─────────────┤AND├─► S ───┐       │
         │  │                         │       │
         │  │   ┌───────┐            SR-      │
         │  │   │  NOT  │            защёлка ─┴─► Q
         │  │   └───┬───┘            │
         │  │       │                │
         │  └───────┴────┤AND├─► R ──┘
         │               │
    E ───┴───────────────┘

Таблица истинности

EDQ (следующее)Действие
0XQ (без изменений)Хранение
100Запись 0
111Запись 1

X означает “не важно” (don’t care).

Временная диаграмма

    E    ▁▁▁███▁▁▁███▁▁▁▁▁▁███▁▁▁
    
    D    ▁▁▁▁▁███████▁▁▁███▁▁▁▁▁▁
    
    Q    ▁▁▁▁▁▁███████████▁▁▁▁▁▁▁
              ↑        ↑
              │        │
         E=1, D=1   E=1, D=0
         записали   записали

Пока E=1, Q следует за D (защёлка “прозрачна”). Когда E=0, Q хранит последнее значение.


🔧 Фаза 3: Собираем (25 мин)

Компоненты

КомпонентКоличество
74HC00 (NAND)1
74HC04 (NOT)1
Кнопки/переключатели2 (D и E)
LED1
Резисторыпо необходимости

Схема на NAND

D-защёлка на 4 вентилях NAND:

         ┌────────────────────────────────────┐
         │                                    │
    D ───┼───┤NAND├──┬──┤NAND├──┬────────────┴── Q
         │     │     │          │
    E ───┼─────┤     │          │
         │           │          │
         │     ┌─────┘          │
         │     │                │
         └─────┼──┤NAND├──┬──┤NAND├── ~Q
               │    │     │      │
    E ─────────┘    │     │      │
                    │     │      │
                    └─────┴──────┘

Пошаговая сборка

74HC00 — 4 вентиля NAND:

        ┌───────────────────┐
   1Y ──┤ 1          14 ├── VCC
   1A ──┤ 2          13 ├── 4B
   1B ──┤ 3   74HC00  12 ├── 4A
   2Y ──┤ 4          11 ├── 4Y
   2A ──┤ 5          10 ├── 3B
   2B ──┤ 6           9 ├── 3A
  GND ──┤ 7           8 ├── 3Y
        └───────────────────┘

Соединения:

Вентиль 1 (Pin 1,2,3):
    Pin 2 ── D
    Pin 3 ── E
    Pin 1 ── выход → Pin 5 (вентиль 2) и Pin 12 (вентиль 4)

Вентиль 2 (Pin 4,5,6):
    Pin 5 ── Pin 1 (от вентиля 1)
    Pin 6 ── Pin 8 (от вентиля 3)
    Pin 4 ── Q ── LED

Вентиль 3 (Pin 8,9,10):
    Pin 9 ── D (через NOT — используй 74HC04!)
    Pin 10 ── E
    Pin 8 ── выход → Pin 6 и Pin 13

Вентиль 4 (Pin 11,12,13):
    Pin 12 ── Pin 1 (от вентиля 1)
    Pin 13 ── Pin 8 (от вентиля 3)
    Pin 11 ── ~Q

Проверка

EDОжиданиеLED Q
00ХранениеБез изменений
01ХранениеБез изменений
10Запись 0🔴 Не горит
11Запись 1🟢 Горит

Эксперимент:

  1. E=1, D=1 → LED горит
  2. E=0 → LED продолжает гореть (хранение!)
  3. D=0 (E всё ещё =0) → LED всё равно горит (D игнорируется)
  4. E=1 → LED гаснет (записали D=0)

💡 Проблема “прозрачности”

Когда E=1, защёлка прозрачна — любое изменение D сразу появляется на Q.

    E = 1 (постоянно)
    D    ▁▁███▁██▁▁███▁▁
    Q    ▁▁███▁██▁▁███▁▁   ← Q повторяет D!

Это проблема в синхронных схемах!

Решение — триггер (D flip-flop), который фиксирует данные только по фронту тактового сигнала.


📦 Готовая микросхема 74HC75

74HC75 содержит 4 D-защёлки:

        ┌───────────────────┐
  ~1Q ──┤ 1          16 ├── 1Q
   1D ──┤ 2          15 ├── 2Q
   2D ──┤ 3   74HC75  14 ├── ~2Q
  E12 ──┤ 4          13 ├── E34
  VCC ──┤ 5          12 ├── GND
   3D ──┤ 6          11 ├── 4D
  ~3Q ──┤ 7          10 ├── ~4Q
   3Q ──┤ 8           9 ├── 4Q
        └───────────────────┘

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

Сколько входов у D-защёлки?

Ответ: 2 — D (данные) и E (enable/разрешение)

Что происходит когда E=0?

Ответ: Защёлка хранит последнее записанное значение, D игнорируется

Почему D-защёлка не имеет запрещённого состояния?

Ответ: Потому что S = D и R = NOT(D) — они не могут быть оба =1


✅ Чеклист

  • Понимаю как D-защёлка устраняет запрещённое состояние
  • Знаю роль сигнала Enable
  • Собрал D-защёлку
  • Понимаю проблему “прозрачности”

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

21. D-триггер →