Skip to main content

18. 🏆 Проект: 4-битный калькулятор

🏆 Проект: 4-битный калькулятор

🎯 Цель проекта
Собрать работающий калькулятор, который складывает, вычитает и сравнивает 4-битные числа.

📋 Техническое задание

Функции калькулятора

  1. Сложение: A + B
  2. Вычитание: A - B
  3. Сравнение: 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  │───────┤                 │                         │
│   └─────────┘       └─────────────────┘                         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

🔧 Компоненты

КомпонентКоличествоНазначение
74HC28314-битный сумматор
74HC861XOR для вычитания
74AC5211Компаратор
DIP-переключатель 4-поз2Ввод A и B
Переключатель1ADD/SUB
LED7Результат + индикаторы
Резистор 330 Ом7Для LED
Резистор 10 кОм8Подтяжки

Опционально (улучшенная версия)

КомпонентКоличествоНазначение
74HC45111BCD → 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: Сложение

ABSUBОжиданиеΣ (LED)C₄
320501010
7801511110
15101600001

Тест 2: Вычитание

ABSUBОжиданиеΣ (LED)C₄
531200101
771000001
351-211100

Тест 3: Сравнение

ABA=B LED
55🟢 Горит
73🔴 Не горит
00🟢 Горит

🏅 Уровни сложности

⭐ Базовый

  • Сложение 4-битных чисел
  • LED индикация результата

⭐⭐ Средний

  • Добавить вычитание (SUB)
  • Добавить сравнение (A=B)

⭐⭐⭐ Продвинутый

  • 7-сегментный дисплей для результата
  • Индикация переполнения
  • Индикация A > B

⭐⭐⭐⭐ Эксперт

  • 8-битный калькулятор (две 74HC283)
  • Отображение отрицательных чисел
  • Выбор операции через MUX

💡 Советы по отладке

  1. Проверяй по частям:

    • Сначала только сумматор (без XOR)
    • Потом добавь вычитание
    • В конце компаратор
  2. Тестируй простые случаи:

    • 0 + 0 = 0
    • 1 + 1 = 2
    • 15 + 1 = 16 (перенос!)
  3. Проверяй подтяжки — без них DIP-переключатели работают нестабильно


🎓 Чему научились в Акте II

ТемаКомпонентНавык
ПолусумматорXOR + ANDДвоичное сложение
Полный сумматор5 вентилейУчёт переноса
4-бит сумматор74HC283Работа с готовыми чипами
ВычитаниеXOR + сумматорДополнительный код
Компаратор74AC521Сравнение чисел
MUX74AC251Маршрутизация сигналов
Декодер74HC138Адресация

🚀 Дальше: Акт III

В следующем акте мы добавим память:

  • Защёлки и триггеры
  • Регистры
  • Сдвиговые регистры
Акт III: Память →

🏆 Поздравляю!

Ты завершил Акт II: Арифметика!

Прогресс курса:
━━━━━━━━━━━━━━━━━━░░░░░░░░░░░░ 53%

Акт I:   ██████████ 10/10 ✓
Акт II:  ██████████  8/8  ✓
Акт III: ░░░░░░░░░░  0/8
Акт IV:  ░░░░░░░░░░  0/8