⚡ Електроніка · Архітектура комп'ютерів
📅 Березень 2026 ⏱ ≈ 10 хв читання 🟡 Середній · Останнє оновлення: 28 травня 2026 р.

Логічні вентилі та булева алгебра

Кожне обчислення, яке виконує комп'ютер — додавання чисел, порівняння значень, ухвалення розгалужень — зводиться до одного: маніпулювання окремими бітами за допомогою простих логічних вентилів. Зрозуміти вентилі означає зрозуміти фізичну основу кожного процесора, відеокарти й мікроконтролера, що будь-коли створювалися.

Чому двійкова система?

Транзистор — це перемикач, керований напругою: він або увімкнений (проводить, висока напруга ≈ 3,3 В), або вимкнений (не проводить, ≈ 0 В). Це природно відображається на два стани: 1 і 0, істина та хиба, HIGH і LOW.

Проєктування електроніки під десять стабільних рівнів напруги (десяткова система) вимагало б значно більшої точності й було б набагато чутливішим до шуму. Двійкова система максимально стійка до шуму: різниця між 0 і 1 може становити сотні мілівольт, і все, що нижче порога, упевнено читається як LOW.

Базові вентилі: AND, OR, NOT, XOR

Логічний вентиль приймає один чи два двійкові входи й видає двійковий вихід за детермінованим правилом, зафіксованим у таблиці істинності.

AND
A · B (також записують AB або A ∧ B)
Вихід дорівнює 1 лише якщо обидва входи дорівнюють 1. Як два перемикачі послідовно — струм тече лише якщо обидва замкнені.
OR
A + B (також A ∨ B)
Вихід дорівнює 1, якщо хоча б один вхід дорівнює 1. Як два перемикачі паралельно.
NOT (інвертор)
Ā (також ¬A або ~A)
Один вхід. Вихід дорівнює 1, якщо вхід дорівнює 0, і навпаки. Інвертує біт.
XOR (виключне АБО)
A ⊕ B
Вихід дорівнює 1, якщо входи відрізняються — рівно один дорівнює 1. Вихід дорівнює 0, якщо обидва однакові. Критичний для додавання та виявлення помилок.

Таблиці істинності AND і XOR

Таблиці істинності для всіх базових вентилів із двома входами A та B:

A B AND OR XOR NOT A
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0

Похідні вентилі: NAND, NOR, XNOR

Додавання етапу NOT до будь-якого вентиля інвертує його вихід, утворюючи новий вентиль:

NAND
NOT (A · B) = Ā + B̄
Вихід дорівнює 0 лише якщо обидва входи дорівнюють 1. Найефективніший фізично вентиль у CMOS — усі сучасні процесори побудовані майже цілком із вентилів NAND.
NOR
NOT (A + B) = Ā · B̄
Вихід дорівнює 1 лише якщо обидва входи дорівнюють 0.
XNOR
NOT (A ⊕ B)
Вихід дорівнює 1, якщо входи рівні. Використовується в компараторах та перевірках рівності.

Булева алгебра

Булева алгебра (Джордж Буль, 1854) — це математика логіки — правила, що дозволяють маніпулювати й спрощувати вирази з AND, OR та NOT, так само як звичайна алгебра спрощує арифметичні вирази.

Закони тотожності: A · 1 = A A + 0 = A Анулювання: A · 0 = 0 A + 1 = 1 Ідемпотентність: A · A = A A + A = A Доповнення: A · Ā = 0 A + Ā = 1 Подвійне заперечення: ¬(¬A) = A Комутативність: A · B = B · A A + B = B + A Асоціативність: (A·B)·C = A·(B·C) Дистрибутивність: A·(B+C) = A·B + A·C A+(B·C) = (A+B)·(A+C) Поглинання: A + A·B = A A·(A+B) = A

Ці тотожності дозволяють розробнику звести складну специфікацію схеми — яка могла б використовувати десятки вентилів — до мінімального еквівалента, зменшуючи площу кремнію та енергоспоживання.

Закони де Моргана

Два закони Огастеса де Моргана — це практично найважливіші булеві тотожності у цифровому проєктуванні:

NOT (A · B) = NOT A + NOT B (NAND = OR інвертованих входів) NOT (A + B) = NOT A · NOT B (NOR = AND інвертованих входів)

Простими словами:

Закони де Моргана — це причина, чому вентилі NAND і NOR кожен здатен реалізувати будь-яку булеву функцію: можна побудувати AND, OR і NOT, використовуючи лише NAND (або лише NOR). На практиці CMOS-схеми реалізують NAND і NOR ефективніше, ніж AND і OR, тож розробники навмисно перетворюють схеми на такі, що використовують лише NAND/NOR.

