
14.2.2 Минимизация систем логических уравнений
Логическая схема с mвыходами описывается системойmлогических уравнений. (Для каждого выхода – свое уравнение.)
Простейший подход к минимизации таких систем уравнений – минимизация каждого уравнения системы в отдельности, но получаемый результат будет далеко не лучшим. Существует несколько, достаточно общих, способов минимизации систем логических уравнений. В основе всех этих способов лежит идея использования одной функции или ее части для получения других функций. Например, пусть заданы функции:
Вполне очевидно, что для минимизации можно использовать соотношения:
что значительно сократит объем необходимого оборудования при реализации.
Удобным и наглядным для минимизации систем логических уравнений является способ с использованием карт Карно.
Применение этого способа покажем на примере.
Пусть даны три функции:
Составим для этих функций карты Карно (табл. 14.7).
При сравнении карт легко видеть, что функции имеют четыре общих единицы (эти единицы отмечены звездочкой), которые можно выразить некоторой функцией
.
Таблица 14.7 | ||||||||||||||||||
f1 |
|
|
f2 |
|
|
f3 | ||||||||||||
x3\x2x1 |
00 |
01 |
11 |
10 |
|
|
x3\x2x1 |
00 |
01 |
11 |
10 |
|
|
x3\x2x1 |
00 |
01 |
11 |
10 |
0 |
0 |
1 |
0 |
1 |
|
|
0 |
1 |
0 |
0 |
1* |
|
|
0 |
1 |
1 |
0 |
1* |
1 |
1* |
1* |
0 |
1* |
|
|
1 |
1* |
1* |
1 |
1* |
|
|
1 |
1* |
1* |
0 |
1* |
С учетом этого выражения функции f1,f2,f3можно представить следующим образом
14.2.3 Минимизация частично определенных логических функций
В табл. 14.8 приведен пример частично определенной логической функции y, с помощью которой сделана попытка закодировать рабочие дни недели информационно–расчетного центра с учетом видов работы.
Прием посетителей производится по понедельникам, вторникам, четвергам и субботам. В среду и пятницу проводится работа с организациями. Воскресенье – выходной день.
Таблица 14.8 | |||||||||
|
№ |
c |
b |
a |
y |
y0 |
y1 |
y2 |
y3 |
|
0 |
0 |
0 |
0 |
* |
0 |
0 |
1 |
1 |
Пн |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
Вт |
2 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
Ср |
3 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
Чт |
4 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
Пт |
5 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
Сб |
6 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
Вс |
7 |
1 |
1 |
1 |
* |
0 |
1 |
0 |
1 |
Два набора входных переменных 000 и 111 не используются, т.е. они никогда не будут подаваться на устройство кодирования, поэтому функция yна наборах 0 и 7 может принимать любые значения. В графахy0,y1,y2,y3табл. 26 показаны все четыре возможных варианта значений этой функции.
Для определения наиболее простого варианта кодирования дней недели проведем минимизацию функций y0,y1,y2,y3с помощью карт Карно (см. табл. 14.9, где звездочкой отмечены доопределенные значения функции).
В результате получаем
,
,
,
.
Как видим, y2оказалась самой простой функцией.
Таблица 14.9 | |||||||||||||||||||||||||||||||
y0
|
y1
| ||||||||||||||||||||||||||||||
y2
|
y3
|
Другой пример частично определенной функции дает логический узел ЭВМ – шифратор, таблица истинности которого приведена в табл. 14.10.
Таблица 14.10
Входы СD |
Выходы CD | ||||
y0 |
y1 |
y2 |
y3 |
a |
b |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Шифратор
(полный) имеет в общем случае 2nвходов иnвыходов и
выполняет преобразование единичных
сигналов на отдельных входах в двоичные
наборы на выходах. При 2nвходах возможновходных
наборов, а используется только 2nнабора, поэтому функции на выходах
шифратора являются частично определенными.
Например, приn= 2,
когда число входов равно 4 (входыyi),
выходные функцииaиbопределены только
на четырех наборах из 16 возможных.
Формулы для выходных функций aиbопределяются по картам Карно, показанным в табл. 14.11 и табл. 14.12.
В картах Карно не используемые наборы помечены символом *, а в выделенных прямоугольниках символы * заменяются 1.
Таблица 14.11
a | ||||
y0y1\y2y3 |
00 |
01 |
11 |
10 |
00 |
* |
1 |
1* |
0 |
01 |
1 |
1* |
1* |
1* |
11 |
1* |
1* |
1* |
1* |
10 |
0 |
1* |
1* |
* |
Таблица 14.12
b | ||||
y0y1\y2y3 |
00 |
01 |
11 |
10 |
00 |
* |
1 |
1* |
1 |
01 |
0 |
1* |
1* |
1* |
11 |
* |
1* |
1* |
1* |
10 |
0 |
1* |
1* |
1* |
Рекомендация: Если имеем дело с частично определенной функцией, то на наборах, на которых функция не определена, можно ставить либо «0», либо «1», и выбирать вариант, при котором функция получается самой простой. Причем заключение о лучшем варианте, как правило, можно сделать непосредственно по картам функций, не составляя выражений для функций.