Как собрать логику из NAND
Девять элементов симулятора — от инвертора до D-триггера — собраны из одних NAND-вентилей. Для каждого есть схема, цена в вентилях и транзисторах, реальная микросхема 74-серии. Если вы ещё не прошли уровни 3–5, попробуйте сначала собрать NOT, AND и OR сами: там это и есть задача.
NOT (Инвертор)
Оба входа одного NAND соединены вместе. Когда на входе 0, NAND получает два нуля и выдаёт 1; когда 1 — выдаёт 0.
В кремнии инвертор занимает 2 транзистора: один p-канальный и один n-канальный. Четыре NAND здесь не нужны.
AND (И)
NAND считает «не оба», поэтому его выход инвертируют вторым NAND с соединёнными входами. Получается «оба».
AND в кремнии — это NAND плюс инвертор, около 6 транзисторов.
OR (ИЛИ)
Два NAND работают инверторами для A и B, третий объединяет их по закону де Моргана: ¬(¬A · ¬B) = A + B.
OR собирают как NOR плюс инвертор: около 6 транзисторов.
XOR (исключающее ИЛИ)
Первый NAND считает ¬(A·B), два следующих смешивают его с A и B, последний собирает разность: 1 только когда входы разные.
XOR в кремнии не строят из четырёх NAND: оптимизированная схема занимает около 12 транзисторов.
NOR (ИЛИ-НЕ)
Два NAND инвертируют A и B, третий считает их «И», четвёртый инвертирует результат. Выход 1 только при двух нулях.
NOR в КМОП — 4 транзистора: два p-канальных последовательно и два n-канальных параллельно.
MUX (Мультиплексор 2→1)
NAND с соединёнными входами делает ¬Sel; два NAND готовят ¬(A·¬Sel) и ¬(B·Sel); последний NAND складывает их по де Моргану и выбирает вход по Sel.
Мультиплексор 2→1 в кремнии собирают на передаточных ключах: около 12 транзисторов.
Half Adder (Полусумматор)
Пять NAND: четыре собирают XOR для суммы, пятый инвертирует общий NAND(A,B) и даёт перенос. Один вентиль работает на две формулы.
Полусумматор в кремнии — около 18 транзисторов; отдельной микросхемы у него нет, он существует внутри сумматора 74HC283.
Full Adder (Полный сумматор)
Два XOR подряд складывают A, B и Cin. Перенос считается как «хотя бы два из трёх»: общий NAND(A,B) и NAND(X,Cin) объединяет девятый вентиль.
Полный сумматор оптимизируют до ≈28 транзисторов. В 74-серии это четырёхбитный 74HC283 — четыре таких блока в одном корпусе.
DFF (D-триггер)
Шесть NAND: два делают из D пару D и ¬D, два пропускают их к защёлке только при высоком такте, ещё два держат результат. Пока Clock=0, данные заперты; на фронте значение D попадает на Q.
D-триггер в кремнии — около 24 транзисторов. В 74-серии это 7474: два триггера в одном корпусе.
NAND (И-НЕ)
NAND — примитив, с которого начинается курс. Из него собираются все остальные элементы этой страницы, а сам он в КМОП стоит четыре транзистора.
В 74-серии это 7400: четыре двувходовых NAND в одном корпусе. Собирать NAND из NAND не имеет смысла — это и есть кирпич.
Почему одного NAND хватает
NAND — функционально полный элемент: через него выражаются НЕ, И и ИЛИ, а из них собирается любая цифровая схема, включая процессор. Именно поэтому курс начинается с NAND (И-НЕ) и только потом выдаёт остальные элементы.