Зачем вообще минимизировать?
Булево выражение, полученное прямо из таблицы истинности (форма суммы произведений), всегда верно, но редко минимально. Меньше литералов и членов — меньше вентилей, меньше задержка распространения сигнала и ниже энергопотребление, что критично, когда схема повторяется миллионы раз на чипе.
Как работает карта Карно
Карта Карно (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++.