
Минимизация логических функций при помощи карт Карно
Минимизация (упрощение формы записи) функции является важной операцией при синтезе логической схемы, так как благодаря предварительно проведенной минимизации схема реализуется с наименьшим числом элементов.
Выявить и устранить избыточность в записи функции можно путем ее преобразований с использованием аксиом, законов, тождеств и теорем алгебры логики. Однако такие преобразования требуют громоздких выкладок и связаны с большой затратой времени.
Современная алгебра логики располагает рядом приемов, разработанных на основе ее правил, позволяющих производить минимизацию функции более просто, быстро и безошибочно. Для минимизации функции с числом переменных до пяти-шести наиболее удобным является метод карт Карно.
Карта Карно представляет собой графическое изображение значений всех возможных комбинаций переменных. Иными словами, карту Карно можно рассматривать как графическое представление всех минтермов заданного числа переменных.
Каждый минтерм изображается на карте в виде клетки. Карта образуется путем такого расположения клеток, при котором минтермы соседних клеток отличаются только значением одной переменной. В связи с указанным соседними считаются также крайние клетки каждого столбца или строки. Символ «1» характеризует прямое значение переменной, а «0» — ее инверсное значение.
Минтермы минимизируемой функции отмечают единицами в соответствующих клетках карты. Минтермы, не входящие в функцию, отмечают в клетках нулями или оставляют клетки пустыми. На основании распределительного закона, а также аксиом 1 и 4 в два минтерма, находящиеся в соседних клетках, могут быть заменены одним логическим произведением, содержащим на одну переменную меньше. Если соседними являются две пары минтермов, то такая группа из четырех минтермов может быть заменена произведением, содержащим уже на две переменные меньше, и т. д. В общем случае наличие единиц в 2п соседних клетках позволяет исключить п переменных. В этом и заключается метод минимизации с применением карт Карно.
Карта Карно позволяет также провести минимизацию той же функции в КНФ по нулевым значениям, минтермов, находящихся в пустых клетках карты и определяющих нулевое значение функции, т. е. ее инверсное значение F. Порядок проведения минимизации сохраняется прежним. Минимизирующие контуры, охватывающие соседние клетки с нулевым значением минтермов рассматриваемой функции.
Минимизация функции в ДНФ или КНФ равноправна. Представление результата минимизации в ДНФ или КНФ зависит от вида функции и состава используемых логических элементов. Реализация функции в ДНФ требует преимущественного использования логических элементов И (И — НЕ), а в КНФ — логических элементов ИЛИ (ИЛИ — НЕ)
При использовании логических элементов И (И — НЕ) логическую функцию целесообразно представить в виде произведения переменных, а логических элементов ИЛИ (ИЛИ — НЕ) — в виде суммы переменных. Задачу решают, воспользовавшись правилом двойной инверсии и теоремой де Моргана
Карта Карно может быть составлена для любого количества переменных, однако удобно работать при количестве переменных не более пяти. По сути Карта Карно — это таблица истинности составленная в 2-х мерном виде. Благодаря использованию кода Грея в ней верхняя строка является соседней с нижней, а правый столбец соседний с левым, т.о. вся Карта Карно сворачивается в фигуру тор (бублик). На пересечении строки и столбца проставляется соответствующее значение из таблицы истинности. После того как Карта заполнена, можно приступать к минимизации.
Если необходимо получить минимальную ДНФ, то в Карте рассматриваем только те клетки которые содержат единицы, если нужна КНФ, то рассматриваем те клетки которые содержат нули. Сама минимизация производится по следующим правилам (на примере ДНФ):
Объединяем смежные клетки содержащие единицы в область, так чтобы одна область содержала 2n (n целое число = 0…) клеток(помним про то что крайние строки и столбцы являются соседними между собой), в области не должно находиться клеток содержащих нули;
Область должна располагаться симметрично оси(ей) (оси располагаются через каждые четыре клетки);
Не смежные области расположенные симметрично оси(ей) могут объединяться в одну;
Область должна быть как можно больше, а кол-во областей как можно меньше;
Области могут пересекаться;
Возможно несколько вариантов накрытия.
Далее берём первую область и смотрим какие переменные не меняются в пределах этой области, выписываем конъюнкцию этих переменных, если неменяющаяся переменная нулевая, проставляем над ней инверсию. Берём следующую область, выполняем то же самое что и для первой, и т. д. для всех областей. Конъюнкции областей объединяем дизъюнкцией.