Altifigence Academy

4 / 63 · Теория

NAND, NOR и обозначения инверсии

Определяйте область действия отрицания и связывайте эквивалентные обозначения и выражения законами де Моргана.

Маленький кружок инвертирует весь выход

NAND инвертирует результат AND, NOR — результат OR. NAND не означает «AND с отдельно инвертированными входами». Сначала определите область действия отрицанияИнверсия — операция NOT, меняющая 0 на 1 и 1 на 0. Черта над формулой означает применение NOT ко всему выражению под ней..

YNAND=ab‾,YNOR=a+b‾Y_{NAND}=\overline{ab},\qquad Y_{NOR}=\overline{a+b}
abNANDNOR
0011
0110
1010
1100
Кружок инверсии на выходе и таблица истинности
NAND · Таблица истинности
aby
001
011
101
110

Выберите NAND и убедитесь, что 0 получается только при 11. Переключитесь на NOR: теперь 1 получается только при 00. Инвертированный выход — полноценный сигнал 0/1, а не «ещё не вычисленное значение».

Законы де Моргана помогают читать схемы

ab‾=a‾+b‾,a+b‾=a‾ b‾\overline{ab}=\overline a+\overline b,\qquad \overline{a+b}=\overline a\,\overline b

При переносе инверсии с выхода AND на входы операция тоже меняется на OR. Если перенести только кружки, оставив AND, получится другая функция. При a=0,b=1a=0,b=1 NAND равен 1, а a‾ b‾\overline a\,\overline b — 0: контрпример находится сразу.

Перенос инверсии с выхода на входы
  1. NAND: Y = NOT (a AND b)
  2. Инвертируйте каждый вход: Получите NOT a и NOT b
  3. Объедините через OR: Y = (NOT a) OR (NOT b)

Active-low задаёт активную полярность

Сигнал, действующий при 0, например reset_n, называется active-lowАктивный низкий уровень (active-low) означает, что запрос или функция активны при сигнале 0. Суффикс _n — распространённое соглашение об именовании; реальное поведение задаёт спецификация.. Суффикс _n — соглашение об именовании; поведение задают спецификация и схема. Чтобы тревога alarm стала 1, когда хотя бы один из запросов req0_n, req1_n равен 0, вычисляют:

alarm=req0_n‾+req1_n‾=req0_n req1_n‾\mathrm{alarm}=\overline{\mathrm{req0\_n}}+\overline{\mathrm{req1\_n}}=\overline{\mathrm{req0\_n}\,\mathrm{req1\_n}}

Черта над каждым сигналом применяет NOT к этому сигналу. Последняя длинная черта инвертирует весь результат AND двух сигналов, поэтому достаточно одного NAND. Например, при 11 запросов нет и alarm=0; при 01 первый запрос активен и alarm=1.

«Активен» не всегда означает числовую 1. Читая входы, отдельно проверяйте логическое значение, условие активности и обозначение инверсии.

Попробуйте сами

Сигнал go должен быть равен 1 только при одновременной активности двух разрешений с низким активным уровнем permit0_n и permit1_n. Какой элемент нужен: NAND или NOR?

Прочитать объяснение

Единица нужна только при двух нулях, значит NOR: go=NOT(permit0_n OR permit1_n). Если выбрать AND лишь по словам «оба активны», можно упустить полярность сигналов.

Выбор действует в этом браузере. Его можно изменить внизу страницы.