Skip to main content

28. ALU: Сборка

28. ALU: Сборка

🎯 Цель урока
Собрать работающий 4-битный ALU с операциями ADD, SUB, AND, OR.

🔧 Компоненты

КомпонентКоличествоНазначение
74HC28314-бит сумматор
74HC861XOR (для SUB)
74HC081AND
74HC321OR
74HC1572MUX 2:1 (×4)
DIP-переключатель 4-поз2Входы A, B
DIP-переключатель 2-поз1Код операции
LED5Результат + флаги

📐 Схема ALU

Этап 1: Арифметический блок

    B[3:0] ───────────────────────────────────┐
    Op[0] ─────┬──────┬──────┬──────┐         │
    (SUB)      │      │      │      │         │
               ▼      ▼      ▼      ▼         │
           ┌──────────────────────────┐       │
           │      74HC86 (XOR)        │       │
           │  B⊕Op[0] = B (ADD)       │       │
           │  B⊕Op[0] = ~B (SUB)      │       │
           └────────────┬─────────────┘       │
                        │                     │
                        ▼                     │
    A[3:0] ─────────────────────┐             │
                                │             │
           ┌────────────────────┼─────────────┘
           │                    │
           ▼                    ▼
    ┌─────────────────────────────────┐
    │         74HC283                 │
    │         Adder                   │
    │                                 │
    │  A ──► A    Sum ──► Arith_Out   │
    │  B⊕Op ► B                       │
    │  Op[0] ► Cin  Cout ──► Carry    │
    └─────────────────────────────────┘

Соединения арифметического блока

74HC86 (XOR для инверсии B):
    Pin 1 (1A) ── B0
    Pin 2 (1B) ── Op[0]
    Pin 3 (1Y) ── B0' → 74HC283 Pin 6
    
    Pin 4 (2A) ── B1
    Pin 5 (2B) ── Op[0]
    Pin 6 (2Y) ── B1' → 74HC283 Pin 2
    
    Pin 9 (3A) ── B2
    Pin 10(3B) ── Op[0]
    Pin 8 (3Y) ── B2' → 74HC283 Pin 15
    
    Pin 12(4A) ── B3
    Pin 13(4B) ── Op[0]
    Pin 11(4Y) ── B3' → 74HC283 Pin 11

74HC283 (Adder):
    A1-A4 ── A[3:0] (Pins 5,3,14,12)
    B1-B4 ── B'[3:0] от XOR (Pins 6,2,15,11)
    C0 ── Op[0] (Cin для +1 при SUB)
    Σ1-Σ4 ── Arith_Out[3:0]
    C4 ── Carry флаг

Этап 2: Логический блок

74HC08 (AND):
    A[3:0] ── Pins 1,4,9,12 (входы A)
    B[3:0] ── Pins 2,5,10,13 (входы B)
    AND_Out ── Pins 3,6,8,11 (выходы)

74HC32 (OR):
    A[3:0] ── Pins 1,4,9,12 (входы A)
    B[3:0] ── Pins 2,5,10,13 (входы B)
    OR_Out ── Pins 3,6,8,11 (выходы)

Этап 3: Мультиплексор результата

Используем два 74HC157 (каждый — 4 канала 2:1 MUX):

    Op[1] выбирает: 0 = арифметика, 1 = логика
    Op[0] выбирает: ADD/AND или SUB/OR
    
    MUX 1 (74HC157 #1):
        S ── Op[1]
        1A ── Arith_Out[0]   ┐
        1B ── Logic_Out[0]   ├─► 1Y ── Result[0]
        2A ── Arith_Out[1]   │
        2B ── Logic_Out[1]   ├─► 2Y ── Result[1]
        ...

Упрощённая схема MUX

    Op[1:0] = 00: ADD  (Arith, +)
    Op[1:0] = 01: SUB  (Arith, -)
    Op[1:0] = 10: AND  (Logic)
    Op[1:0] = 11: OR   (Logic)
    
         Arith_Out ──────────┐
         AND_Out ─────────────┼── MUX ── Result
                              │   (Op)
         OR_Out ──────────────┘

Для полной схемы нужен MUX 4:1 (из двух 74HC157):

    ┌─────────────────────────────────────────────────┐
    │  Первый уровень MUX (74HC157 #1):               │
    │    S = Op[0]                                    │
    │    ADD ──► A                                    │
    │    SUB ──► B  ──► Y ── Arith_Result             │
    │                                                 │
    │    AND ──► A                                    │
    │    OR  ──► B  ──► Y ── Logic_Result             │
    ├─────────────────────────────────────────────────┤
    │  Второй уровень MUX (74HC157 #2):               │
    │    S = Op[1]                                    │
    │    Arith_Result ──► A                           │
    │    Logic_Result ──► B  ──► Y ── Final_Result    │
    └─────────────────────────────────────────────────┘

🔧 Полная сборка

Схема соединений

    DIP A[3:0] ──┬── 74HC283 (A входы)
                 ├── 74HC08 (A входы)
                 └── 74HC32 (A входы)
    
    DIP B[3:0] ──┬── 74HC86 (для XOR с Op[0])
                 ├── 74HC08 (B входы)
                 └── 74HC32 (B входы)
    
    Op[0] (SUB) ── 74HC86 (все вторые входы)
                 └── 74HC283 C0
    
    74HC86 out ──── 74HC283 (B входы)
    
    74HC283 Σ ──── MUX (Arith input)
    74HC08 out ─┬── MUX (AND input)
    74HC32 out ─┴── MUX (OR input)
    
    Op[1] ───────── MUX Select
    
    MUX out ─────── LED × 4 (Result)
    74HC283 C4 ──── LED (Carry)

✅ Тестирование

Тест ADD (Op = 00)

ABОжиданиеResultC
0011 (3)0010 (2)501010
0111 (7)0001 (1)810000
1111 (15)0001 (1)1600001

Тест SUB (Op = 01)

ABОжиданиеResultC
0101 (5)0011 (3)200101
0011 (3)0101 (5)-211100

Тест AND (Op = 10)

ABResult
110010101000
111101010101

Тест OR (Op = 11)

ABResult
110010101110
100000011001

💡 Расширение до 8 бит

Для 8-битного ALU:

  • 2× 74HC283 (каскадом)
  • 2× 74HC86
  • 2× 74HC08
  • 2× 74HC32
  • 4× 74HC157 (или 2× 74HC257)
    A[7:0] ─── [Low ALU 4-bit] ─┬── Result[3:0]
               [High ALU 4-bit] ┴── Result[7:4]
               Carry Low → Cin High

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

Сколько микросхем в 4-битном ALU?

Ответ: 5-6 чипов (283, 86, 08, 32, 157×2)

Что подать на Cin сумматора для вычитания?

Ответ: 1 (это “+1” в формуле A + ~B + 1)

Как добавить операцию XOR в ALU?

Ответ: Добавить 74HC86 для A⊕B и расширить MUX до 8:1 (или добавить уровень)


✅ Чеклист

  • Собрал арифметический блок (ADD/SUB)
  • Собрал логический блок (AND/OR)
  • Подключил мультиплексор
  • Проверил все 4 операции

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

29. Программный счётчик →