108
)xxx)(xxx)(xxx(T
321432421
++= ( .11)
Условимся, что клетки матрицы Карно, занятые множителем КНФ,
определяются следующим образом:
- переменная, входящая в множитель в прямом виде имеет соответствующую
координату клетки, равную нулю,
- клетки помечаются нулем.
Известно, что такое же выражение, но в виде ДНФ, занимает на матрице
Карно все свободные от КНФ клетки. Эти клетки будем помечать
единицами, а
координаты переменной, входящих в ДНФ в прямом виде считать равными
единице.
Три множителя выражения (21.11) заняли на матрице Карно четыре клетки и
помечены нулями. Остальные клетки помечены единицами и являются слагаемыми
ДНФ. Клетки, обведенные черной границей, дают слагаемое x
2
. Клетки,
обведенные красной границей, дают слагаемое x
3
x
4
. Клетки, обведенные синей и
желтой границами, дают слагаемые x
1
x
4
и x
3
x
4
. Таким образом тест в виде ДНФ
равен
4341432
xxxxxxxT +++=
(21.12)
Заметим, что слагаемые ДНФ не содержат инверсий выходов, что
противоречило бы физическому смыслу задачи.
Преобразование ( .11) в ДНФ простым перемножением подтверждает
результат ( .12).
Перевод КНФ в ДНФ при большом числе выходных сигналов – задача очень
трудоемкая. Кроме того при переводе необходимо реализовать минимизацию
выражения. Например из двух слагаемых теста
32121
yyyyy
следует оставить
только первое, так как проверка выхода
3
y
очевидно является лишней. Устранение
лишних проверок произойдет в процессе минимизации ДНФ. Посколько исходные
и конечные логические выражения не должны содержать инверсий, единственной
операцией минимизации является операция поглощения. Из большого
многообразия переводов КНФ в ДНФ укажем следующий способ.
Любая логическая функция может быть представлена с помощью формулы
Шеннона в виде