Преобразователем кода называется комбинационное устройство, предназначенное для изменения вида кодирования информации. Необходимость в преобразовании кодов связана с тем, что в цифровой системе для представления информации используется несколько разновидностей двоичного кода (прямой, обратный, дополнительный, двоично-десятичный, двоично-десятичный с избытком 3 и т. д.). Используются и другие виды кодов, позволяющие, например, при передаче информации по линиям связи уменьшать вероятность появления ошибки, обнаруживать или даже исправлять ее в дальнейшем. Примерами таких кодов являются коды, построенные по принципу 2 из 5 (в которых из пяти символов два всегда имеют единичное значение), коды с проверкой четности или нечетности, коды Хемминга.
Работа преобразователя кодов так же, как и других комбинационных устройств описывается таблицей истинности, которая устанавливает соответствие кодов, снимаемых с выхода преобразователя, кодам, подаваемым на его вход. Следует отметить, что в общем случае в таблице истинности число разрядов входного и выходного кодов может не совпадать. Важно, что таблица устана-вливает однозначное соответствие различных кодов. Таблица истинности является основанием для синтеза логической структуры конкретного преобразователя кодов.
Рассмотрим таблицу истинности (табл. 1) для преобразователя двоично-десятичного кода в десятичный. Десятичный выход, соответ-ствующий двоично-десятичному коду числа на входе, определяется наличием на нем логической 1. При этом для имеющихся безраз-личных наборов входных переменных выполняется доопределение выходных функций для получения минимизированных логических выражений.
В алгебре логики для минимизации выходных функций относительно небольшого числа входных переменных (не более 6) применяется графический метод, использующий карты Карно, который является более простым и наглядным по сравнению с алгебраическими преобразованиями. Для функций большего числа переменных можно декомпозицией выделить более простые составляющие функции с числом переменных не более 6, которые минимизируются с помощью карты Карно.
Таблица 1
x0 | x1 | x2 | x3 | y0 | y1 | y1 | y3 | y4 | y5 | y6 | y7 | y8 | y9 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
При использовании этого метода исходная функция представляется на карте Карно. Карта Карно для преобразователя двоично-десятичного кода в десятичный, полученная на основании таблицы истинности (табл. 1), и условное графическое обозначение преобразователя приведены на рис. 1.
Рис. 1. Карта Карно (а) и условное графическое обозначение преобразователя двоично-десятичного кода в десятичный (б)
Цифры в клетках карты Карно указывают номера выходных функций, принимающих значение, равное логической 1 на соответствующих наборах входных переменных. Например, на пересечении столбца с номером = 00 и строки с номером = 11 расположена клетка с номером 3, соответствующая набору переменных = 0011, т. е. минтерму , на котором функция у3 = 1. Минтермом (конституентой единицы) называется конъюнкция всех переменных, которые входят в прямом виде, если значение данной переменной в наборе равно 1, либо в инверсном виде, если значение переменной равно 0.
Как видно из рис. 1,а, минтермы, соответствующие двум соседним (в столбце и строке) клеткам карты Карно, отличаются значениями только одной переменной. На карте Карно знаком "Х" обозначены клетки, соответствующие безразличным наборам входных переменных, на которых функции не определены, т. е. эти наборы при работе данного преобразователя не реализуются. Приписав безразличным наборам значение функции, равное логической 1, можно упростить ее алгебраическое выражение. С этой целью на карте Карно пунктирными линиями обведены (графически объединены) соседние клетки (по две и четыре) в столбце и строке, представляющие один конъюнктивный член, в котором исключена общая переменная. Например, объединением минтермов, соответствующих двум соседним клеткам, расположенным на пересечениях столбца с номером 00 и строк с номерами 01 и 11, можно получить
y
4 = x
0x
1x

x

+ x

x
1x

x

+ x
1x

x

Таким образом, минимизированные логические выражения выходных функций преобразователя, полученные графическим объединением клеток на карте Карно, имеют следующий вид:
y
0 = x

x

x

x

; y
1 = x

x

x

x
3; y
2 = x

x
2x

;
y
3 = x

x
2x
3; y
4 = x
1x

x

; y
5 = x
1x

x
3; y
6 = x
1x
2x

;
y
7 = x
1x
2x
3; y
8 = x
0x

; y
9 = x
0x
3.
Согласно этим выражениям, схему преобразователя кодов можно построить на логических элементах И. Для этого достаточно на их входы подать соответствующие минтермы. При необходимости выражения выходных функций могут быть преобразованы с использованием законов и правил алгебры логики к виду, соответствующему выбранному набору элементов (например, И — НЕ, ИЛИ — НЕ, И — ИЛИ — НЕ и т. д.), на которых реализуется логическая схема.