Шифраторы


Шифраторы преобразуют входной код вида “1 из n” в какой-либо двоичный или двоично-десятичный код.

В функциональном отношении шифраторы противоположны дешифраторам, поэтому на первый взгляд кажется, что таблицы истинности шифраторов и полных дешифраторов отличаются лишь местонахождением в них аргументов и функций. Например:

Дешифратор

(действительно есть)
Шифратор

(кажется!)
a1 a0 x3 x2 x1 x0 a3 a2 a1 a0 x1 x0
0 0 0 0 0 1 0 0 0 1 0 0
0 1 0 0 1 0 0 0 1 0 0 1
1 0 0 1 0 0 0 1 0 0 1 0
1 1 1 0 0 0 1 0 0 0 1 1
аргументы   функции     аргументы функции

 

На деле же имеются существенные отличия, связанные с избыточностью входного кода вида “1 из n”.

В данном случае избыточность:

1. позволяет исключить из таблицы истинности шифратора один любой столбец аргументов, без каких либо последствий. Однозначность соответствия входного и выходного кодов при этом не нарушится. Обычно исключают либо крайне, левый (a3) либо крайне правый (a0) столбцы

2. заставляет рассматривать в качестве возможных комбинаций аргументов двоичные слова, не имеющие смысла в коде “1 из n”, и решать каким образом шифратор должен реагировать на эти слова.

Рассмотрим, например, построение шифратора для клавиатуры, работающей в троичной системе счисления и имеющей три независимых клавиши 0, 1, 2. Выходной код такого шифратора “один из четырех”. Выход организуется в двоичном коде. Пусть клавишам 0, 1, 2 соответствуют логические переменные a0, a1, a2, а выходной код представлен переменными x1, x0. Логическая переменная, соответствующая какой-либо из клавиш, будет истинной при нажатой клавише и ложна при отпущенной. Одновременное нажатие нескольких клавиш будет приводить на входе шифратора к ситуациям, запрещенным в коде “1 из 4”. Потребуем, чтобы в этих случаях шифратор вел себя также как и при отсутствии нажатых клавиш, тогда таблица истинности шифратора будет иметь вид:

 Шифраторы

Для синтеза шифратора воспользуемся методом карт Карно. Для переменной x1 такая карта имеет вид:

 Шифраторы

Выделим на карте три прямоугольные группы клеток содержащих единицу, по которым запишем сокращенную ДНФ:

 Шифраторы

Для переменной x0 карта Карно с выделенными группами клеток и сокращенной ДНФ имеет вид:

 Шифраторы

 

Функциональная схема шифратора построенного по этим уравнениям имеет вид:

 Шифраторы

В реальных условиях одновременное нажатие клавиш может быть исключено, например, конструкцией клавиатуры. В таких случаях шифратор никогда не получает бессмысленных входных слов, поэтому клетки выходных переменных соответствующие этим словам как в таблице истинности, так и в картах Карно можно, в принципе, заполнять произвольно. Целесообразнее, однако, заполнять эти клетки таким образом, чтобы получить наиболее простой шифратор. В теории  такая процедура называется доопределением.

Вновь составим карты Карно переменных шифратора, указав в них только обязательные клетки

 Шифраторы

Легко видеть, что к наиболее простой конструкции ведет заполнение пустых клеток нулями. Сокращенные x1 и x0 в этом случае запишутся следующим образом:

 Шифраторы

 Шифраторы

 

Функциональная схема упрощенного шифратора будет иметь вид:

 Шифраторы

Шифраторы, выпускаемые в виде микросхем, обычно обрабатывают входные слова, не имеющие смысла по приоритетному принципу, в ответ на одновременное нажатие нескольких клавиш цифровой клавиатуры. Такие шифраторы выдают код наибольшей из цифр присвоенных нажатым клавишам.

На функциональных схемах шифратор изображают следующим образом:

 Шифраторы