Карты Карно для упрощения схем
← Все статьи

Карты Карно для упрощения схем

7 мин

Зачем вообще минимизировать?

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

Как работает карта Карно

Карта Карно (K-карта) располагает каждую строку таблицы истинности в сетке так, что соседние клетки отличаются ровно на один бит. Благодаря этому любую группу из 2, 4, 8... соседних единиц можно объединить в один более простой член произведения — бит, который меняется между ними, просто исчезает из выражения.

  • Нарисуйте сетку: 2 переменные → 2×2, 3 переменные → 2×4, 4 переменные → 4×4.
  • Заполните единицами и нулями из таблицы истинности, используя порядок кода Грея по осям, чтобы соседи отличались на один бит.
  • Обведите наибольшие возможные прямоугольные группы единиц (размер должен быть степенью двойки).
  • Каждая обведённая группа становится одним членом упрощённого выражения; сумма всех членов через ИЛИ — это и есть ответ.

Небольшой пример

Для функции от 2 входов, где выход равен 1 при A=0,B=1 и A=1,B=1 (строки 01 и 11), обе клетки имеют общее B=1 и различаются только по A. Обведя их вместе, A исчезает полностью, и упрощённое выражение: F = B.

От карты к схеме

Получив минимизированное выражение, соберите его прямо в Boolflow из соответствующих вентилей AND/OR/NOT. Используйте инструмент «Таблица истинности», чтобы убедиться, что упрощённая схема по-прежнему соответствует исходному заданию, перед экспортом в Verilog, VHDL или C++.

Проверить упрощение по таблице истинности