Вы находитесь на странице: 1из 9

Реализация булевых функций

Контактные схемы (v. 1.2)


Определение контактной схемы.
Контактной (или релейно-контактной) схемой называется устройство из проводников
и устройств, называемых двухпозиционными контактами; схема имеет два полюса,
присоединенных к источнику тока.
Каждый контакт подключен к некоторому реле (переключателю). Каждому
переключателю ставится в соответствие своя переменная . Считаем, что переменная
принимает значение 1, если по соответствующему переключателю проходит ток, и 0
в противном случае.

Контакты бывают двух типов.


1) Замыкающие контакты

у=0 у=0 у=1 у=1

х=0 х=0 х=1 х=1

Если переменная (по соответствующему переключателю не проходит ток) – контакт


разомкнут, и по участку цепи ток не проходит ( ). Если переменная (по
соответствующему переключателю проходит ток) – контакт замкнут, и по участку цепи
ток проходит ( ).

2) Размыкающие контакты

у=1 у=1 у=0 у=0

х=0 х=0 х=1 х=1

Если переменная (по соответствующему переключателю не проходит ток) – контакт


замкнут, и по участку цепи ток проходит ( ). Если переменная (по
соответствующему переключателю проходит ток) – контакт разомкнут, и по участку цепи
ток не проходит ( ).

Таким образом, если рассматривать как булеву функцию от переменной , то для


замыкающего контакта , в то время, как для размыкающего контакта ̅.
К одному и тому же переключателю (реле) может быть подключено несколько
замыкающих и несколько размыкающих контактов. Работа всех этих устройств
1
регулируется наличием или отсутствием тока в переключателях . Это означает, что
при срабатывании реле все его замыкающие контакты проводят ток, а все его
размыкающие контакты ток не проводят; при отключении реле создается
противоположная ситуация.

На чертежах (схемах) все замыкающие контакты, подключенные к переключателю ,


xi xi
обозначаются символом , а размыкающие – символом .

Контакты можно соединять друг с другом.


1) Последовательное соединение.
x1 x2

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

2) Параллельное соединение.
x1
x2
Данная схема проводит ток тогда и только тогда, когда хотя бы один из двух контактов
замкнут. Работа этой схемы может быть описана булевой функцией .

Функция проводимости контактной схемы

Контактная (или релейно-контактная) схема представляет собой электрическую схему,


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

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


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

2
Пример.

Рассмотрим булеву функцию , заданную таблично. Построим


𝒙 𝒙 𝒙 f
контактную схему, реализующую данную функцию.
0 0 0 0
Проще всего построить контактную схему, реализующую СДНФ
0 0 1 1 данной функции:
0 1 0 1
f ( x1, x2 , x3 )  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3 .
0 1 1 0
Каждое слагаемое СДНФ данной функции можно реализовать
1 0 0 1
последовательным соединением трех контактов, после чего четыре
1 0 1 0 полученные подсхемы надо соединить параллельно:
1 1 0 0
1 1 1 1

Сложность полученной схемы .

Две релейно-контактные схемы называются эквивалентными (равносильными), если


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

Одна из основных задач, возникающих при построении схем – это задача минимизации:
построить схему минимальной сложности, реализующую заданную функцию .

Попробуем получить схему, эквивалентную полученной выше схеме, но состоящую из


меньшего числа элементов. Первое и самое очевидное соображение: вместо двукратного
x1
использования размыкающего контакта в начале подсхем, реализующих 1-е и 2-е
слагаемые СДНФ, этот контакт можно использовать один раз. То же самое и для
x1
замыкающего контакта , стоящего в начале подсхем, реализующих 3-е и 4-е
слагаемые СДНФ. В результате мы получаем следующую схему, реализующую ту же
функцию :

Сложность этой схемы уже меньше: .


3
Однако, функцию можно реализовать схемой еще мéньшей сложности:

Сложность этой схемы еще меньше: , однако ее получение уже не столь очевидно.

Метод каскадов

Метод каскадов – метод синтеза контактных схем, позволяющий получать схемы


достаточно малой сложности, достаточно близкой к минимальной. Рассмотрим его
работу на примере булевой функции, заданной таблично.

Основу метода составляет разложение булевой функции по одной


