Карты Карно
Карты Карно — это графический способ минимизации логических функций (булевых выражений), широко применяемый в цифровой схемотехнике и теории автоматов. Представляет собой таблицу (матрицу), в которой каждой ячейке соответствует определённая комбинация входных переменных, а значение в ячейке — результат функции для этой комбинации. Карты Карно позволяют наглядно выявить соседние наборы переменных, отличающиеся только одним значением, и на основе этого упростить логическое выражение, исключив лишние переменные.
История
Метод был предложен американским инженером-электриком Морисом Карно (Maurice Karnaugh) в 1953 году в статье «The Map Method for Synthesis of Combinational Logic Circuits» (журнал Transactions of the American Institute of Electrical Engineers). Карно развил идеи, заложенные в 1952 году Эдвардом Вейчем (Edward W. Veitch), который использовал прямоугольные диаграммы для минимизации. В отличие от диаграммы Вейча, карта Карно имеет строгую структуру: строки и столбцы кодируются кодом Грея, что обеспечивает свойство соседства (каждая ячейка отличается от соседних по горизонтали и вертикали ровно в одном разряде). Метод быстро стал стандартным инструментом в учебных курсах по цифровой логике и при разработке простых комбинационных схем, хотя для сложных функций (более 6 переменных) он уступает алгоритмическим методам (например, методу Куайна — Мак-Класки).
Принцип работы
Основные понятия
- Логическая функция — отображение набора двоичных переменных (0 или 1) в значение 0 или 1. Карта Карно представляет таблицу истинности в компактной форме.
- Минтерм — конъюнкция (логическое «И») всех переменных, каждая из которых входит в прямом или инверсном виде. Соответствует строке таблицы истинности, где функция равна 1.
- Соседние ячейки — ячейки, комбинации переменных которых отличаются ровно в одном разряде. В карте Карно соседними считаются ячейки, соприкасающиеся по горизонтали или вертикали, а также ячейки на противоположных краях (за счёт циклического замыкания).
- Покрытие — объединение соседних ячеек, содержащих единицы, в прямоугольные блоки размером 2^k (k = 0, 1, 2, …). Каждый блок соответствует одному импликанту (конъюнкции с меньшим числом переменных).
Построение карты
- Определяется количество переменных (n). Карта имеет размеры 2^a × 2^b, где a + b = n. Обычно a и b выбираются близкими (например, для 4 переменных — 4×4, для 5 — 4×8).
- Строки и столбцы нумеруются кодом Грея. Например, для двух переменных (A, B) строки: 00, 01, 11, 10. Для трёх (A, B, C) — строки 00, 01, 11, 10 (для A, B), столбцы 0, 1 (для C).
- В каждую ячейку записывается значение функции (0, 1 или «X» для неопределённых состояний) для соответствующей комбинации переменных.
Минимизация
- На карте выделяются все прямоугольные блоки, содержащие 1 (или X, если они помогают увеличить блок), размером 2^k. Блоки могут пересекаться.
- Каждый блок описывается импликантом, из которого исключаются переменные, меняющие своё значение внутри блока. Например, если блок охватывает ячейки, где A=0 и A=1, то переменная A исключается.
- Из всех возможных блоков выбирается минимальное покрытие (наименьшее число блоков, покрывающих все единицы). Приоритет отдаётся блокам максимального размера.
- Полученные импликанты объединяются операцией логического «ИЛИ», образуя минимальную дизъюнктивную нормальную форму (ДНФ).
Классификация
Карты Карно классифицируются по числу переменных:
- 2 переменные — таблица 2×2 (4 ячейки). Применяется для простейших схем (например, вентили И, ИЛИ).
- 3 переменные — таблица 2×4 (8 ячеек). Часто используется в учебных задачах.
- 4 переменные — таблица 4×4 (16 ячеек). Наиболее распространённый размер для реальных схем (например, дешифраторы, мультиплексоры).
- 5 переменных — таблица 4×8 (32 ячейки). Требует внимательности из-за сложности визуального поиска соседних блоков.
- 6 и более переменных — таблица 8×8 (64 ячейки) и более. Практически не применяется из-за громоздкости; для таких функций используются алгоритмические методы.
Применение
Цифровая схемотехника
Карты Карно — основной инструмент для синтеза комбинационных логических схем: дешифраторов, шифраторов, мультиплексоров, сумматоров, компараторов, а также для проектирования конечных автоматов (при минимизации функций переходов и выходов). Метод позволяет получить схему с минимальным числом логических элементов (вентилей), что снижает стоимость, энергопотребление и задержки.
Обучение
В университетских курсах по цифровой логике, дискретной математике и теории автоматов карты Карно изучаются как наглядный способ понимания минимизации. Они помогают студентам освоить принципы склеивания импликантов и работы с кодами Грея.
Программные реализации
Современные САПР (например, Quartus, Vivado, Logisim) автоматически минимизируют логические функции, используя алгоритмы, основанные на методе Куайна — Мак-Класки или эвристических алгоритмах (Espresso). Однако карты Карно остаются полезными для ручной отладки и обучения.
Пример
Рассмотрим функцию трёх переменных (A, B, C), заданную таблицей истинности:
| A | B | C | F |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
Карта Карно (строки — A, B; столбцы — C):
`` C\AB 00 01 11 10 0 0 1 1 1 1 1 0 1 0 ``
Выделяем блоки:
- Блок из ячеек (00, 01, 11, 10) при C=0 — все единицы, кроме (00,0). Но (00,0) — 0, поэтому блок не полный. Лучше: блок из ячеек (01,0) и (11,0) — соответствует A=1 (B и C меняются). Импликант: A.
- Блок из ячеек (00,1) и (01,0) — не прямоугольный, не подходит.
- Блок из ячеек (00,1) и (10,1) — не соседние.
- Блок из ячеек (11,0) и (11,1) — соответствует A=1, B=1 (C меняется). Импликант: AB.
- Блок из ячеек (10,0) и (11,1) — не соседние.
Правильное покрытие: блоки {A} (покрывает (01,0), (11,0), (10,0)) и {AB} (покрывает (11,0), (11,1)). Единица в (00,1) остаётся непокрытой — её покрывает отдельный блок (00,1) — импликант A'B'C. Итоговая ДНФ: F = A + AB + A'B'C = A + A'B'C (так как AB поглощается A). Минимальная форма: F = A + A'B'C.
Преимущества и недостатки
Преимущества
- Наглядность: позволяет визуально увидеть соседние наборы и исключить переменные.
- Простота для малого числа переменных (до 4–5).
- Не требует сложных вычислений, подходит для ручного анализа.
Недостатки
- Ограничение по числу переменных (практически до 6). Для 7 и более переменных карта становится громоздкой и трудночитаемой.
- Требует аккуратности при циклическом замыкании (соседство краёв).
- Неэффективна для функций с большим числом неопределённых состояний (X) — может привести к неоптимальному покрытию.
- Для автоматизации лучше подходят алгоритмические методы.
Интересные факты
- Карты Карно являются частным случаем диаграмм Вейча, но с обязательным использованием кода Грея для нумерации строк и столбцов.
- Метод склеивания, лежащий в основе карт, эквивалентен применению закона поглощения и закона склеивания булевой алгебры.
- В некоторых учебных пособиях карты Карно называют «картами Вейча — Карно» или «диаграммами Карно».
- Для функций с 5 переменными часто используют двухслойные карты (две карты по 4×4), а для 6 — четырёхслойные.
Источники
- Karnaugh M. «The Map Method for Synthesis of Combinational Logic Circuits». — Transactions of the American Institute of Electrical Engineers, 1953.
- Титце У., Шенк К. «Полупроводниковая схемотехника». — М.: Мир, 1982.
- Хоровиц П., Хилл У. «Искусство схемотехники». — М.: Мир, 2003.
- Угрюмов Е.П. «Цифровая схемотехника». — СПб.: БХВ-Петербург, 2004.
- Материалы курса «Дискретная математика» МФТИ (лекции по минимизации логических функций).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →