Преобразователи кодов
Дешифратор (decoder) – комбинационная схема (КС), выполняющая преобразование (n + 1)-разрядного кода X = xn xn-1…x0 (представляющего собою натуральное число) в (m + 1)-разрядный унитарный код Y (унитарный код Y = ym ym-1…y0, – код, у которого во всех разрядах стоят нули, а в разряде номер X записана единица).
Дешифратор, у которого m + 1 = 2n+1, называют полным. Говорят, что полный дешифратор выполняет преобразование (n + 1) ® (m + 1), например 3 ® 8, когда трехразрядный двоичный позиционный код трансформируется в восьмиразрядный унитарный. Дешифратор, у которого m + 1 < 2n+1, называют неполным. Таким является, к примеру, двоично-десятичный дешифратор.
На рис. 1.1 показано условно-графическое обозначение (УГО) для дешифратора. Здесь xnxn-1…x0 – преобразуемый код, ym ym-1…y0 – результат преобразования. Вход Е – разрешающий (стробирующий). На него подается сигнал z так, что при z = 1 дешифратор реализует свою функцию, а при z = 0 на всех выходах дешифратора
, независимо от входного набора.

Рис. 1.1. Условно-графическое обозначение дешифратора
Аналитически функция полного дешифратора задается так:
, (1.1)
.
Как известно, в половине из 2n+1минтермов (1.1) каждый аргумент записан прямо, а в другой половине – под знаком инверсии. Поэтому в состав дешифратора обычно включают усилители-инверторы для каждого хk так, как это показано на рис. 1.2, тем самым формируют и прямое, и инверсное его значение, а кроме того, еще и снижают до единицы нагрузку на источник сигнала хk.

Рис. 1.2. Усилители-инверторы
На рис. 1.3 показан дешифратор 3 ® 8, построенный по формулам (1.1). Такой дешифратор называется линейным, поскольку он представляет собою линейку конъюнкторов, а каждый конъюнктор вычисляет один из минтермов системы (1.1).

Рис. 1.3. Дешифратор 3 ® 8
На рис. 1.4 приведены возможные способы стробирования дешифраторов. На рис. 1.4, а сигнал z поступает на все конъюнкторы. Такой способ стробирования не вносит дополнительной задержки, но требует увеличения числа входов конъюнкторов. На рис. 1.4, б к (m + 1) основным конъюнкторам добавлены еще два, один из них реализует операцию x = z, а второй – операцию
(здесь k = 2, хотя оно может быть и другим). При z = 0 обе эти конъюнкции имеют результатом нуль, которым закрываются все основные конъюнкторы декодера. Такой способ стробирования не связан с увеличением числа входов конъюнкторов, но увеличивает задержку в формировании выходного кода.

Рис. 1.4. Возможные способы стробирования дешифраторов
В номенклатуру интегральных микросхем (ИС) той или иной серии наряду с другими узлами входят и дешифраторы. В ТТЛШ-сериях дешифраторы обычно имеют инверсные выходы, в КМДП-сериях – прямые. ИС декодеров имеют малую разрядность и выполняют преобразования 2 ® 4 (два таких декодера в одном корпусе ИС), 3 ® 8 и редко 4 ® 16. Из таких малоразрядных схем приходится строить дешифраторы требуемой разрядности. К примеру, на рис. 1.5 показано, как из дешифраторов 2 ® 4 построить декодер 4 ® 16. Здесь заданный входной код x3x2x1x0 разбивают на две части x3x2 и x1x0. Старшие цифры x3x2 подают на вход дешифратора DCz, который управляет работой дешифраторов DC3, DC2, DC1 и DC0 по их входам Е. На информационные входы этих дешифраторов подаются младшие цифры входного кода x1x0. Подобные дешифраторы называются двухступенчатыми. На рис. 1.6 приведен еще один способ построения двухступенчатого дешифратора 4 ® 16. Здесь каждая пара цифр x3x2 и x1x0 входного кода обрабатывается своим декодером DCY и DCX, соответственно. Это первая ступень преобразования. Выходы этих дешифраторов образуют сеть из вертикальных и горизонтальных линий, а в узлах этой сетки включены двухвходовые конъюнкторы. Они образуют матричный дешифратор второй ступени. Стробируют двухступенчатые дешифраторы по разрешающему входу декодера первой ступени.
Шифратор (encoder) – КС, которая реализует функцию, обратную функции дешифратора [преобразует (m + 1)-разрядный унитарный код в позиционный код длиною в (n + 1) разрядов]. Таким образом, можно говорить, что шифратор выполняет преобразование (m + 1) ® (n + 1).

Рис. 1.5. Декодер 4 ® 16, состоящий из дешифраторов 2 ® 4

Рис. 1.6. Двухступенчатый дешифратор 4 ® 16
На рис. 1.7, а представлено условное графическое обозначение шифратора 8 ® 3, а на рис. 1.7, б – его функциональная схема. Как видим, здесь
(1.2)
то есть единица из разряда номер X входного унитарного кода Y коммутируется на дизъюнкторы тех разрядов выходного позиционного кода, которые содержат единицы в двоичном изображении X. Скажем, x5 используется и при формировании у2, и при формировании у0. Отметим, что цифра x0 не участвует в формировании выходного кода шифратора.

Рис. 1.7. Условное графическое обозначение и функциональная схема шифратора
Шифраторы, как и дешифраторы, допускают каскадное построение для достижения требуемой разрядности.
Преобразователи произвольных кодов.
В общем случае преобразователь кода – КС, которая выполняет трансформацию входного (n + 1)‑разрядного кода, построенного по одному закону, в выходной – (m + 1)‑разрядный код, построенный по другому закону. Трансформацию кода X = xnxn-1…x0 в код Y = ymym-1… y0 всегда можно описать таблицей, в которой каждому значению xn xn-1…x0 ставится в соответствие значение ymym-1…y0. Входы этой таблицы можно рассматривать – как перечень наборов логических переменных xnxn-1… x0, а каждую цифру уi выходного кода ymym-1…y0 – как значение ПФ yi(xn, xn-1,…, x0). С помощью этой таблицы можно синтезировать КС, свою для каждого уi, i =
.
Пусть, например, преобразование Y = f(X) задано графиком на рис. 1.8. По этому графику составлена табл.1.1. А теперь, рассматривая каждую колонку уi, i =
как ПФ от переменных x2x1x0, можно построить для них схемы в заданном базисе.
Таблица 1.1
Табличное представление преобразования У = f(X), заданного графиком (рис. 1.8)
|
X, α |
Y |
y1 |
y2 |
y3 |
|
0 |
0 |
0 |
0 |
0 |
|
1 |
2 |
0 |
1 |
0 |
|
2 |
1 |
0 |
0 |
1 |
|
3 |
0 |
0 |
0 |
0 |
|
4 |
0 |
0 |
0 |
0 |
|
5 |
-2 |
1 |
1 |
0 |
|
6 |
-1 |
1 |
1 |
1 |
|
7 |
0 |
0 |
0 |
0 |

Рис. 1.8. Преобразование Y = f(x)