17. Декодер 74HC138
17. Декодер 74HC138
🎯 Цель урокаПонять декодер — преобразователь двоичного адреса в выбор линии.
🧠 Теория (10 мин)
Что такое декодер?
Декодер преобразует N-битный код в $2^N$ выходных линий, из которых активна только одна.
Адрес (3 бита) Выходы (8 линий)
┌───┐ ┌─────────────────┐
│ A │ │ Y0 Y1 Y2 ... Y7 │
│ B │───Декодер────►│ ↓ │
│ C │ 3:8 │ только одна │
└───┘ │ активна! │
└─────────────────┘
Таблица истинности (3:8)
| C | B | A | Y0 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
Выходы активны в LOW (0 = выбран).
Декодер vs Мультиплексор
| MUX | Декодер |
|---|---|
| Много входов → один выход | Один вход (адрес) → много выходов |
| “Выбрать данные” | “Выбрать устройство” |
| Направление: входы → выход | Направление: адрес → выбор |
📦 Микросхема 74HC138
Распиновка
┌───────────────────┐
A ──┤ 1 16 ├── VCC
B ──┤ 2 15 ├── Y0
C ──┤ 3 74HC138 14 ├── Y1
G2A ──┤ 4 13 ├── Y2
G2B ──┤ 5 12 ├── Y3
G1 ──┤ 6 11 ├── Y4
Y7 ──┤ 7 10 ├── Y5
GND ──┤ 8 9 ├── Y6
└───────────────────┘
| Пин | Название | Описание |
|---|---|---|
| A, B, C | Address | 3 бита адреса |
| Y0-Y7 | Outputs | 8 выходов (active LOW) |
| G1 | Enable | HIGH для работы |
| G2A, G2B | Enable | LOW для работы |
Условие работы
Декодер активен когда: G1 = 1 AND G2A = 0 AND G2B = 0
Иначе все выходы = HIGH (ничего не выбрано).
🔧 Фаза 3: Собираем (20 мин)
Компоненты
| Компонент | Количество |
|---|---|
| 74HC138 | 1 |
| DIP-переключатель 3-поз | 1 |
| LED | 8 |
| Резистор 330 Ом | 8 |
Схема
Адрес:
A (Pin 1) ── DIP бит 0
B (Pin 2) ── DIP бит 1
C (Pin 3) ── DIP бит 2
Enable:
G1 (Pin 6) ── VCC (HIGH)
G2A (Pin 4) ── GND (LOW)
G2B (Pin 5) ── GND (LOW)
Выходы (с подтяжкой к VCC через LED):
Y0 (Pin 15) ── [330Ω] ── LED ── VCC
Y1 (Pin 14) ── [330Ω] ── LED ── VCC
Y2 (Pin 13) ── [330Ω] ── LED ── VCC
Y3 (Pin 12) ── [330Ω] ── LED ── VCC
Y4 (Pin 11) ── [330Ω] ── LED ── VCC
Y5 (Pin 10) ── [330Ω] ── LED ── VCC
Y6 (Pin 9) ── [330Ω] ── LED ── VCC
Y7 (Pin 7) ── [330Ω] ── LED ── VCC
💡 LED к VCCПоскольку выходы active LOW, LED подключаем между выходом и VCC (через резистор). Когда выход = LOW, LED горит!
Тестирование
| C | B | A | Адрес | Горящий LED |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | LED 0 |
| 0 | 0 | 1 | 1 | LED 1 |
| 0 | 1 | 0 | 2 | LED 2 |
| 0 | 1 | 1 | 3 | LED 3 |
| 1 | 0 | 0 | 4 | LED 4 |
| 1 | 0 | 1 | 5 | LED 5 |
| 1 | 1 | 0 | 6 | LED 6 |
| 1 | 1 | 1 | 7 | LED 7 |
💡 Применения декодера
1. Адресация памяти
Адрес [15:13] ─── Декодер ─┬── RAM (000)
├── ROM (001)
├── I/O (010)
└── ...
2. Выбор устройства
[CPU] ── Адрес ── [Декодер] ─┬── Chip Select → [RAM]
├── Chip Select → [UART]
└── Chip Select → [GPIO]
3. 7-сегментный дисплей
BCD код ─── Декодер ─── 7 сегментов
(0-9) 4:10 (a,b,c,d,e,f,g)
4. Демультиплексор
Декодер + данные = демультиплексор (один вход → много выходов).
📝 Мини-задания
✅ Чеклист
- Понимаю принцип декодирования
- Знаю распиновку 74HC138
- Собрал схему с LED-индикацией
- Понимаю enable-сигналы
