Как собрать логику из NAND

Девять элементов симулятора — от инвертора до D-триггера — собраны из одних NAND-вентилей. Для каждого есть схема, цена в вентилях и транзисторах, реальная микросхема 74-серии. Если вы ещё не прошли уровни 3–5, попробуйте сначала собрать NOT, AND и OR сами: там это и есть задача.

NOT (Инвертор)

NOT из 1 NANDNANDAQ
Схема NOT (Инвертор) из 1 NAND

Из NAND: 1 вентиль, ≈ 4 транзистора.

В кремнии: ≈ 2 транзистора. В 74-серии это 7404 — 6 инверторов в корпусе.

Оба входа одного NAND соединены вместе. Когда на входе 0, NAND получает два нуля и выдаёт 1; когда 1 — выдаёт 0.

В кремнии инвертор занимает 2 транзистора: один p-канальный и один n-канальный. Четыре NAND здесь не нужны.

AND (И)

AND из 2 NANDNANDNANDABQ
Схема AND (И) из 2 NAND

Из NAND: 2 вентиля, ≈ 8 транзисторов.

В кремнии: ≈ 6 транзисторов. В 74-серии это 7408 — 4 двувходовых AND.

NAND считает «не оба», поэтому его выход инвертируют вторым NAND с соединёнными входами. Получается «оба».

AND в кремнии — это NAND плюс инвертор, около 6 транзисторов.

OR (ИЛИ)

OR из 3 NANDNANDNANDNANDABQ
Схема OR (ИЛИ) из 3 NAND

Из NAND: 3 вентиля, ≈ 12 транзисторов.

В кремнии: ≈ 6 транзисторов. В 74-серии это 7432 — 4 двувходовых OR.

Два NAND работают инверторами для A и B, третий объединяет их по закону де Моргана: ¬(¬A · ¬B) = A + B.

OR собирают как NOR плюс инвертор: около 6 транзисторов.

XOR (исключающее ИЛИ)

XOR из 4 NANDNANDNANDNANDNANDABQ
Схема XOR (исключающее ИЛИ) из 4 NAND

Из NAND: 4 вентиля, ≈ 16 транзисторов.

В кремнии: ≈ 12 транзисторов. В 74-серии это 7486 — 4 двувходовых XOR.

Первый NAND считает ¬(A·B), два следующих смешивают его с A и B, последний собирает разность: 1 только когда входы разные.

XOR в кремнии не строят из четырёх NAND: оптимизированная схема занимает около 12 транзисторов.

NOR (ИЛИ-НЕ)

NOR из 4 NANDNANDNANDNANDNANDABQ
Схема NOR (ИЛИ-НЕ) из 4 NAND

Из NAND: 4 вентиля, ≈ 16 транзисторов.

В кремнии: ≈ 4 транзистора. В 74-серии это 7402 — 4 двувходовых NOR.

Два NAND инвертируют A и B, третий считает их «И», четвёртый инвертирует результат. Выход 1 только при двух нулях.

NOR в КМОП — 4 транзистора: два p-канальных последовательно и два n-канальных параллельно.

MUX (Мультиплексор 2→1)

MUX из 4 NANDNANDNANDNANDNANDABSelQ
Схема MUX (Мультиплексор 2→1) из 4 NAND

Из NAND: 4 вентиля, ≈ 16 транзисторов.

В кремнии: ≈ 12 транзисторов. В 74-серии это 74HC157 — 4 мультиплексора 2→1.

NAND с соединёнными входами делает ¬Sel; два NAND готовят ¬(A·¬Sel) и ¬(B·Sel); последний NAND складывает их по де Моргану и выбирает вход по Sel.

Мультиплексор 2→1 в кремнии собирают на передаточных ключах: около 12 транзисторов.

Half Adder (Полусумматор)

HalfAdder из 5 NANDNANDNANDNANDNANDNANDABSumCarry
Схема Half Adder (Полусумматор) из 5 NAND

Из NAND: 5 вентилей, ≈ 20 транзисторов.

В кремнии: ≈ 18 транзисторов.

Пять NAND: четыре собирают XOR для суммы, пятый инвертирует общий NAND(A,B) и даёт перенос. Один вентиль работает на две формулы.

Полусумматор в кремнии — около 18 транзисторов; отдельной микросхемы у него нет, он существует внутри сумматора 74HC283.

Full Adder (Полный сумматор)

FullAdder из 9 NANDNANDNANDNANDNANDNANDNANDNANDNANDNANDABCinSumCout
Схема Full Adder (Полный сумматор) из 9 NAND

Из NAND: 9 вентилей, ≈ 36 транзисторов.

В кремнии: ≈ 28 транзисторов. В 74-серии это 74HC283 — 4-битный сумматор.

Два XOR подряд складывают A, B и Cin. Перенос считается как «хотя бы два из трёх»: общий NAND(A,B) и NAND(X,Cin) объединяет девятый вентиль.

Полный сумматор оптимизируют до ≈28 транзисторов. В 74-серии это четырёхбитный 74HC283 — четыре таких блока в одном корпусе.

DFF (D-триггер)

DFF из 6 NANDNANDNANDNANDNANDNANDNANDDClockQ
Схема DFF (D-триггер) из 6 NAND

Из NAND: 6 вентилей, ≈ 24 транзистора.

В кремнии: ≈ 24 транзистора. В 74-серии это 7474 — 2 D-триггера с фронтом.

Шесть NAND: два делают из D пару D и ¬D, два пропускают их к защёлке только при высоком такте, ещё два держат результат. Пока Clock=0, данные заперты; на фронте значение D попадает на Q.

D-триггер в кремнии — около 24 транзисторов. В 74-серии это 7474: два триггера в одном корпусе.

NAND (И-НЕ)

Примитив: 4 транзистора в КМОП. Отдельной схемы из NAND у него нет.

В 74-серии: 7400 — 4 двувходовых NAND.

NAND — примитив, с которого начинается курс. Из него собираются все остальные элементы этой страницы, а сам он в КМОП стоит четыре транзистора.

В 74-серии это 7400: четыре двувходовых NAND в одном корпусе. Собирать NAND из NAND не имеет смысла — это и есть кирпич.

Почему одного NAND хватает

NAND — функционально полный элемент: через него выражаются НЕ, И и ИЛИ, а из них собирается любая цифровая схема, включая процессор. Именно поэтому курс начинается с NAND (И-НЕ) и только потом выдаёт остальные элементы.

Собрать первый NAND на уровне 2 →