Минимизация логических функций¶
Минимизация логических функций — это процесс упрощения исходного аналитического выражения (формулы) булевой алгебры, описывающего работу цифрового устройства, с целью получения эквивалентного, но более простого выражения. Конечная цель минимизации — сокращение количества логических элементов (вентилей), необходимых для реализации функции на практике, что ведёт к уменьшению стоимости, энергопотребления, габаритов и задержек в работе цифровых схем. Минимизация является одним из ключевых этапов синтеза цифровых устройств, от простых комбинационных схем до сложных процессоров.
¶Основные понятия и термины
Логическая функция задаётся таблицей истинности или аналитическим выражением, использующим операции И (конъюнкция, &), ИЛИ (дизъюнкция, ∨), НЕ (отрицание, ¬). Исходное выражение, полученное непосредственно из таблицы истинности (например, в виде совершенной дизъюнктивной нормальной формы, СДНФ), часто оказывается избыточным. Минимизация позволяет получить минимальную нормальную форму (МНФ) — дизъюнктивную (МДНФ) или конъюнктивную (МКНФ), содержащую наименьшее число литералов (переменных или их отрицаний) и членов.
Ключевые термины:
- Импликанта — произведение (конъюнкция) некоторого числа переменных, которое обращает функцию в 1 (для ДНФ).
- Покрытие функции — множество импликант, объединение которых (дизъюнкция) полностью описывает функцию.
- Ядро функции — совокупность существенных импликант, которые входят в любое минимальное покрытие.
- Лишняя импликанта — импликанта, удаление которой не нарушает покрытия.
¶Методы минимизации
Существует несколько основных методов минимизации логических функций, различающихся по сложности, наглядности и применимости.
¶1. Аналитический метод (тождественные преобразования)
Основан на последовательном применении законов булевой алгебры: закона склеивания (A·B + A·¬B = A), закона поглощения (A + A·B = A), закона идемпотентности (A + A = A), закона двойного отрицания и других. Метод интуитивен, но для функций с большим числом переменных (более 4–5) становится трудоёмким и ненадёжным, так как требует от разработчика творческого подхода и знания всех возможных преобразований. Применяется в основном для ручного упрощения простых выражений.
¶2. Метод карт Карно (Карно-Вейча)
Наиболее распространённый графический метод для функций с числом переменных до 6 (реже до 8). Карта Карно представляет собой прямоугольную таблицу, в которой каждой ячейке соответствует один из возможных наборов переменных. Соседние ячейки отличаются значением только одной переменной (код Грея). Минимизация заключается в объединении соседних ячеек, содержащих 1 (для МДНФ) или 0 (для МКНФ), в прямоугольные блоки размером 2^k (k — целое число). Каждый блок соответствует импликанте, в которой исключаются переменные, меняющие значение внутри блока.
Правила построения покрытия по карте Карно:
- Каждый блок должен быть как можно большего размера.
- Число блоков должно быть минимальным.
- Каждая единица (или ноль) должна быть покрыта хотя бы один раз.
- Блоки могут перекрываться.
- Допускается использование «безразличных» состояний (X), которые могут быть как 0, так и 1, для увеличения размера блоков.
Метод нагляден, прост для освоения и даёт хорошие результаты для функций средней сложности. Однако для 7 и более переменных карта становится громоздкой.
¶3. Метод Квайна — Мак-Класки (табличный метод)
Алгоритмический метод, пригодный для автоматизации и работы с функциями любого числа переменных. Состоит из двух этапов:
- Поиск всех простых импликант. Все конституенты единицы (минтермы) из СДНФ попарно сравниваются и склеиваются, если они отличаются значением только одной переменной. Процесс повторяется до тех пор, пока возможно склеивание. Полученные импликанты, которые не удалось склеить, являются простыми.
- Построение минимального покрытия. Составляется таблица покрытия, где строки — простые импликанты, столбцы — исходные минтермы. Выбирается минимальный набор импликант, покрывающий все столбцы. Обычно сначала выделяют ядро (импликанты, покрывающие уникальные минтермы), а затем решают задачу покрытия оставшихся столбцов, часто методом ветвей и границ или с помощью таблицы Петрика.
Метод Квайна — Мак-Класки является точным (гарантирует нахождение минимальной формы) и хорошо поддаётся программированию. Его недостаток — экспоненциальный рост числа операций при увеличении числа переменных (NP-трудная задача в общем случае).
¶4. Метод Блейка — Порецкого
Основан на операции обобщённого склеивания: A·B + ¬A·C = A·B + ¬A·C + B·C. Позволяет получать все простые импликанты, не прибегая к полному перебору. Метод менее распространён, чем предыдущие, но может быть полезен в теоретических исследованиях.
¶5. Эвристические и алгоритмические методы для СБИС
Для современных сверхбольших интегральных схем (СБИС) с десятками и сотнями переменных точные методы (Квайна — Мак-Класки) становятся непрактичными. Используются эвристические алгоритмы, такие как:
- ESPRESSO — один из самых известных алгоритмов, основанный на итеративном улучшении покрытия (операции расширения, сокращения, перестановки). Даёт близкие к оптимальным результаты за приемлемое время.
- MINI — ранний алгоритм, использующий стратегию «разделяй и властвуй».
- Генетические алгоритмы и имитация отжига — применяются для поиска субоптимальных решений в задачах с очень большим пространством поиска.
¶Критерии минимальности
Понятие «минимальная форма» не является однозначным. На практике чаще всего стремятся к минимизации по двум критериям:
- Количество литералов — отражает число входов логических элементов.
- Количество членов (термов) — отражает число логических элементов (вентилей) в схеме.
Обычно эти критерии коррелируют, но не всегда. В некоторых случаях (например, при использовании программируемых логических матриц — ПЛМ) важнее минимизировать число термов, даже если число литералов при этом возрастёт.
¶Применение
Минимизация логических функций является неотъемлемой частью проектирования цифровых устройств:
- Проектирование комбинационных схем (дешифраторы, мультиплексоры, сумматоры, компараторы).
- Синтез конечных автоматов (устройства управления, контроллеры).
- Разработка программируемых логических интегральных схем (ПЛИС) — минимизация позволяет эффективнее использовать ресурсы кристалла.
- Оптимизация встроенного программного обеспечения — упрощение логических выражений в коде микроконтроллеров.
¶Инструментальные средства
Большинство современных САПР (систем автоматизированного проектирования) электроники, таких как Quartus (Intel/Altera), Vivado (AMD/Xilinx), ISE, ModelSim, а также специализированные пакеты (Logic Friday, Espresso, Berkeley SIS) включают встроенные модули минимизации. Они автоматически преобразуют описание схемы на языке HDL (VHDL, Verilog) в оптимизированную логическую сеть.
¶Ограничения и альтернативы
Минимизация логических функций не является единственным способом оптимизации цифровых схем. В современных СБИС часто применяются:
- Технологическое отображение — замена абстрактных логических вентилей на конкретные библиотечные элементы с учётом их электрических характеристик (задержка, мощность).
- Ретайминг — перестановка триггеров для уменьшения критического пути.
- Логический синтез с учётом временных ограничений — жертва площадью ради достижения заданной тактовой частоты.
Тем не менее, классическая минимизация остаётся фундаментальным этапом, особенно на ранних стадиях проектирования и для схем с небольшим числом входов.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


