Цифровая логика: от вентилей до регистров
Как устроена цифровая логика: базовые вентили и их таблицы истинности, как по таблице получить формулу и схему, как упростить её картой Карно, и как из логических элементов получаются защёлки, триггеры и регистры — со встроенными калькуляторами для своих функций.
Обновлено Редакция GAW
Цифровая логика работает с сигналами, у которых всего два значения: 0 и 1, ложь и истина. Любое цифровое устройство — от счётчика до процессора — собрано из логических элементов, которые выполняют операции булевой алгебры, и элементов памяти, которые хранят их результат. Применить алгебру логики к переключательным схемам предложил Клод Шеннон в работе о релейных схемах, выполненной в MIT.
Логические элементы
| Элемент | Обозначение | Выход равен 1, когда | A=0 B=0 | A=0 B=1 | A=1 B=0 | A=1 B=1 |
|---|---|---|---|---|---|---|
| И (AND) | A · B | оба входа равны 1 | 0 | 0 | 0 | 1 |
| ИЛИ (OR) | A + B | хотя бы один вход равен 1 | 0 | 1 | 1 | 1 |
| И-НЕ (NAND) | ¬(A · B) | хотя бы один вход равен 0 | 1 | 1 | 1 | 0 |
| ИЛИ-НЕ (NOR) | ¬(A + B) | оба входа равны 0 | 1 | 0 | 0 | 0 |
| Исключающее ИЛИ (XOR) | A ⊕ B | входы различаются | 0 | 1 | 1 | 0 |
| Исключающее ИЛИ-НЕ (XNOR) | ¬(A ⊕ B) | входы совпадают | 1 | 0 | 0 | 1 |
Инвертор (НЕ) меняет 0 на 1 и обратно. Элементы И-НЕ и ИЛИ-НЕ универсальны: из одних двухвходовых И-НЕ можно собрать любую функцию. В КМОП-схемах каждый каскад по природе инвертирует, поэтому И-НЕ и ИЛИ-НЕ получаются одним каскадом, а И и ИЛИ — двумя. Важная тонкость: И-НЕ и ИЛИ-НЕ не ассоциативны — трёхвходовый И-НЕ нельзя получить, соединив два двухвходовых каскадом, как это делают с И. Исключающее ИЛИ нужно в сумматорах и при расчёте чётности и контрольных сумм, например CRC.
Таблица истинности и формула
Функцию задают таблицей истинности: для N входов в ней 2^N строк, по одной на каждую комбинацию. По таблице всегда можно записать формулу в виде суммы произведений (дизъюнктивной нормальной формы, СДНФ): для каждой строки, где выход равен 1, пишут произведение всех переменных — прямых, если в строке 1, и инверсных, если 0, — и объединяют эти произведения через ИЛИ. Двойственная форма — произведение сумм (СКНФ) — строится по строкам, где выход равен 0. Сумма произведений сразу превращается в схему: инверторы, вентили И на каждое произведение и вентиль ИЛИ на выходе.
Калькулятор строит таблицу по выражению или вектору значений, записывает СДНФ и СКНФ и находит минимальные формы:
Исходные данные
Переменные — латинские буквы (a, B, x1). Операции: ¬ ! not, ∧ & and, ∨ | + or, ⊕ ^ xor, → ->, ≡ ==; «AB» — то же, что A ∧ B, A' — отрицание
Результат
- Минимальная ДНФ
- a ∧ ¬c ∨ b ∧ ¬c
- Минимальная КНФ
- (a ∨ b) ∧ ¬c
- СДНФ
- ¬a ∧ b ∧ ¬c ∨ a ∧ ¬b ∧ ¬c ∨ a ∧ b ∧ ¬c
- СКНФ
- (a ∨ b ∨ c) ∧ (a ∨ b ∨ ¬c) ∧ (a ∨ ¬b ∨ ¬c) ∧ (¬a ∨ b ∨ ¬c) ∧ (¬a ∨ ¬b ∨ ¬c)
- Вектор значений
- 00101010единиц — 3, нулей — 5
Таблица истинности
8 строк; номер строки — двоичное число из значений переменных, первая переменная — старший разряд.
| № | a | b | c | a ∨ b | ¬c | (a ∨ b) ∧ ¬c |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 | 0 |
| 2 | 0 | 1 | 0 | 1 | 1 | 1 |
| 3 | 0 | 1 | 1 | 1 | 0 | 0 |
| 4 | 1 | 0 | 0 | 1 | 1 | 1 |
| 5 | 1 | 0 | 1 | 1 | 0 | 0 |
| 6 | 1 | 1 | 0 | 1 | 1 | 1 |
| 7 | 1 | 1 | 1 | 1 | 0 | 0 |
Минимизация и карта Карно
Совершенная форма обычно избыточна: два произведения, которые отличаются значением одной переменной, сливаются в одно без неё — A · B + A · ¬B = A. Найти такие пары проще, если переставить строки таблицы так, чтобы соседние отличались ровно одним битом. Это и делает карта Карно: таблица истинности записывается двумерной таблицей, строки и столбцы нумеруются кодом Грея (00, 01, 11, 10), а крайние столбцы и строки считаются соседними — карту надо представлять свёрнутой в цилиндр (для 4 переменных — в тор).
Единицы обводят прямоугольными группами по 1, 2, 4, 8 клеток; каждая группа — одно произведение, из которого выпадают переменные, меняющиеся внутри группы. Чем больше группа, тем короче произведение. Комбинации входов, которые никогда не встречаются, помечают как безразличные (x) и включают в группы, если это их увеличивает.
Исходные данные
номера строк таблицы истинности от 0 до 15, например 1, 3, 5-7; или нажимайте на клетки карты
значение не важно: его можно взять и 0, и 1
Результат
- Минимальная ДНФ
- AB' + AC' + BCD'
- Группа 1: 4 клетки
- AB'
- Группа 2: 4 клетки
- AC'
- Группа 3: 2 клетки
- BCD'
Мультиплексор
Мультиплексор (MUX) выбирает один из входов по сигналу выбора: при S = 0 на выход идёт вход D0, при S = 1 — D1. Его формула — Y = ¬S · D0 + S · D1. Мультиплексор тоже универсален: на нём можно собрать инвертор, И и ИЛИ, а значит, и любую функцию.
Память: защёлка и триггер
Если выход мультиплексора завести обратно на его вход D0, получится элемент памяти — D-защёлка. Пока управляющий вход G равен 1, выход повторяет вход D (защёлка «прозрачна»); когда G становится 0, выход сохраняет последнее значение. Чтобы значение запомнилось надёжно, вход D должен быть стабильным некоторое время до спада G — это время установки (setup time) — и некоторое время после него — время удержания (hold time).
Две защёлки, включённые друг за другом и управляемые противофазными сигналами, образуют D-регистр, или D-триггер. Он записывает вход только в момент фронта тактового сигнала — нарастающего, перехода из 0 в 1 — и хранит значение до следующего фронта; между фронтами изменения входа на выход не проходят. На таких регистрах и строится синхронная логика: между регистрами стоит комбинационная схема, и такт должен быть длиннее её задержки с учётом времени установки.
Из регистров собирают остальные узлы: регистр из N триггеров с общим тактом хранит N-битное число, сдвиговый регистр — цепочка триггеров, где выход одного подан на вход следующего, — сдвигает данные на разряд за такт, счётчик — регистр с комбинационной схемой прибавления единицы на входе.
Частые вопросы
Чем вентиль И-НЕ отличается от И?
И-НЕ (NAND) — это И с инверсией на выходе: он выдаёт 0, только когда все входы равны 1, и 1 во всех остальных случаях. Из одних двухвходовых И-НЕ можно собрать любую логическую функцию — инвертор, И, ИЛИ и всё остальное, — поэтому такой элемент называют универсальным. В КМОП-технологии И-НЕ и ИЛИ-НЕ реализуются одним каскадом, а И и ИЛИ требуют ещё инвертора.
Что такое карта Карно?
Это таблица истинности, переписанная в виде прямоугольной таблицы, где строки и столбцы пронумерованы кодом Грея: соседние клетки отличаются значением ровно одной переменной, а крайние столбцы и строки тоже считаются соседними. Группа соседних единиц размером 2, 4, 8 клеток заменяется одним произведением без переменных, которые в группе меняются. Так находят минимальную формулу без перебора тождеств.
Чем защёлка отличается от триггера?
Защёлка (latch) прозрачна, пока на её управляющем входе активный уровень: выход повторяет вход, а при смене уровня значение запоминается. Триггер, или D-регистр, собран из двух защёлок, работающих в противофазе, и записывает вход только в момент фронта тактового сигнала — между фронтами изменения входа на выход не проходят. Поэтому синхронные схемы строят на триггерах.
Сколько строк в таблице истинности?
Для N входов — 2^N строк: каждая строка — одна комбинация входов. Для 3 входов это 8 строк, для 6 — 64, а для схемы сложения двух 32-битных чисел — 2^64, поэтому большие функции описывают формулами, а не таблицами.
Источники
- C. Terman. 6.004 Computation Structures, Spring 2017. MIT OpenCourseWare, 4.1 Combinational Logic: Annotated Slides — таблица истинности на 2^N строк, сумма произведений по таблице, вентили И, ИЛИ, НЕ, И-НЕ, ИЛИ-НЕ, универсальность И-НЕ, неассоциативность И-НЕ и ИЛИ-НЕ, карта Карно в коде Грея, мультиплексор
- C. Terman. 6.004 Computation Structures, Spring 2017. MIT OpenCourseWare, 5.1 Sequential Logic: Annotated Slides — защёлка на мультиплексоре с обратной связью, время установки и удержания, D-регистр из двух защёлок, срабатывание по фронту тактового сигнала, сдвиговые регистры
- C. E. Shannon. A symbolic analysis of relay and switching circuits. Thesis (M.S.), Massachusetts Institute of Technology, 1940 — работа, в которой булева алгебра применена к релейным и переключательным схемам
Нашли ошибку?
Смотрите также
- Таблица истинностиТаблица, СДНФ и СКНФ, минимальные ДНФ и КНФ
- Карта КарноМинимальная ДНФ и КНФ, группы клеток на карте
- ТеорияОсновы схемотехники: от закона Ома до ОУ, АЦП и источников питания
- MOSFET и IGBTУстройство, логический уровень, заряд затвора, потери, ключ и IGBT
- Конвертер HEX, BIN, DECДополнительный код, float, байты и биты
- Калькулятор CRCCRC-8, CRC-16, CRC-32, Modbus, код на C