Открыть сервис

Карты Карно

Карты Карно — это графический способ минимизации логических функций (булевых выражений), широко применяемый в цифровой схемотехнике и теории автоматов. Представляет собой таблицу (матрицу), в которой каждой ячейке соответствует определённая комбинация входных переменных, а значение в ячейке — результат функции для этой комбинации. Карты Карно позволяют наглядно выявить соседние наборы переменных, отличающиеся только одним значением, и на основе этого упростить логическое выражение, исключив лишние переменные.

История

Метод был предложен американским инженером-электриком Морисом Карно (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, …). Каждый блок соответствует одному импликанту (конъюнкции с меньшим числом переменных).

Построение карты

  1. Определяется количество переменных (n). Карта имеет размеры 2^a × 2^b, где a + b = n. Обычно a и b выбираются близкими (например, для 4 переменных — 4×4, для 5 — 4×8).
  2. Строки и столбцы нумеруются кодом Грея. Например, для двух переменных (A, B) строки: 00, 01, 11, 10. Для трёх (A, B, C) — строки 00, 01, 11, 10 (для A, B), столбцы 0, 1 (для C).
  3. В каждую ячейку записывается значение функции (0, 1 или «X» для неопределённых состояний) для соответствующей комбинации переменных.

Минимизация

  1. На карте выделяются все прямоугольные блоки, содержащие 1 (или X, если они помогают увеличить блок), размером 2^k. Блоки могут пересекаться.
  2. Каждый блок описывается импликантом, из которого исключаются переменные, меняющие своё значение внутри блока. Например, если блок охватывает ячейки, где A=0 и A=1, то переменная A исключается.
  3. Из всех возможных блоков выбирается минимальное покрытие (наименьшее число блоков, покрывающих все единицы). Приоритет отдаётся блокам максимального размера.
  4. Полученные импликанты объединяются операцией логического «ИЛИ», образуя минимальную дизъюнктивную нормальную форму (ДНФ).

Классификация

Карты Карно классифицируются по числу переменных:

  • 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), заданную таблицей истинности:

ABCF
0000
0011
0101
0110
1001
1010
1101
1111

Карта Карно (строки — 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 →