Булева алгебра и минимизация логических функций

Основные законы булевой алгебры, таблицы истинности, СДНФ и СКНФ, минимизация методом карт Карно и Квайна, переход к логической схеме.

Булева алгебра описывает функции, у которых и аргументы, и результат принимают два значения. На ней держится вся цифровая схемотехника: любая логическая функция реализуется набором вентилей, а минимизация напрямую сокращает число микросхем.

Основные операции

ОперацияОбозначениеЧитаетсяРезультат 1 когда
Конъюнкцияx ∧ y, x·yИОба аргумента равны 1
Дизъюнкцияx ∨ y, x+yИЛИХотя бы один равен 1
Отрицание¬x, x̄НЕАргумент равен 0
Импликацияx → yЕсли ... тоКроме случая 1 → 0
Эквиваленцияx ↔ yТогда и только тогдаАргументы равны
Сумма по модулю 2x ⊕ yXORАргументы различны

Законы

Коммутативность:  x∨y = y∨x            x·y = y·x
Ассоциативность:  (x∨y)∨z = x∨(y∨z)
Дистрибутивность: x·(y∨z) = x·y ∨ x·z   x∨(y·z) = (x∨y)·(x∨z)
Идемпотентность:  x∨x = x               x·x = x
Поглощение:       x ∨ x·y = x           x·(x∨y) = x
Склеивание:       x·y ∨ x·ȳ = x
Де Моргана:       ¬(x∨y) = x̄·ȳ          ¬(x·y) = x̄ ∨ ȳ
Константы:        x∨0 = x, x∨1 = 1, x·0 = 0, x·1 = x
Дополнение:       x ∨ x̄ = 1             x · x̄ = 0
Второй закон дистрибутивности — x∨(y·z) = (x∨y)·(x∨z) — в обычной алгебре неверен, и именно на нём чаще всего ошибаются. В булевой он работает, потому что сложение здесь не арифметическое.

СДНФ и СКНФ

Любую функцию можно записать канонически прямо по таблице истинности.

Пример для f(x,y,z) = 1 на наборах 001, 011, 111:

СДНФ:  f = x̄·ȳ·z ∨ x̄·y·z ∨ x·y·z

Минимизация картами Карно

Карта Карно — таблица истинности, перестроенная так, что соседние клетки отличаются значением ровно одной переменной (код Грея). Это позволяет видеть склейки глазами.

  1. Разметить карту в коде Грея: для двух переменных порядок столбцов 00, 01, 11, 10 — не 00, 01, 10, 11.
  2. Расставить значения функции по наборам.
  3. Объединить единицы в прямоугольные области размером 1, 2, 4, 8 клеток — только степени двойки.
  4. Области берут максимально большими, они могут пересекаться и заворачиваться через края карты — левый край соседствует с правым, верх с низом.
  5. Каждая область даёт конъюнкцию из переменных, которые внутри неё не меняются.
  6. Полученные конъюнкции объединить через ИЛИ.
Карта Карно для трёх переменных, f = 1 на 001, 011, 101, 111

        yz=00   01   11   10
  x=0     0     1    1     0
  x=1     0     1    1     0

Выделяется один блок из четырёх единиц — вся колонка z=1.
Внутри блока x и y меняются, постоянна только z.

Ответ:  f = z

Проверка через СДНФ:
x̄ȳz ∨ x̄yz ∨ xȳz ∨ xyz = z·(x̄ȳ ∨ x̄y ∨ xȳ ∨ xy) = z·1 = z

Размер области напрямую связан с числом переменных в слагаемом: блок из 2 клеток убирает одну переменную, из 4 — две, из 8 — три. Отсюда правило: чем крупнее области, тем короче итоговая формула.

Что дальше в лабораторной

Формулировка вывода, которую ждут на защите: минимизация сократила число вентилей с N до M, то есть на столько-то процентов, при полном сохранении таблицы истинности.

Частые вопросы

До скольких переменных удобны карты Карно?

До четырёх — карта 4×4 читается легко. Для пяти-шести переменных применяют метод Квайна-Мак-Класки, он табличный и алгоритмизируется.

Можно ли объединять нули вместо единиц?

Да, тогда получится минимальная КНФ вместо ДНФ. Иногда она короче — стоит посчитать оба варианта и выбрать тот, где меньше вентилей.

Читайте также

Сделаем работу по этой теме

Опишите задачу — ответим в течение 15 минут в личных сообщениях ВКонтакте, назовём срок и цену. Предоплаты за оценку нет.

  • Оценка заявки бесплатно
  • Правки по замечаниям преподавателя
  • Работы по всем техническим и IT-дисциплинам

Нажимая кнопку, вы соглашаетесь на обработку указанных данных для ответа на заявку.