30. Шина данных
30. Шина данных
🎯 Цель урокаПонять шинную архитектуру — как компоненты процессора обмениваются данными.
🧠 Фаза 2: Теория (20 мин)
Проблема: как соединить всё?
Без шины: С шиной:
[ALU]───[Reg A] [ALU]
│ ╲ ╱ │ │
│ ╲ ╱ │ ═══════════ BUS
│ ╳ │ │ │ │ │
│ ╱ ╲ │ [Reg][Reg][PC][Mem]
[Reg B]──[PC]
O(n²) проводов! O(n) проводов!
Шинная архитектура
Шина (Bus) — общий набор проводов для передачи данных между компонентами.
┌──────────────────────────────────────────────────────────┐
│ DATA BUS (8 бит) │
└──────────────────────────────────────────────────────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ ALU │ │ Reg A │ │ Reg B │ │ PC │ │ RAM │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
Правило шины
Только один источник может выводить данные на шину в любой момент!
Иначе — короткое замыкание (если оба выдают разные уровни).
Tri-State (третье состояние)
Обычный выход: Tri-State выход:
┌───┐ ┌───┐
│ ├── 0 или 1 │ ├── 0, 1 или Z
└───┘ └─┬─┘
│
OE (Output Enable)
Z = высокоимпедансное состояние (отключён)
Буфер с тремя состояниями
74HC245 — 8-битный двунаправленный буфер:
┌───────────────────┐
OE ─┤ │
│ A ◄────────► B │
DIR ─┤ │
└───────────────────┘
OE = 0: буфер активен
OE = 1: выходы в Z-состоянии
DIR: направление (A→B или B←A)
🏗️ Типичные шины
1. Шина данных (Data Bus)
Передаёт данные между компонентами.
- Обычно 8, 16, 32, 64 бита
- Двунаправленная
2. Шина адреса (Address Bus)
Указывает, к какой ячейке памяти обращаемся.
- Обычно 16, 20, 32 бита
- Однонаправленная (CPU → Memory)
3. Шина управления (Control Bus)
Сигналы управления: Read, Write, Clock и т.д.
┌─────────────────────────────────────────────────────────┐
│ ADDRESS BUS (16 бит) │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ DATA BUS (8 бит) │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ CONTROL BUS (RD, WR, CLK, RST, ...) │
└─────────────────────────────────────────────────────────┘
🔧 Фаза 3: Собираем шину (25 мин)
Компоненты
| Компонент | Количество | Назначение |
|---|---|---|
| 74HC245 | 2-3 | Tri-state буферы |
| 74ACT377 | 2 | Регистры |
| LED | 8 | Индикация шины |
| Резистор 10 кОм | 8 | Подтяжки |
| DIP-переключатель 8-поз | 2 | Источники данных |
Распиновка 74HC245
┌───────────────────┐
DIR ──┤ 1 20 ├── VCC
A1 ──┤ 2 19 ├── ~OE
A2 ──┤ 3 74HC245 18 ├── B1
A3 ──┤ 4 17 ├── B2
A4 ──┤ 5 16 ├── B3
A5 ──┤ 6 15 ├── B4
A6 ──┤ 7 14 ├── B5
A7 ──┤ 8 13 ├── B6
A8 ──┤ 9 12 ├── B7
GND ──┤ 10 11 ├── B8
└───────────────────┘
| Пин | Описание |
|---|---|
| A1-A8 | Сторона A |
| B1-B8 | Сторона B |
| DIR | Направление: 1=A→B, 0=B→A |
| ~OE | Output Enable (LOW=активен) |
Схема шины
DATA BUS (8 проводов)
═══════════════════════════════════════════════════
│ │ │ │
│ │ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ 74HC245 │ │ 74HC245 │ │ 74HC245 │ │ 74HC245 │
│ REG A │ │ REG B │ │ INPUT │ │ OUTPUT │
│ Buffer │ │ Buffer │ │ Buffer │ │ Buffer │
└────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘
│ │ │ │
~OE_A ~OE_B ~OE_IN ~OE_OUT
Правило: только один ~OE = LOW в любой момент!
Управление шиной
Декодер команд генерирует сигналы:
Команда "Загрузить из A":
~OE_A = 0
~OE_B = 1
~OE_IN = 1
Данные из Reg A появляются на шине
Команда "Загрузить из INPUT":
~OE_A = 1
~OE_B = 1
~OE_IN = 0
Данные с переключателей на шине
Подтяжки на шине
Когда все буферы отключены (Z-состояние),
шина должна иметь определённый уровень:
DATA BUS
│
[10kΩ] ─── VCC (подтяжка к HIGH)
│
[10kΩ]
│
...
Или к GND (подтяжка к LOW)
💡 Протокол обмена
Запись в регистр
Время ─────────────────────────────────────────►
CLK ___________╱╲____________╱╲____________
~OE_X ────────╲______________________________
(источник выдаёт данные)
BUS ─────────────╱ ДАННЫЕ ╲────────────────
REG_EN ───────────────────╲___________╱───────
(регистр захватывает по CLK)
Чтение из памяти
1. Выставить адрес на ADDRESS BUS
2. Активировать ~RD (Read)
3. Память выдаёт данные на DATA BUS
4. Регистр-приёмник захватывает данные
5. Деактивировать ~RD
📝 Мини-задания
✅ Чеклист
- Понимаю преимущества шинной архитектуры
- Знаю принцип tri-state
- Собрал шину с несколькими источниками
- Проверил управление ~OE сигналами