f
переменной. Разложим нашу функцию по переменной :
0 0 0 0 0
f ( x1, x2 , x3 , x4 )  x1  f (0, x2 , x3 , x4 )  x1  f (1, x2 , x3 , x4 ) 
0 0 0 1 0
0 0 1 0 0  x1 f0 ( x2 , x3 , x4 )  x1 f1( x2 , x3 , x4 ).
0 0 1 1 0 Заметим, что столбец функции f0 ( x2 , x3 , x4 ) представляет собой
0 1 0 0 0 верхнюю половину столбца функции f , а столбец функции
0 1 0 1 1
f1( x2 , x3 , x4 ) – его нижнюю половину. Тогда контактную схему,
0 1 1 0 1
реализующую функцию f , можно построить следующим образом:
0 1 1 1 0
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0

Здесь и далее рисунок

будет изображать контактную схему, реализующую булеву функцию f .


4
Чтобы построить схемы, реализующие функции f0 ( x2 , x3 , x4 ) и f1( x2 , x3 , x4 ) ,
также применим к этим функциям разложение по одной переменной, на этот раз
по переменной :

f0 ( x2 , x3 , x4 )  x2 f0 (0, x3 , x4)  x2 f0 (1, x3 , x4) 


 x2 f00 ( x3 , x4 )  x2 f01( x3 , x4 )

f1( x2 , x3 , x4 )  x2 f1(0, x3 , x4)  x2 f1(1, x3 , x4) 


 x2 f10 ( x3 , x4 )  x2 f11( x3 , x4 )

Заметим, что столбцы функций f00 ( x3 , x4 ) , f01( x3 , x4 ) , f10 ( x3 , x4 ) , и f11( x3 , x4 )


представляют собой, соответственно, первую, вторую, третью и четвертую четверти
столбца функции f .

Тогда контактную схему, реализующую функцию f , можно построить следующим


образом:

Если продолжать и дальше эти действия, в итоге мы получим контактную


схему, совпадающую со схемой, построенной на основе СДНФ. Однако, уже на
этой стадии можно заметить, что подсхема, реализующая функцию f00 ( x3 , x4 ) ,
должна реализовывать функцию, тождественно равную 0. То есть соответствующая
подсхема не должна проводить ток ни при каком значении переменных. В этом случае
подсхема, реализующая функцию f00 ( x3 , x4 ) , вообще не нужна, так же, как и контакт,
ведущий к ее входному полюсу (контакт ̅ ):

5
Таким образом, наша функция может быть реализована контактной схемой вида:

Далее, заметим, что f01( x3 , x4 )  f10 ( x3 , x4 ) .

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

6
Наконец, функции f10 ( x3 , x4 ) и f11( x3 , x4 ) разложим по переменной :

f10 ( x3 , x4 )  (0110)
f10 ( x3 , x4 )  x3  f10 (0, x4 )  x3  f10 (1, x4 )  x3  f100 ( x4 )  x3  f101( x4 )

= (01) = (10)

f11( x3 , x4 )  (1110)
f11( x3 , x4 )  x3  f11(0, x4 )  x3  f11(1, x4 )  x3  f110 ( x4 )  x3  f111( x4 )

= (11) = (10)

Получаем схему

7
Исходя из тех же соображений, что и выше, получаем, что вместо двух подсхем,
реализующих функции f101( x4 ) и f111( x4 ) , достаточно реализовать одну такую
подсхему. Кроме того, подфункция f110 ( x4 )  1 , это означает, что соответствующая ей
подсхема должна проводить ток при любых значениях переменных. Но в этом случае
такая подсхема не требуется, а контакт, который должен вести к ее входному полюсу
должен быть присоединен к выходному полюсу всей схемы, реализующей функцию f .

x4

1

В итоге мы приходим к контактной схеме

Сложность полученной схемы , что существенно ниже сложности контактной


схемы, полученной для данной функции с помощью СДНФ ( ).

8
Сформулируем теперь метод каскадов в виде алгоритма построения контактной схемы:

Метод каскадов

 Для построения контактной схемы, реализующей заданную булеву функцию,


будем разлагать булеву функцию по переменным.

 Если подфункция, появляющаяся при этом разложении, является тождественным


нулем, то соответствующая подсхема не реализуется, а контакты, ведущие только
к этой подсхеме, отбрасываются.

 Если подфункция, появляющаяся при этом разложении, является тождественной


единицей, то соответствующая подсхема не реализуется, а контакты,
присоединенные к входному полюсу этой подсхемы, присоединяются к
выходному полюсу всей схемы.

 Если при разложении булевой функции появляются одинаковые подфункции,


то соответствующая подсхема реализуется только один раз, а все
соответствующие контакты присоединяются к входному полюсу этой
подсхемы.