4 / 63 · Теория
NAND, NOR и обозначения инверсии
Определяйте область действия отрицания и связывайте эквивалентные обозначения и выражения законами де Моргана.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Маленький кружок инвертирует весь выход
NAND инвертирует результат AND, NOR — результат OR. NAND не означает «AND с отдельно инвертированными входами». Сначала определите область действия отрицанияИнверсия — операция NOT, меняющая 0 на 1 и 1 на 0. Черта над формулой означает применение NOT ко всему выражению под ней..
| a | b | NAND | NOR |
|---|---|---|---|
| 0 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| a | b | y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Выберите NAND и убедитесь, что 0 получается только при 11. Переключитесь на NOR: теперь 1 получается только при 00. Инвертированный выход — полноценный сигнал 0/1, а не «ещё не вычисленное значение».
Законы де Моргана помогают читать схемы
При переносе инверсии с выхода AND на входы операция тоже меняется на OR. Если перенести только кружки, оставив AND, получится другая функция. При NAND равен 1, а — 0: контрпример находится сразу.
- NAND: Y = NOT (a AND b)
- Инвертируйте каждый вход: Получите NOT a и NOT b
- Объедините через 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, вычисляют:
Черта над каждым сигналом применяет 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 лишь по словам «оба активны», можно упустить полярность сигналов.