ПТЦА - Лекции / Лекция 4
.pdf
Синтез преобразователей кодов
Очень часто возникает необходимость перехода от одного способа кодирования к другому, например, от двоично-десятичной системы счисления к двоичной, от двоичного кода к циклическому и т. д. Подобные задачи решаются разными путями. Одним таких путей является применение комбинационных узлов, называемых преобразователями кодов. Условное обозначение преобразователя кода приведено на рисунке 1.
Рисунок 1 – Условное графическое обозначение преобразователя кода.
Одним из весьма распространенных путей реализации преобразователей кодов является метод последовательного соединения дешифратора и шифратора
(рисунок 2). Дешифратор преобразовывает входной код Х 1 , Х 2 , Х 3 в некоторую пространственную позицию, которая затем вновь кодируется шифратором в соответствии с заданием в код Y 1,Y 2 ,Y 3 .
Рисунок 2 – Схема преобразователя кода на основе дешифратора и шифратора. Такой путь чрезвычайно прост и гибок в реализации (поскольку изменение способа кодирования может быть достигнуто простой перепайкой шин, соединяющих дешифратор и шифратор). Однако при этом неизбежна аппаратурная избыточность схем. Кроме того, задержка сигналов здесь, как правило, превышает минимально достижимую задержку в оптимальных схемах. Последние могут быть синтезированы на основе таблиц истинности, показывающих соответствие исходных и преобразованных кодов.
Приведем пример синтеза преобразователей кодов, предназначенных для
перехода от четырехразрядного двоичного позиционного кода к четырехразрядному циклическому коду Грея и обратно. В коде Грея переход к соседнему числу сопровождается изменением значения только в одном разряде. Переход от двоичного кода к коду Грея осуществляется следующим образом. Старшие разряды совпадают, а любой следующий разряд кода Грея равен сумме
по модулю 2 соответствующего разряда X k и предыдущего разряда X k −1
двоичного кода, т. е. Y k= X k X k−1 .
При переходе от кода Грея к двоичному коду старшие разряды обоих кодов также совпадают, а каждый следующий разряд двоичного кода получается в результате сложения по модулю 2 полученного предыдущего разряда этого кода
и соответствующего разряда кода Грея, т. е. X k = Х k −1 Y k . Указанную
процедуру можно свести к последовательному просмотру и преобразованию цифр кода Грея, начиная со старшего разряда этого кода: цифра остается без изменения, если число предшествующих единиц четно (нуль считается четным числом), и инвертируется, если число предшествующих единиц нечетно.
Преобразование четырехразрядного двоичного кода в код Грея осуществляется
в соответствии с таблицей 1. С помощью |
карт Карно |
(рисунок |
3) найдем |
минимальные ДНФ функций выхода |
Y i X 1 , Х 2 , Х 3, Х 4 i=1 ,2,3,4 |
||
преобразователя кодов:
Y 1 X 1 , Х 2 , Х3 , Х 4 = X 1 ;
Y 2 X 1 , Х 2 , Х 3, Х 4 =X 1 X 2 X 1 X 2 ;
Y 3 X 1 , Х 2 , Х 3 , Х 4 = X 2 X 3 X 2 X 3 ;
Y 4 X 1 , Х 2 , Х 3 , Х 4 = X 3 X 4 X 3 X 4 ;
|
|
|
|
|
|
|
|
Таблица 1 |
Позиционный двоичный код |
|
Циклический код Грея |
||||||
|
|
|
|
|
|
|
|
|
X 1 |
X 2 |
X 3 |
X 4 |
Y 1 |
|
Y 2 |
Y 3 |
Y 4 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
0 |
|
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
0 |
0 |
|
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
1 |
0 |
|
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
0 |
|
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
0 |
|
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
|
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
0 |
1 |
|
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
0 |
1 |
|
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
X 1 X 2 |
|
00 |
01 |
|
11 |
|
10 |
|
00 |
|
0 |
0 |
|
1 |
|
1 |
|
01 |
|
0 |
0 |
|
1 |
|
1 |
|
11 |
|
0 |
0 |
|
1 |
|
1 |
|
10 |
|
0 |
0 |
|
1 |
|
1 |
|
|
|
|
Для функции |
Y 1 |
|
|
|
|
X 1 X 2 |
|
00 |
01 |
|
11 |
|
10 |
|
00 |
|
0 |
1 |
|
0 |
|
1 |
|
01 |
|
0 |
1 |
|
0 |
|
1 |
|
11 |
|
0 |
1 |
|
0 |
|
1 |
|
10 |
|
0 |
1 |
|
0 |
|
1 |
|
|
|
|
Для функции |
Y 2 |
|
|
|
|
X 1 X 2 |
|
00 |
01 |
|
11 |
|
10 |
|
00 |
|
0 |
1 |
|
1 |
|
0 |
|
01 |
|
0 |
1 |
|
1 |
|
0 |
|
11 |
|
1 |
0 |
|
0 |
|
1 |
|
10 |
|
1 |
0 |
Y |
0 |
|
1 |
1 |
0 |
1 |
|
Для функции |
3 |
1 |
0 |
|
|
1 |
1 |
1 |
|||||
1 |
1 |
0 |
|
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
|
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
|
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
|
1 |
1 |
0 |
0 |
0 |
X 3 X 4
X 3 X 4
X 3 X 4
X 1 X 2 |
00 |
01 |
11 |
10 |
X 3 X 4
00 |
0 |
0 |
0 |
0 |
01 |
1 |
1 |
1 |
1 |
|
|
|
|
|
11 |
0 |
0 |
0 |
0 |
|
|
|
|
|
10 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
Для функции |
Y 4 |
|
Рисунок 3 – Карты Карно для нахождения МДНФ функций выхода преобразователя кодов.
Построим реализующую их логическую схему на 2-входовых элементах И и ИЛИ (рисунок 4).
Рисунок 4
Аналогичным образом можно синтезировать схему для обратного преобразования кодов.
Преобразователи кодов (ПК) могут быть весовыми и невесовыми. Весовые ПК
преобразуют информацию из одной системы счисления в другую. Основное назначение невесовых – преобразование информации для ее дальнейшего отображения. В качестве примера рассмотрим преобразователь двоичного кода в код для семисегментных светодиодных индикаторов (рисунок 5). На рисунке
также показан фрагмент подключения одного сегмента к выходу схемы с общим эмиттером и приведены начертания первых пяти цифр.
Рисунок 5 Такой преобразователь должен иметь четыре входа, т. к. для кодирования
десятичных цифр от 0 до 9 достаточно четырех двоичных, и семь выходов, по одному на каждый сегмент. Таблица истинности преобразователя, она же таблица, в соответствии с которой, например в цифре 0 должны светиться все сегменты за исключением сегмента G. В цифре 1 светятся только два сегмента B и C и т. д. В таблице 2 представлена таблица истинности преобразователя двоичного кода в семисегментный. Нули в ней проставлены для тех цифр, в которых сегмент не светится. x — неопределенные состояния.
X 3 |
X 2 |
X 1 |
X 0 |
A |
B |
C |
D |
E |
F |
G |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
0 |
x |
x |
x |
x |
x |
x |
x |
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
1 |
x |
x |
x |
x |
x |
x |
x |
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
0 |
x |
x |
x |
x |
x |
x |
x |
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
1 |
x |
x |
x |
x |
x |
x |
x |
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
0 |
x |
x |
x |
x |
x |
x |
x |
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
1 |
x |
x |
x |
x |
x |
x |
x |
|
|
|
|
|
|
|
|
|
|
|
В общем случае для синтеза этого ПК требуется составить семь уравнений. Найдем одно, для сегмента A, заполнив сначала для него таблицу Карно. Сверху, на рисунке 6 приведена карта Карно прямого значения функции сегмента A. Когда в таблице нулевых клеток значительно меньше и они компактно сгруппированы, полезнее искать алгебраическое выражение инверсной логической функции, т. е. Y A , ее таблица дана снизу. Функция при
этом может получиться значительно проще, т. е. содержать меньше переменных и слагаемых. Шесть двоичных наборов начиная с 1010 в таблице не определены из-за отсутствия десятичных цифр больших девятки, поэтому для минимизации выгоднее считать некоторые из них единицами. Из таблицы найдем:
Y A= X 3 X 2 X 1 X 0 X 2 X 1 X 0 .
Тогда искомое выражение будет иметь вид:
Y A= X 3 X 2 X 1 X 0 X 2 X 1 X 0 .
X 1 X 0 |
00 |
01 |
11 |
10 |
X 3 X 2
00 |
1 |
0 |
1 |
1 |
01 |
0 |
1 |
1 |
1 |
|
|
|
|
|
11 |
x |
x |
x |
x |
|
|
|
|
|
10 |
1 |
1 |
x |
x |
X 1 X 0 |
00 |
01 |
11 |
10 |
X 3 X 2
00 |
0 |
1 |
0 |
0 |
01 |
1 |
0 |
0 |
0 |
|
|
|
|
|
11 |
x |
x |
x |
x |
|
|
|
|
|
10 |
0 |
0 |
x |
x |
Рисунок 6
