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

Минимизация логических функций

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

Основные понятия и термины

Логическая функция задаётся таблицей истинности или аналитическим выражением, использующим операции И (конъюнкция, &), ИЛИ (дизъюнкция, ∨), НЕ (отрицание, ¬). Исходное выражение, полученное непосредственно из таблицы истинности (например, в виде совершенной дизъюнктивной нормальной формы, СДНФ), часто оказывается избыточным. Минимизация позволяет получить минимальную нормальную форму (МНФ) — дизъюнктивную (МДНФ) или конъюнктивную (МКНФ), содержащую наименьшее число литералов (переменных или их отрицаний) и членов.

Ключевые термины:

  • Импликанта — произведение (конъюнкция) некоторого числа переменных, которое обращает функцию в 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. Метод Квайна — Мак-Класки (табличный метод)

Алгоритмический метод, пригодный для автоматизации и работы с функциями любого числа переменных. Состоит из двух этапов:

  1. Поиск всех простых импликант. Все конституенты единицы (минтермы) из СДНФ попарно сравниваются и склеиваются, если они отличаются значением только одной переменной. Процесс повторяется до тех пор, пока возможно склеивание. Полученные импликанты, которые не удалось склеить, являются простыми.
  2. Построение минимального покрытия. Составляется таблица покрытия, где строки — простые импликанты, столбцы — исходные минтермы. Выбирается минимальный набор импликант, покрывающий все столбцы. Обычно сначала выделяют ядро (импликанты, покрывающие уникальные минтермы), а затем решают задачу покрытия оставшихся столбцов, часто методом ветвей и границ или с помощью таблицы Петрика.

Метод Квайна — Мак-Класки является точным (гарантирует нахождение минимальной формы) и хорошо поддаётся программированию. Его недостаток — экспоненциальный рост числа операций при увеличении числа переменных (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 →