Skip to main content

12. Полный сумматор

12. Полный сумматор

🎯 Цель урока
Построить полный сумматор, который учитывает входящий перенос.

🧠 Теория (15 мин)

Зачем нужен входящий перенос?

При сложении многоразрядных чисел каждый разряд (кроме младшего) должен учитывать перенос из предыдущего:

        C₂ C₁ C₀
          1  1      ← переносы
       0  1  1  = 3
    +  0  1  0  = 2
    ─────────────
       1  0  1  = 5

Таблица истинности полного сумматора

ABCᵢₙSCₒᵤₜДесятичное
000000+0+0 = 0
001100+0+1 = 1
010100+1+0 = 1
011010+1+1 = 2
100101+0+0 = 1
101011+0+1 = 2
110011+1+0 = 2
111111+1+1 = 3

Формулы

$$S = A \oplus B \oplus C_{in}$$$$C_{out} = (A \land B) \lor (C_{in} \land (A \oplus B))$$

Схема из двух полусумматоров

    A ───┬───────────────────────────────────┐
         │     ┌────────────┐                │
         └─────┤    XOR     ├─────┬──────────┼──────┐
               │  (A⊕B)     │     │          │      │
    B ─────────┤            │     │    ┌─────▼────┐ │
               └────────────┘     │    │   XOR    │ │
                                  │    │ (A⊕B⊕Cᵢₙ)├─┼──── S
    Cᵢₙ ──────────────────────────┼────┤          │ │
                                  │    └──────────┘ │
                                  │                 │
         ┌────────────────────────┘                 │
         │     ┌────────────┐                       │
         │     │    AND     ├───────┐               │
         └─────┤  (A⊕B)∧Cᵢₙ │       │               │
               │            │       │    ┌────────┐ │
    Cᵢₙ ───────┤            │       └────┤   OR   ├─┼── Cₒᵤₜ
               └────────────┘            │        │ │
                                    ┌────┤        │ │
    A ─────┬────┐                   │    └────────┘ │
           │    │   ┌────────────┐  │               │
           └────┼───┤    AND     ├──┘               │
                │   │   (A∧B)    │                  │
    B ──────────┘   │            │                  │
                    └────────────┘                  │

Упрощённо:

         ┌──────────┐     ┌──────────┐
    A ───┤          │     │          │
         │  Half    ├─────┤  Half    ├─── S
    B ───┤  Adder 1 │     │  Adder 2 │
         │          │  ┌──┤          │
         └────┬─────┘  │  └────┬─────┘
              │        │       │
              │    Cᵢₙ─┘       │
              │                │
              └───────┬────────┘
                   ┌──▼──┐
                   │ OR  ├─── Cₒᵤₜ
                   └─────┘

🔧 Фаза 3: Собираем (25 мин)

Компоненты

КомпонентКоличество
74HC86 (XOR)1
74HC08 (AND)1
74HC32 (OR)1
LED2
Резистор 330 Ом2
Кнопки/переключатели3

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

74HC86 (XOR):
    A ─── Pin 1 ─┬─ Pin 3 ─── Pin 4 ─┐
    B ─── Pin 2 ─┘                    ├─ Pin 6 ─── LED (S)
                      Cᵢₙ ─── Pin 5 ─┘
    
    (Pin 3 также идёт к AND)

74HC08 (AND):
    Pin 3 (A⊕B) ─── Pin 1 ─┬─ Pin 3 ─── 74HC32 Pin 1
    Cᵢₙ ─────────── Pin 2 ─┘
    
    A ─── Pin 4 ─┬─ Pin 6 ─── 74HC32 Pin 2
    B ─── Pin 5 ─┘

74HC32 (OR):
    AND out 1 ─── Pin 1 ─┬─ Pin 3 ─── LED (Cₒᵤₜ)
    AND out 2 ─── Pin 2 ─┘

Проверка (все 8 комбинаций)

ABCᵢₙS (LED)Cₒᵤₜ (LED)
000🔴🔴
001🟢🔴
010🟢🔴
011🔴🟢
100🟢🔴
101🔴🟢
110🔴🟢
111🟢🟢

💡 Каскадирование

Для N-битного сумматора соединяем N полных сумматоров:

    A₀ B₀       A₁ B₁       A₂ B₂       A₃ B₃
     │  │        │  │        │  │        │  │
     ▼  ▼        ▼  ▼        ▼  ▼        ▼  ▼
   ┌─────┐     ┌─────┐     ┌─────┐     ┌─────┐
0──┤ FA  ├────►┤ FA  ├────►┤ FA  ├────►┤ FA  ├──► Cₒᵤₜ
   │  0  │     │  1  │     │  2  │     │  3  │
   └──┬──┘     └──┬──┘     └──┬──┘     └──┬──┘
      │           │           │           │
      ▼           ▼           ▼           ▼
      S₀          S₁          S₂          S₃

Это Ripple Carry Adder — сумматор со сквозным переносом.


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

Сколько вентилей в полном сумматоре?

Ответ: 2 XOR + 2 AND + 1 OR = 5 вентилей

Чему равно 1 + 1 + 1 в двоичной?

Ответ: 11₂ = 3 (S=1, Cₒᵤₜ=1)

Сколько полных сумматоров нужно для 8-битного сложения?

Ответ: 8 штук (по одному на разряд)


✅ Чеклист

  • Понимаю роль Cᵢₙ
  • Знаю формулы S и Cₒᵤₜ
  • Собрал полный сумматор
  • Проверил все 8 комбинаций

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

13. 4-бит сумматор 74HC283 →