Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
71
Добавлен:
02.05.2014
Размер:
455.17 Кб
Скачать

fmin(x1;x2;x3;x4)=(x1x4)(x1x2x4)(x1x2x3).

Итак, получены две альтернативные минимальные формы КНФ булевой функции, заданной в 3.10.1 СКНФ.

4.10.3. Минимизация частично определённой булевой функции.

В реальных задачах часто значение булевой функции на некоторых наборах двоичных переменных не определено и может принимать любое значение. В этих случаях удобно воспользоваться картами Карно и доопределить булеву функцию так, чтобы получить минимальную нормальную форму. Для объяснения метода доопределения и минимизации воспользуемся примерами, данными в 3.10.1 в виде СДНФ и СКНФ булевой функции. На рис. 54 приведена карта Карно и заданные значения булевой функции. При этом оказалось, что для наборов (1;1;0;1) и (1;0;1;0) не определено значение булевой функции. Отметим эти элементы таблицы знаком “”.

Если для набора (1;1;0;1) допустить значение булевой функции 1, то минимальная ДНФ примет вид:

fmin(x1;x2;x3;x4)=x1x4x1x2.

Если для набора (1;0;1;0) допустить значение булевой функции 0, то минимальная КНФ примет вид:

fmin(x1;x2;x3;x4)=(x1x4)(x1x2).

Так можно использовать частичное определение булевой функции для уменьшения формы формулы булевой функции.

x1

1100

1

1110

1

0110

0

0100

0

1101

1111

1

0111

1

0101

1

1001

0

1011

0

0011

1

0001

1

1000

0

1010

0010

0

0000

0

x3

Рис. 54.Карта Карно для примера 3.10.1.

x2

x4

4.10.4. Минимизация системы булевых функций.

Система булевых функций, представленная в совершенной нормальной форме (ДНФ или КНФ), называется минимальной, если её полное множество простых импликант (имплицент) содержит минимальное число двоичных переменных, а минимальное множество простых импликант представляет каждую булеву функцию системы.

Поэтому для поиска минимальной ДНФ (КНФ) формируется полное множество элементарных конъюнкций (дизъюнкций) системы K, приписывая к каждому элементу множества индекс булевой функции. На основе множества K следует построить новую функцию  с указанием номера исходной булевой функции. Для построенной вновь функции выполнить процедуру минимизации любым методом. При использовании метода Квайна необходимо найти тупиковые ДНФ (КНФ), построить таблицы простых импликант (имплицент) и выбрать такие импликанты (имплиценты), минимальное число которых содержит наименьшее число двоичных переменных.

Пусть дана система булевых функций:

