Постоянно забываю, как обозначаются импортные элементы логики. Составил для себя краткий справочник (картинки взяты из статьи [1]).
Суть элементарных логических вентилей (logic gates) следующая:
Вентиль И (функция AND): он формирует из двух или большего количества сигналов один выход двоичного сигнала. На выходе появляется лог. 1, когда на всех входах присутствует лог. 1. Иначе на выходе будет лог. 0.
Вентиль И-НЕ (функция NAND): делает то же самое, что и вентиль И, однако на выходе сигнал проинвертирован. Т. е. лог. 0 на выходе появится только тогда, когда на всех входах присутствует лог. 1. Соответственно лог. 1 на выходе появится, когда хотя бы на одном входе есть лог. 0. С помощью теоремы де-Моргана эта функция может уменьшить количество транзисторов в логическом вентиле, и потенциально удешевить микросхему. Вентили NAND и NOR используют меньшее количество транзисторов, чем другие типы логических вентилей.
Вентиль ИЛИ (функция OR): также, как и элемент И, формирует из двух или большего количества сигналов один выход двоичного сигнала. Однако логика здесь другая - лог. 1 на выходе появится в том случае, когда хотя бы на одном входе присутствует лог. 1. Лог. 0 на выходе появится только тогда, когда на всех входах присутствует лог. 0.
Вентиль ИЛИ-НЕ (функция NOR): делает то же самое, что и вентиль И, однако на выходе сигнал проинвертирован. Т. е. лог. 0 на выходе появится только, когда хотя бы на одном входе присутствует лог. 1. Соответственно лог. 1 на выходе появится только тогда, когда на всех входах присутствует лог. 0. Это таким же способом используется в теореме де-Моргана.
Вентиль ИСКЛЮЧАЮЩЕЕ ИЛИ (функция XOR): На выходе появится лог. 1 тогда и только тогда, когда только на одном входе присутствует лог. 1. Для облегчения запоминания: X означает "exclusive" (т. е. "исключительно").
Вентиль ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ (функция XNOR): работает так же, как и вентиль XOR, только на выходе будет инверсия сигнала. Функция XNOR это по сути цифровой компаратор - на выходе появится лог. 1 только тогда, когда логические уровни на входах совпадают.
Всякий раз при вычислении двоичного выражения для описания системы, мы используем для этого определенные операторы. Умножение "*" описывает вентиль AND, в то время как сложение "+" описывает вентиль OR. С помощью одиночной кавычки ' или верхнего подчеркивания символа делается пометка о том, что сигнал получает инверсию. Например, A' обозначает противоположный сигнал A. Если на цифровом сигнале A находится 0, то A' будет 1. Можно сказать "не A", или "инверсия A". Также термином "комплемент" обозначают пару противоположных значений (не путать с комплиментом). Т. е. 0 будет комплементом 1, 1 будет комплементом 0, 0001 будет комплементом 1110 и т. п. Другой способ сказать то же самое: "A будет комплементарно не A". На языке C инверсию принято обозначать восклицательным знаком !, например !A (это иногда также принято и на языке ассемблера).
[Ссылки]
1. Digital Logic and Boolean Algebra site:wirebiters.com. 2. DeMorgan’s Theorems site:allaboutcircuits.com. |