Приклад перевірки: чи NOT(A AND B) = (NOT A) OR (NOT B)?
Перевірка за таблицею істинності (A=1, B=0): NOT(1·0) = NOT 0 = 1. Права частина: (NOT 1)+(NOT 0) = 0+1 = 1. ✓

Побудова суматора

Двійкове додавання дзеркалить десяткове: ви додаєте кожен стовпчик бітів і переносите переповнення до наступного стовпчика. Два вентилі реалізують додавання одного біта:

Напівсуматор

Додає два окремі біти A і B. Виходи: Sum (біт результату) і Carry (перенесення до наступної позиції).

Sum = A ⊕ B (вентиль XOR) Carry = A · B (вентиль AND) Приклад: 1 + 1 = 10 у двійковій → Sum=0, Carry=1 ✓

Повний суматор

Напівсуматор не може прийняти перенесення (carry-in) з попередньої бітової позиції. Повний суматор приймає три входи (A, B та перенесення-вхід) і дає Sum та перенесення-вихід. Він будується з двох напівсуматорів та вентиля OR:

Входи: A B Cᵢₙ
Етап 1: XOR₁ = A ⊕ B AND₁ = A · B
Етап 2: Sum = XOR₁ ⊕ Cᵢₙ AND₂ = XOR₁ · Cᵢₙ
Виходи: Sum Cₒᵤₜ = AND₁ + AND₂

З'єднайте 8 повних суматорів послідовно у суматор з наскрізним перенесенням — і ви зможете додати два 8-бітні числа — кожне перенесення «прокочується» до наступного етапу. Щоб додати два 64-бітні цілих (повсякденна операція процесора), ви з'єднуєте 64 повні суматори плюс фінальний біт переповнення перенесення-виходу.

Наскрізне перенесення повільне: суму біта 63 не можна обчислити, доки перенесення-вихід від біта 0 не прокотиться крізь усі 63 етапи. Реальні процесори використовують суматори з прискореним перенесенням (carry-lookahead), що обчислюють перенесення для всіх бітових позицій паралельно, завершуючи 64-бітне додавання приблизно за 5 затримок вентилів замість 64.

Арифметико-логічний пристрій (АЛП)

АЛП — це обчислювальне ядро процесора. Він приймає два операнди й селектор операції (кілька бітів, що обирають, що обчислити) і пропускає їх крізь відповідну мережу вентилів:

Селектор операції керує мультиплексором — схемою, що обирає один з багатьох входів для пропускання — спрямовуючи операнди до правильного логічного блоку й виводячи результат на вихід.

Сучасне ядро процесора містить багато АЛП, блоків з плаваючою комою (FPU) та SIMD-блоків, що застосовують одну операцію до багатьох значень одночасно — але всі вони фундаментально побудовані з тих самих вентилів AND, OR, NOT та XOR, які ви тепер розумієте.

NAND: універсальний вентиль

NAND (і NOR) називають функціонально повними — будь-яку булеву функцію можна реалізувати, використовуючи лише вентилі NAND:

NOT A = NAND(A, A) A AND B = NAND(NAND(A, B), NAND(A, B)) A OR B = NAND(NAND(A, A), NAND(B, B)) A XOR B = NAND(NAND(A, NAND(A,B)), NAND(B, NAND(A,B)))

У транзисторній технології CMOS NAND також є найдешевшим вентилем для виготовлення — він потребує лише 4 транзисторів (2 PMOS паралельно + 2 NMOS послідовно) проти 6 для вентиля AND (який є NAND + NOT). Саме тому реальні чипи проєктують у логіці NAND, синтезованій автоматично EDA-інструментами.

Історична нотатка: перші комп'ютери зі збереженою програмою (EDSAC, 1949) використовували вакуумні лампи замість транзисторів, але базова булева логіка була ідентичною. Клод Шеннон у своїй магістерській дисертації 1937 року довів, що будь-яку булеву функцію можна реалізувати перемикальними схемами — у віці 21 року.

Вентилі в кремнії

Кожен логічний вентиль у сучасному чипі побудований з комплементарної пари MOSFET-транзисторів (технологія CMOS). У 2-входовому NAND на CMOS:

Чип Apple M4 (2024) містить приблизно 28 мільярдів транзисторів у техпроцесі 3 нм — 3 нанометри — це приблизно 10 атомів кремнію. Кожен з тих ~28 мільярдів транзисторів бере участь у логічному вентилі, що підпорядковується тим самим таблицям істинності на цій сторінці.

Шлях від теорії перемикальних схем Шеннона 1937 року до чипа 3 нм, що містить 28 мільярдів вентилів — це 87 років інженерії, але базова булева алгебра не змінилася на жодну аксіому.

Джерела