{

f1(x1;x2;x3)=x1x2x3x1x2x3x1x2x3x1x2x3;

f2(x1;x2;x3)=x1x2x3x1x2x3x1x2x3x1x2x3,

для которой множество K содержит следующие конъюнкции (конституенты 1):

K={x1x2x3(1;2);x1x2x3(2);x1x2x3(2);x1x2x3(1;2);x1x2 x3(1); x1x2x3(1)}.

Построим новую функцию (x1;x2;x3) с указанием индексов заданных функций:

(x1;x2;x3)=x1x2x3(1;2)x1x2x3(2)x1x2x3(2)x1x2x3(1;2)

x1x2x3(1)x1x2x3(1).

Выполняя процедуры обобщённого склеивания и поглощения можно получить тупиковую ДНФ функции:

(x1;x2;x3)=x1x3(2)x1x3(1)x1x2(2)x1x2(1)x1x2x3(1;2)

x1x2x3(1;2).

Таблица 40.

Простые импли канты

Kj

Элементарные конъюнкции СДНФ - Ki

x1x2x3

x1x2x3

x1x2x3

x1x2x3

x1x2x3

x1x2x3

индекс булевых функций fi(x1;x2;x3).

f1

f2

f2

f2

f1

f2

f1

f1

x1x3

(2)

0

1

0

0

0

0

0

0

x1x3

(1)

0

0

0

0

1

0

0

1

x1x2

(2)

0

0

[1]

[1]

0

0

0

0

x1x2

(1)

0

0

0

0

0

0

[1]

1

x1x2x3

(1;2)

0

0

0

0

1

[1]

0

0

x1x2 x3(1;2)

[1]

1

0

0

0

0

0

0

Построим таблицу простых импликант тупиковой ДНФ, но обязательно с указанием принадлежности элементарной конъюнкции, соответствующей исходной булевой функции (см. табл. 40).

Ядерными импликантами для двух исходных булевых функций являются (x1x2), (x1x2), (x1x2x3) и (x1x2x3). Эти ядерные импликанты покрывают все элементарные конъюнкции исходных булевых функций. Следовательно, не нужно искать минимальные значения среди неядерных импликант.

Выделенное ядро позволяет построить минимальную ДНФ для функции :

fmin(x1;x2;x3)=x1x2(2)x1x2(1)x1x2x3(1;2)x1x2x3(1;2).

{

В дальнейшем индексы булевых функций в выражении fmin(x1;x2;x3) позволяет записать систему минимальных булевых функций:

f1min(x1;x2;x3)=x1x2x3 x1x2x3x1x2;

f2min(x1;x2;x3)=x1x2x3x1x2x3x1x2.

Особенностью этой системы является то, что обе функции содержат одинаковые ядерные импликанты (x1x2x3) и (x1x2x3) и только по одной отличной для каждой функции ядерной импликанте (x1x2)1 и (x1x2)2.

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

Пусть дана система булевых функций:

f1(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x3x4x1x2x3x4;

f2(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4;

f3(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x3x4;

f4(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x3x4x1x2x3x4.

Составим карту Карно, на которой каждой конституенте “1” припишем индексы исходных булевых функций (см. рис. 55).

x1

11;2;3;4

0

0

11;2;3;4

12;3;4

0

0

12;3;4

11,2

0

13

11,2

11

14

13,4

11

x3

Рис. 55. Карта Карно для примера системы булевых функций.

x4

x2

Анализ карты Карно показывает, что импликанта (x2x3) покрывает констиуенты “1” трёх булевых функций (f2;f3;f4), импликанта (x3x4) покрывает конституенты ”1” одной булевой функции f2, импликанта (x3x4) - конституенты ”1” одной булевой функции f1 и т.д. Если построить таблицу простых импликант для карты Карно, то ядерными импликантами системы булевых функций являются (x1x2x3) для f3 и (x2x3x4) для f4. Остальные импликанты выбираются из системы простых импликант для соответствующей минимальной булевой функции :

f1(x1;x2;x3)=x2x3x3x4;

f2(x1;x2;x3)=x2x3x3x4;

f3 (x1;x2;x3)=x2x3x1x2x3;

f4(x1;x2;x3)=x2x3x2x3x4.

{

Так формируется система минимальных булевых функций с помощью карт Карно.

4.11. Реализация логических функций техническими средствами.

Поскольку логическая функция осуществляет однозначное отображение множества наборов {(x1;x2;……;xn)}, в которых компоненты xi принимают значение из множества {0;1}, в множество y={0;1}, то для её реализации могут быть использованы переключательные или вентильные элементы. Переключательные элементы обладают двумя состояниями и двухсторонней проводимостью. Такими элементами являются выключатели, реле, ключи, коммутаторы и т.п. Вентильные элементы обладают также двумя состояниями, но, как правило, односторонней проводимостью. Такими элементами являются диоды, триоды, микросхемы и т.п. Интегральные микросхемы в одном корпусе реализуют большое число логических функций.

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

В таблице 41 приведены основные условные обозначения логических функций.

Схемы, формируемые вентильными элементами, называют комбинационнами схемами. Если комбинационная схема реализует одну булеву функцию, то её называют одновыходовой комбинационной схемой, если несколько, то - многовыходовой комбинационной схемой.

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

Например, на рис. 56 приведена комбинационная схема, реализующая минимальную ДНФ, синтезированную в 3.10.1. А на рис. 57 - схема, реализующая минимальную ДНФ системы булевых функций, синтезированных в 3.10.4.

Таблица 41.

Логическая функция

(имя, значение)

обозначение по

ГОСТ 2.743-82

“ИЛИ”, дизъюнкция

f(x1;x2)=(x1x2)

x1 1

f(x1;x2)

x2

“И”, конъюнкция

f(x1;x2)=(x1x2)

x1

f(x1;x2)

x2

“ИЛИ - НЕ”, стрелка Пирса

f(x1;x2)=(x1x2)=(x1x2)

x1 1

f(x1;x2)

x2

“И - НЕ”, штрих Шеффера

f(x1;x2)=(x1x2)=(x1x2)

x1

f(x1;x2)

x2

“НЕ - ИЛИ”, импликация

f(x1;x2)=(x1x2)=(x1x2)

x1 1

f(x1;x2)

x2

Сложение по mod 2

f(x1;x2)=(x1x2)

x1 M2

f(x1;x2)

x2

x1 x2 x3 x4

fmin(x1;x2;x3;x4)=

 x1x4  1 =x1x4x1x2x3x1x2x4

x1x2x4

 x1x2  x1x2x3 1

x1x4x1x2x3

Рис. 56. Комбинационная схема для минимальной ДНФ (3.10.1).

x1 x2 x3 x4 f1min f2min f3min f4min

  1

x2x3 x3x4 x2x3x3x4

 1

x2x3x3x4

x2x3

 1

x3x4 x2x3x1x2x3

 x2x3  1

x1x2x3

x1x2x4 x2x3x2x3x4

Рис. 57. Комбинационная схема для системы булевых функций (3.10.4).