18. 🏆 Проект: 4-битный калькулятор
🏆 Проект: 4-битный калькулятор
🎯 Цель проекта
Собрать работающий калькулятор, который складывает, вычитает и сравнивает 4-битные числа.
📋 Техническое задание
Функции калькулятора
- Сложение: A + B
- Вычитание: A - B
- Сравнение: A = B, A > B
Интерфейс
- Ввод A: DIP-переключатель 4 бита (0-15)
- Ввод B: DIP-переключатель 4 бита (0-15)
- Выбор операции: переключатель ADD/SUB
- Вывод: 5 LED (4 бита + перенос) или 7-сегментник
- Индикация: LED “равно”, LED “больше”
🏗️ Архитектура
┌─────────────────────────────────────────────────────────────────┐
│ КАЛЬКУЛЯТОР │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────────────┐ │
│ │ DIP A │──────────────────────────────┤ │ │
│ │ 4 бит │ │ 74HC283 │ │
│ └─────────┘ │ Сумматор ├──┼── Σ[3:0]
│ ┌───────┤ │ │
│ ┌─────────┐ ┌─────────┐ │ │ ├──┼── C₄
│ │ DIP B │───────┤ 74HC86 ├────┘ └────────┬────────┘ │
│ │ 4 бит │ │ XOR │ │ │
│ └─────────┘ │ (×4) │ │ │
│ └────┬────┘ │ │
│ │ │ │
│ ┌─────────┐ │ │ │
│ │ SUB/ADD │────────────┴──────────────────────────┘ │
│ └─────────┘ │ │
│ └── C₀ │
│ │
│ ┌─────────┐ ┌─────────────────┐ │
│ │ DIP A │───────┤ 74AC521 │ │
│ │ 4 бит │ │ Компаратор ├─────────────────────────┼── A=B
│ └─────────┘ │ │ │
│ ┌─────────┐ │ │ │
│ │ DIP B │───────┤ │ │
│ └─────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
🔧 Компоненты
| Компонент | Количество | Назначение |
|---|
| 74HC283 | 1 | 4-битный сумматор |
| 74HC86 | 1 | XOR для вычитания |
| 74AC521 | 1 | Компаратор |
| DIP-переключатель 4-поз | 2 | Ввод A и B |
| Переключатель | 1 | ADD/SUB |
| LED | 7 | Результат + индикаторы |
| Резистор 330 Ом | 7 | Для LED |
| Резистор 10 кОм | 8 | Подтяжки |
Опционально (улучшенная версия)
| Компонент | Количество | Назначение |
|---|
| 74HC4511 | 1 | BCD → 7-сегментник |
| 7-сегментный индикатор | 2 | Красивый вывод |
📐 Схема соединений
Часть 1: Сумматор/Вычитатель
DIP A:
A0 ── 74HC283 Pin 5 (A1)
A1 ── 74HC283 Pin 3 (A2)
A2 ── 74HC283 Pin 14 (A3)
A3 ── 74HC283 Pin 12 (A4)
DIP B через XOR:
B0 ── 74HC86 Pin 1 ─┬─ Pin 3 ── 74HC283 Pin 6 (B1)
B1 ── 74HC86 Pin 4 ─┼─ Pin 6 ── 74HC283 Pin 2 (B2)
B2 ── 74HC86 Pin 9 ─┼─ Pin 8 ── 74HC283 Pin 15 (B3)
B3 ── 74HC86 Pin 12 ┼─ Pin 11── 74HC283 Pin 11 (B4)
│
SUB ────────────────┴──────────74HC283 Pin 7 (C0)
(SUB также идёт на вторые входы всех XOR: pins 2,5,10,13)
Часть 2: Индикация
74HC283 выходы:
Σ1 (Pin 4) ── [330Ω] ── LED ── GND
Σ2 (Pin 1) ── [330Ω] ── LED ── GND
Σ3 (Pin 13) ── [330Ω] ── LED ── GND
Σ4 (Pin 10) ── [330Ω] ── LED ── GND
C4 (Pin 9) ── [330Ω] ── LED ── GND (перенос/знак)
Часть 3: Компаратор
DIP A:
A0 ── 74AC521 Pin 2 (A0)
A1 ── 74AC521 Pin 4 (A1)
A2 ── 74AC521 Pin 6 (A2)
A3 ── 74AC521 Pin 8 (A3)
DIP B:
B0 ── 74AC521 Pin 3 (B0)
B1 ── 74AC521 Pin 5 (B1)
B2 ── 74AC521 Pin 7 (B2)
B3 ── 74AC521 Pin 9 (B3)
Неиспользуемые входы:
A4-A7 (Pins 12,14,16,18) ── GND
B4-B7 (Pins 11,13,15,17) ── GND
Enable:
OE (Pin 1) ── GND
Выход:
A=B (Pin 19) ── [330Ω] ── LED ── VCC (горит когда равны)
✅ Тестирование
Тест 1: Сложение
| A | B | SUB | Ожидание | Σ (LED) | C₄ |
|---|
| 3 | 2 | 0 | 5 | 0101 | 0 |
| 7 | 8 | 0 | 15 | 1111 | 0 |
| 15 | 1 | 0 | 16 | 0000 | 1 |
Тест 2: Вычитание
| A | B | SUB | Ожидание | Σ (LED) | C₄ |
|---|
| 5 | 3 | 1 | 2 | 0010 | 1 |
| 7 | 7 | 1 | 0 | 0000 | 1 |
| 3 | 5 | 1 | -2 | 1110 | 0 |
Тест 3: Сравнение
| A | B | A=B LED |
|---|
| 5 | 5 | 🟢 Горит |
| 7 | 3 | 🔴 Не горит |
| 0 | 0 | 🟢 Горит |
🏅 Уровни сложности
⭐ Базовый
- Сложение 4-битных чисел
- LED индикация результата
⭐⭐ Средний
- Добавить вычитание (SUB)
- Добавить сравнение (A=B)
⭐⭐⭐ Продвинутый
- 7-сегментный дисплей для результата
- Индикация переполнения
- Индикация A > B
⭐⭐⭐⭐ Эксперт
- 8-битный калькулятор (две 74HC283)
- Отображение отрицательных чисел
- Выбор операции через MUX
💡 Советы по отладке
Проверяй по частям:
- Сначала только сумматор (без XOR)
- Потом добавь вычитание
- В конце компаратор
Тестируй простые случаи:
- 0 + 0 = 0
- 1 + 1 = 2
- 15 + 1 = 16 (перенос!)
Проверяй подтяжки — без них DIP-переключатели работают нестабильно
🎓 Чему научились в Акте II
| Тема | Компонент | Навык |
|---|
| Полусумматор | XOR + AND | Двоичное сложение |
| Полный сумматор | 5 вентилей | Учёт переноса |
| 4-бит сумматор | 74HC283 | Работа с готовыми чипами |
| Вычитание | XOR + сумматор | Дополнительный код |
| Компаратор | 74AC521 | Сравнение чисел |
| MUX | 74AC251 | Маршрутизация сигналов |
| Декодер | 74HC138 | Адресация |
🚀 Дальше: Акт III
В следующем акте мы добавим память:
- Защёлки и триггеры
- Регистры
- Сдвиговые регистры
Акт III: Память →
🏆 Поздравляю!
Ты завершил Акт II: Арифметика!
Прогресс курса:
━━━━━━━━━━━━━━━━━━░░░░░░░░░░░░ 53%
Акт I: ██████████ 10/10 ✓
Акт II: ██████████ 8/8 ✓
Акт III: ░░░░░░░░░░ 0/8
Акт IV: ░░░░░░░░░░ 0/8