Под преобразованием кодов понимается преобразование n -разрядных двоичных чисел, представляющих информацию в одном заданном коде, в m -разрядные двоичные числа, представляющие эту информацию в другом коде. Наиболее распространены следующие два подхода к построению преобразователей кодов.
Первый подход – синтез т независимых одновыходных функций по заданной таблице истинности – таблице соответствия кодов.
Допустим, имеется таблица истинности преобразователя 2-раз- рядного двоичного кода в 3-разрядный:
а1 | а0 | b2 | b1 | b0 | ||
Считая b0, b1 и b2 независимыми одновыходными функциями, запишем для каждой из них булевы выражения:
,
,
Используя приведенные булевы выражения с учетом того, что инверсии некоторых переменных и произведение а0 встречаются не в одной функции, составляем схему преобразователя с применением (где это возможно) одних и тех же логических элементов:
Рис.6.1. Пример построения преобразователя кодов по заданному булеву выражению.
Второй подход - построение преобразователя кодов по методу «де- шифратор-шифратор».
А | В |
В этом случае по заданной таблице истинности составляется таблица соответствия десятичных цифр. В рассмотренном примере эта таблица запишется следующим образом:
Метод построения преобразователя заключается в следующем.
Сначала строится схема преобразователя двоичного кода в унарный, т.е. такой код, когда «1» может быть только на одном из N выходов преобразователя, номер которого совпадает с числом, представленным входным двоичным кодом (такой преобразователь называется дешифратором). Число выходов дешифратора равно N = 2п, где п - число разрядов входного кода дешифратора.
Затем строится схема преобразователя, осуществляющего обратную операцию, т.е. преобразование унарного кода в двоичный. Число входов
такого преобразователя, который называется шифратором, равно М = 2n, где n - число разрядов выходного кода шифратора.
Схема преобразователя кода образуется соединением выходов дешифратора и входов шифратора в соответствии с таблицей соответствия десятичных цифр. Здесь DC - обозначение дешифратора (DECODER), CD - обозначение шифратора (ENCODER).
Рис.6.2. Пример построения преобразователя кодов по принципу "дешифратор-шифратор"
Способ построения дешифратора
Учитывая, что активный уровень («Н- High, высокий - единица для положительной логики, или «L- Low, низкий - ноль для отрицательной логики), на каждом из выходов дешифратора появляется только для одной из входных комбинаций, булевы выражения выходных функций дешифратора содержат только одно произведение входных переменных или их дополнений, а в правой части таблицы истинности единица может быть только в одном столбце каждой строки. Поэтому схема дешифратора содержит только элементы И (конъюнкторы), перемножающие входные переменные или их дополнения:
,
,
а1 | а0 | y3 | y2 | y1 | y0 |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 0 |
Таблица истинности дешифратора:
На рис.6.3. показана схема 2-разрядного дешифратора.
Если в схеме преобразователя кодов не используется какая-либо входная комбинация (что имеет место в выполняемой лабораторной работе), тогда такой дешифратор называется неполным.
Рис.6.3. Пример построения 2-разрядного дешифратора
СПОСОБ ПОСТРОЕНИЯ ШИФРАТОРА
Шифратор выполняет функцию, обратную дешифратору. Только один из входов шифратора может быть активным, остальные должны оставаться пассивными, т.е. единицу можно подавать только на один из входов, а на все остальные входы при этом надо подавать нули. Учитывая это обстоятельство, запишем таблицу истинности для 3-разрядного шифратора.
Схема шифратора должна содержать только элементы ИЛИ (дизъюнкторы) для положительной логики, суммирующие те входные переменные, для которых есть единица в соответствующем разряде выходного кода, или только элементы И (конъюнкторы) для отрицательной логики. На рисунке ниже показана схема 3-разрядного шифратора.
y | b2 | b1 | b0 |
y0 | 0 | 0 | 0 |
y1 | 0 | 0 | 1 |
y2 | 0 | 1 | 0 |
y3 | 0 | 1 | 1 |
y4 | 1 | 0 | 0 |
y5 | 1 | 0 | 1 |
y6 | 1 | 1 | 0 |
y7 | 1 | 1 | 1 |
На рис.6.4. представлена схема, реализующая 3-х разрядный шифратор.
Рис.6.4.Схема, реализующая 3-х разрядный шифратор.
Если в схеме преобразователя кодов один из выходных разрядов всегда неактивный, то соответствующий элемент ИЛИ не включается в схему шифратора и такой шифратор называется неполным.
4.2.1.Преобразователь кода Грея в двоичный позиционный
Код Грея, отраженный двоичный код, рефлексный (от reflect—отражать) код для первых десяти чисел представлен в табл.4.1.
В последовательности чисел кода Грея все разряды (abc), кроме самого левого, подчиняются следующему правилу: любая сплошная группа разрядов, считая справа, по некоторому закону перебирает все свои возможные комбинации, а затем начинает перебирать их в обратном порядке. Так, разряды кода Грея b и с сначала перебирают комбинации 00, 01, 11, 10, затем — те же комбинации в обратном порядке: 10, 11, 01, 00.
Закон справедлив вплоть до группы в один разряд: разряд с изменяется сначала в одну сторону—0,1, затем обратно —1,0 и снова в том же цикле. Этот закон объясняет одно из названий кода «отраженный» и позволяет строить последовательность чисел кода любой разрядности. Код Грея — не позиционный, т. е. веса его разрядов не определяются занимаемыми ими местами, как в обычном двоичном коде, который относится к классу позиционных.
Табл.4.1.Таблица кода Грея для 8 чисел
Десятичное число | Двоичное число (abc) | Число в Коде Грея (abc) |
В коде Грея при переходе между любыми соседними числами изменяется значение всегда только одного разряда. Благодаря этому свойству код широко применяется в преобразователях углового положения вала в цифровой код, построенных на базе кодового диска или кодового барабана. В оптическом кодовом диске единицы и нули кодируются прозрачными и непрозрачными областями.
Два варианта схем преобразования кода Грея в позиционный показаны на рис. 4.19. Первый (параллельная схема, рис.4.19, а) имеет меньшую задержку,- но дороже по затратам оборудования, второй (последовательная схема, рис.4.19, б) —с большей задержкой, но экономичнее.
Переводить числа из позиционного кода в код Грея приходится значительно реже. Алгоритм перевода прост: каждый i-й, считая слева, разряд числа в коде Грея равен сумме по модулю 2 i-го и (i-1) -го слева разрядов того же числа, представленного позиционным кодом.
а) б)
Рис. 4.19. Преобразователи кода Грея в двоичный позиционный