Найти тему
Владимир С.

Преобразователи кодов

Устройство, преобразующее входной код в выходной называется преобразователем кодов. Лаконичное определение, раскроем его на конкретном примере. Для этого создадим преобразователь кодов, реализующий перевод 4-битового двоичного числа в двоично-тринадцатеричную систему счисления.

В первую очередь необходимо составить таблицу переходов, на которой будет основываться наш преобразователь. Столбцы таблицы X0-X3 отвечают за входной код. Имеем четыре входных бита, т.к. в примере используем 4-битовый двоичный код. Столбцы Y0-Y1 отвечают за выходной код. Значения в этих столбцах равны двоичным числам из входной части в 2-13 системе счисления. Таблица переходов преобразователя кодов представлена на рисунке 1.

Рис. 1 - таблица переходов преобразователя кодов
Рис. 1 - таблица переходов преобразователя кодов

Теперь необходимо реализовать преобразователь "в железе". Делать это будем в лабораторном комплексе Logisim. Как правило, преобразователь кодов состоит из дешифратора и особым образом подключённого к нему шифратора. В нашем примере будем использовать дешифратор 4-16 и два приоритетных шифратора 16-4. Шифратора используем два, т.к. каждый будет отвечать за один выходной разряд.

  • Дешифратор - комбинационная логическая схема, имеющая n входов и 2^n выходов. На вход дешифратор получает двоичный код и на выходе преобразовывает его в унитарный двоичный код (например, имеем дешифратор 3-8, на вход было подано число 101, на выходе будет значение 00000100).
  • Шифратор - комбинационная логическая схема, имеющая 2^n входов и n выходов. На вход шифратор получает унитарный двоичный код и на выходе преобразовывает его в двоичный код (например, имеем шифратор 8-3, на вход было полано значение 00000100, на выходе будет значение 101).

На вход дешифратора будем подавать значения из столбцов X0-X3 через контакты, принимающие значение "0" или "1". Выходы дешифратора будем подавать на один из двух. Выходы с 3 по 12 напрямую подключаем на входы первого шифратора, т.к. на этих значениях 2-13 код будет занимать один разряд. Входы 0-2 тоже необходимо подключить напрямую на первый шифратор, но не только их. По таблице переходов видно, что коды 0-2 и 13-15 имеют одинаковое значение на втором разряде. Поэтому на входы 0-2 первого шифратора будем подавать последовательно значения выходов дешифратора 0-13, 1-14, 2-15, соединённые через элемент "или". Последние три входа первого шифратора "занулим", то есть подадим на них постоянное значение "0". Второй шифратор отвечает за второй выходной разряд, он почти всегда "0", поэтому на нулевой вход подадим постоянное значение "1", чтобы шифратор не выдавал ошибку, когда на него не приходят значения с последних трёх выходов дешифратора (мы можем так делать, т.к. используем приоритетный шифратор, способный принимать на вход не только унитарный двоичный код). А сигналы с вышеупомянутых трёх выходов через элемент "или" подадим на вход 1. Неиспользуемые входы шифратора также "занулим". Для наглядного вывода подадим значения выходных сигналов шифраторов на шестандцатеричные индикаторы. Итоговая схема преобразователя кодов показана на рисунке 2.

Рис. 2 - Преобразователь кодов
Рис. 2 - Преобразователь кодов

Протестируем его работу, подавая различные значения на входные контакты и сравнивая их с ожидаемыми результатами по таблице переходов (рис. 3, 4, 5, 6).

Рис. 3
Рис. 3
Рис. 4
Рис. 4

Рис. 5
Рис. 5
Рис. 6
Рис. 6