Карта Карно изображает в виде графических квадратов (клеток) все возможны комбинации переменных, причем переменные, определяющие координаты клеток карты, размещают так, чтобы при переходе из одной клетки в соседнюю, как по горизонтали, так и по вертикали, изменялась только одна переменная.
Если требуется получить карту Карно для какой – либо функции, сначала надо записать эту функцию в СДНФ, – в совершенной дизъюнктивно нормальной форме, или в виде таблицы истинности.
Каждое слагаемое булева выражения в СДНФ, или каждая единица в столбце функции таблицы истинности, задается на карте Карно единицей в соответствующей клетке. Координаты этой клетки содержат те же входные переменные и их инверсии, что и данное слагаемое СДНФ булева выражения ( или данная строка таблицы истинности ).
http://procad.ru/content/view/490/32/
Карты Карно –
координатный способ представления
булевых функций.
При данном способе
задания таблица истинности функции
представляется в виде координатной
карты состояний, которая содержит 2n
клеток (по числу входных наборов булевой
функции n переменных). Переменные функции
разбиваются на две группы так, что одна
группа определяет координаты столбца
карты, а другая – координаты строки.
При такoм способе
построения каждая клетка определяется
значениями переменных, соответствующих
определенному двоичному набору. Внутри
каждой клетки карты Карно ставится
значение функции на данном наборе.
Переменные в строках и столбцах
располагаются так, чтобы соседние клетки
карты Карно различались только в одном
разряде переменных, т.е. были соседними.
Поэтому значения переменных в столбцах
и в строках карты образуют соседний код
Грея. Такой способ представления очень
удобен для наглядности при минимизации
булевых функций.
Карты Карно были
изобретены в 1952 г. Эдвардом В. Вейч’ем
и усовершенствованы в 1953 г. Морисом
Карно, физиком из “Бэлл Лабс”Метод
карт Карно применим к минимизации
булевых функций до 6-ти переменных (до
4 переменных на плоскости) и до 6 – в
трехмерной интерпретации.
===================================================================================
8. Построение сднф по карте карно. 9. Построение скнф по карте карно
Правила минимизации
с использованием карт Карно
1. В карте Карно
группы единиц (для получения ДНФ) и
группы нулей (для получения КНФ) необходимо
обвести четырехугольными контурами.
Внутри контура должны находится только
одноименные значения функции. Этот
процесс соответствует операции склеивания
или нахождения импликант данной функции.
2. Количество клеток
внути контура должно быть целой степенью
двойки (1, 2, 4, 8, 16…).
3. При проведении
контуров крайние строки карты (верхние
и нижние, левые и правые), а также угловые
клетки, считаются соседними (для карт
до 4-х переменных).
4. Каждый контур
должен включать максимально возможное
количество клеток. В этом случае он
будет соответствовать простой импликанте.
5. Все единицы
(нули) в карте (даже одиночные) должны
быть охвачены контурами. Любая единица
(нуль) может входить в контуры произвольное
количество раз.
6. Множество
контуров, покрывающих все 1 (0) функции
образуют тупиковую ДНФ (КНФ). Целью
минимизации является нахождение
минимальной из множества тупиковых
форм.
7. В элементарной
конъюнкции (дизъюнкции), которая
соответствует одному контуру, остаются
только те переменные, значение которых
не изменяется внутри обведенного
контура. Переменные булевой функции
входят в элементарную коньюнкцию (для
значений функции 1) без инверсии, если
их значение на соответствующих координатах
равно 1 и с инверсией – если 0. Для значений
булевой функции, равных 0, записываются
элементарные дизьюнкции, куда переменные
входят без инверсии, если их значение
на соответствующих координатах равно
0 и с инверсией – если 1.
====================================================================================
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Схемотехника. Минимизация логических функций
Время на прочтение
5 мин
Количество просмотров 367K
Минимизация логических функций является одной из типовых задач в процессе обучения схемотехнике. Посему считаю, что такая статья имеет место быть, надеюсь Вам понравится.
Зачем это нужно?
Сложность логической функции, а отсюда сложность и стоимость реализующей ее схемы (цепи), пропорциональны числу логических операций и числу вхождений переменных или их отрицаний. В принципе любая логическая функция может быть упрощена непосредственно с помощью аксиом и теорем логики, но, как правило, такие преобразования требуют громоздких выкладок.
К тому же процесс упрощения булевых выражений не является алгоритмическим. Поэтому более целесообразно использовать специальные алгоритмические методы минимизации, позволяющие проводить упрощение функции более просто, быстро и безошибочно. К таким методам относятся, например, метод Квайна, метод карт Карно, метод испытания импликант, метод импликантных матриц, метод Квайна-Мак-Класки и др. Эти методы наиболее пригодны для обычной практики, особенно минимизация логической функции с использованием карт Карно. Метод карт Карно сохраняет наглядность при числе переменных не более шести. В тех случаях, когда число аргументов больше шести, обычно используют метод Квайна-Мак-Класки.
В процессе минимизации той или иной логической функции, обычно учитывается, в каком базисе эффективнее будет реализовать ее минимальную форму при помощи электронных схем.
Минимизация логических функций при помощи карт Карно
Карта Карно — графический способ минимизации переключательных (булевых) функций, обеспечивающий относительную простоту работы с большими выражениями и устранение потенциальных гонок. Представляет собой операции попарного неполного склеивания и элементарного поглощения. Карты Карно рассматриваются как перестроенная соответствующим образом таблица истинности функции. Карты Карно можно рассматривать как определенную плоскую развертку n-мерного булева куба.
Карты Карно были изобретены в 1952 Эдвардом В. Вейчем и усовершенствованы в 1953 Морисом Карно, физиком из «Bell Labs», и были призваны помочь упростить цифровые электронные схемы.
В карту Карно булевы переменные передаются из таблицы истинности и упорядочиваются с помощью кода Грея, в котором каждое следующее число отличается от предыдущего только одним разрядом.
Основным методом минимизации логических функций, представленных в виде СДНФ или СКНФ является операция попарного неполного склеивания и элементарного поглощения. Операция попарного склеивания осуществляется между двумя термами (членами), содержащими одинаковые переменные, вхождения которых (прямые и инверсные) совпадают для всех переменных, кроме одной. В этом случае все переменные, кроме одной, можно вынести за скобки, а оставшиеся в скобках прямое и инверсное вхождение одной переменной подвергнуть склейке. Например:
Возможность поглощения следует из очевидных равенств
Таким образом, главной задачей при минимизации СДНФ и СКНФ является поиск термов, пригодных к склейке с последующим поглощением, что для больших форм может оказаться достаточно сложной задачей. Карты Карно предоставляют наглядный способ отыскания таких термов.
Как известно, булевы функции N переменных, представленные в виде СДНФ или СКНФ могут иметь в своём составе 2N различных термов. Все эти члены составляют некоторую структуру, топологически эквивалентную N–мерному кубу, причём любые два терма, соединённые ребром, пригодны для склейки и поглощения.
На рисунке изображена простая таблица истинности для функции из двух переменных, соответствующий этой таблице 2-мерный куб (квадрат), а также 2-мерный куб с обозначением членов СДНФ и эквивалентная таблица для группировки термов:
В случае функции трёх переменных приходится иметь дело с трёхмерным кубом. Это сложнее и менее наглядно, но технически возможно. На рисунке в качестве примера показана таблица истинности для булевой функции трёх переменных и соответствующий ей куб.
Как видно из рисунка, для трёхмерного случая возможны более сложные конфигурации термов. Например, четыре терма, принадлежащие одной грани куба, объединяются в один терм с поглощением двух переменных:
В общем случае можно сказать, что 2K термов, принадлежащие одной K–мерной грани гиперкуба, склеиваются в один терм, при этом поглощаются K переменных.
Для упрощения работы с булевыми функциями большого числа переменных был предложен следующий удобный приём. Куб, представляющий собой структуру термов, разворачивается на плоскость как показано на рисунке. Таким образом появляется возможность представлять булевы функции с числом переменных больше двух в виде плоской таблицы. При этом следует помнить, что порядок кодов термов в таблице (00 01 11 10) не соответствует порядку следования двоичных чисел, а клетки, находящиеся в крайних столбцах таблицы, соседствуют между собой.
Аналогичным образом можно работать с функциями четырёх, пяти и более переменных. Примеры таблиц для N=4 и N=5 приведены на рисунке. Для этих таблиц следует помнить, что соседними являются клетки, находящиеся в соответственных клетках крайних столбцов и соответственных клетках верхней и нижней строки. Для таблиц 5 и более переменных нужно учитывать также, что квадраты 4х4 виртуально находятся друг над другом в третьем измерении, поэтому соответственные клетки двух соседних квадратов 4х4 являются сосоедними, и соответствующие им термы можно склеивать.
Карта Карно может быть составлена для любого количества переменных, однако удобно работать при количестве переменных не более пяти. По сути Карта Карно — это таблица истинности составленная в 2-х мерном виде. Благодаря использованию кода Грея в ней верхняя строка является соседней с нижней, а правый столбец соседний с левым, т.о. вся Карта Карно сворачивается в фигуру тор (бублик). На пересечении строки и столбца проставляется соответствующее значение из таблицы истинности. После того как Карта заполнена, можно приступать к минимизации.
Если необходимо получить минимальную ДНФ, то в Карте рассматриваем только те клетки которые содержат единицы, если нужна КНФ, то рассматриваем те клетки которые содержат нули. Сама минимизация производится по следующим правилам (на примере ДНФ):
- Объединяем смежные клетки содержащие единицы в область, так чтобы одна область содержала 2n (n целое число = 0…) клеток(помним про то что крайние строки и столбцы являются соседними между собой), в области не должно находиться клеток содержащих нули;
- Область должна располагаться симметрично оси(ей) (оси располагаются через каждые четыре клетки);
- Не смежные области расположенные симметрично оси(ей) могут объединяться в одну;
- Область должна быть как можно больше, а кол-во областей как можно меньше;
- Области могут пересекаться;
- Возможно несколько вариантов накрытия.
Далее берём первую область и смотрим какие переменные не меняются в пределах этой области, выписываем конъюнкцию этих переменных, если неменяющаяся переменная нулевая, проставляем над ней инверсию. Берём следующую область, выполняем то же самое что и для первой, и т. д. для всех областей. Конъюнкции областей объединяем дизъюнкцией.
Например(для Карт на 2-ве переменные):
Для КНФ всё то же самое, только рассматриваем клетки с нулями, не меняющиеся переменные в пределах одной области объединяем в дизъюнкции (инверсии проставляем над единичными переменными), а дизъюнкции областей объединяем в конъюнкцию. На этом минимизация считается законченной. Так для Карты Карно на рис.1 выражение в формате ДНФ будет иметь вид:
В формате КНФ: