Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
409
Добавлен:
06.01.2022
Размер:
33.47 Mб
Скачать

Преобразование кода «I из п» в двоичный

Для того чтобы преобразовать код «1 из n» в двоичный, можно использовать так называемый кодер (шифратор) с приоритетом. На его выходах формируется двоичное число, соответствующее наивысшему из входов, на которые подана единица. Значения входных переменных, расположенных ниже, не имеют значения. Поэтому эта схема и носит название «кодер с приоритетом». Такая схема позволяет преобразовывать не только код «1 из n», но и суммарный код, в котором единица стоит не в одном данном разряде, а во всех, расположенных за ним. Здесь приведена таблица переключении с приоритетом 19.2.

19.1.2. ДВОИЧНО-ДЕСЯТИЧНЫЕ КОДЫ

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

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

Преобразование двоичного кода в двоично - десятичный

В предыдущем примере мы уже познакомились с процедурой преобразования четырехразрядного двоичного числа в двоично-десятичное: двоично-десятичные коды будем оговаривать особо.

Одно четырехразрядное двоичное число позволяет представить десятичные числа от 0 до 15. В случае двоично-десятичного кода из них используется только 10 комбинаций. Следовательно, для записи двоично-десятичного числа требуется больше разрядов, чем для записи двоичного.

При выполнении операций в десятичном коде можно получить результат, включающий десятичную «цифру» от 1010 до 1510 Подобные, не предусмотренные этим кодом цифры называются псевдотетрадами. Для исправления записи псевдотетрад следует уменьшить их на 1010 = 10102 и следующий по старшинству разряд увеличить на 1. Данный результат можно получить и другим способом, добавив к псевдотетраде число 6 = 01102 как показано в следующем примере:

Числа до 9 включительно остаются без изменения.

Числа свыше 9, представляющие собой псевдотетрады, подвергаются коррекции.

Двоичные числа, содержащие более 4 разрядов, можно преобразовать аналогичным образом. Для этого двоичное число, начиная со старшего разряда, «вдвигается» справа налево в двоично-десятичную разрядную сетку, как показано на рис. 19.5. Когда какая-либо единица пересекает границу между двоично-десятичными разрядами, возникает ошибка. Действительно, в случае двоичного числа разрядное значение этой единицы при сдвиге увеличивается с 8 до 16, тогда как для двоично-десятичного числа оно возрастает от 8 до 10. Поэтому на этом этапе двоично-десятичное число как бы уменьшается на 6. Следовательно, для коррекции необходимо прибавлять 6 к числу во всех случаях, когда единица пересекает границу между двоично-десятичными разрядами. К числу десятков надо прибавить 6, если единица перейдет в разряд сотен, и т.д. Составленное таким образом двоично-десятичное число имеет правильное значение, однако оно может еще содержать псевдотетрады. Чтобы этого не было, возникающие псевдотетрады корректируют непосредственно после каждого шага сдвига, прибавляя 6 к соответствующей декаде с переносом 1 в следующую.

Рис. 19.5. Преобразование двоичного кода в двоично-десятичный; в качестве примера взято число 218.

Следовательно, обе указанные коррекции производятся с помощью одной. и той же операции, а именно путем прибавления 6.

Вместо того чтобы прибавлять после сдвига 6, с тем же успехом можно перед сдвигом прибавлять 3. Необходимость такой коррекции можно также определить перед сдвигом. Если значение тетрады меньше или равно 4 = 01002, то при последующем сдвиге не произойдет перехода единицы через границу между декадами и не возникнут псевдотетрады. Таким образом, такую тетраду можно будет без изменений сдвигать влево. Если значение тетрады перед сдвигом равно 5, 6 или 7, то также не произойдет перехода единицы через границу, поскольку старший разряд равен нулю. Однако при этом возникнут псевдотетрады: десять, двенадцать, четырнадцать или одиннадцать, тринадцать, пятнадцать (в зависимости от того, будет ли в младший разряд сдвинут нуль или единица). Следовательно, в этих случаях необходима коррекция псевдотетрад путем прибавления 3 перед сдвигом.

Если значение тетрады составляет 8 или 9, необходимо корректировать переход единицы через границу между декадами. Поэтому после каждого сдвига появляются правильные тетрады 6 или 7 либо 8 или 9. При такой коррекции псевдотетрад полученное значение каждой тетрады не может быть более 9. Этим исчерпываются все возможности, и мы получим таблицу коррекции 19.3.

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

Наряду с подобным способом реализации преобразования кодов с помощью схем с памятью можно использовать комбинационные схемы, в которых операция сдвига проводится с помощью соответствующей логики. Эта схема представлена на рис. 19.6. Вместо сдвига числа справа налево здесь слева направо «сдвигаются» границы двоично-

десятичных разрядов, а каждая полученная тетрада корректируется в соответствии с табл. 19.3. Следовательно, для «сдвига» разрядной сетки с помощью комбинационной схемы на каждую декаду и каждый шаг сдвига необходимо по одному корректирующему элементу. Эта схема несколько упрощается, если исключить те корректирующие элементы, ко входам которых подключено менее трех двоичных разрядов, поскольку в этом случае коррекция

Рис. 19.6. Преобразование двоичного кода в двоично-десятичный с помощью комбинационной схемы. Приведенные значения соответствуют преобразованию числа 218.

не нужна. На рис. 19.6 приведена комбинационная схема для преобразования 8-разрядного двоичного числа. Эту схему легко распространить на любое число разрядов. Элементы, не используемые для преобразования 8-разрядного числа, показаны пунктиром. С помощью записанных здесь чисел можно проследить за процессом преобразования кода для примера, приведенного на рис. 19.5.

Корректирующие комбинационные схемы поставляются в виде программируемых изготовителем микросхем ПЗУ емкостью 32 байта. В одном корпусе размещаются три корректирующих элемента (рис. 19.7) Так как; согласно рис. 19.6, младший разряд не подается на корректирующую схему, то с помощью одной ИС можно преобразовать 6-разрядное двоичное число, а для 8-разрядного числа нужны три таких ИС.

Рис. 19.7. Структура интегральной микросхемы для преобразования двоичного кола в двоично-десятичный SN 74185.

Преобразование двоично-десятичного кода в двоичный

Во многих случаях двоично-десятичный код можно достаточно просто получить непосредственно, например с помощью двоично-десятичных счетчиков. Как будет показано ниже, в двоично-десятичном коде также можно выполнять многие вычислительные операции. Однако в некоторых случаях необходимо все же провести преобразование его в двоичный код. Это можно сделать путем последовательного деления числа на 2. Для этого десятичное число делится на 2. Если оно нечетное, то в остатке получится 1, т.е. в разряде 2° записывается 1. Затем частное от деления еще раз делится на 2, и, если остаток равен нулю, в разряде 21 записывается 0. Если остаток равен 1, то в этом разряде записывается 1. Аналогично получают и более старшие разряды двоичного числа. Деление двоично-десятичного числа на 2 очень просто можно провести путем сдвига вправо на один разряд, так как отдельные цифры уже представлены в двоичном коде. Самый правый бит, выдвинутый из двоично-десятичной разрядной сетки, и является искомым значением разряда. Но если при сдвиге единица пересекает границу между декадами, то возникает ошибка: при переходе от десятков к единицам значение разряда должно уменьшиться наполовину -от десяти до пятя. Однако в случае двоичного числа эта величина становится равной восьми. Поэтому, для коррекции нужно вычесть 3. Из этого вытекает следующее правило коррекции: если старший разряд в декаде равен единице, то необходимо данную декаду уменьшить на три. Таким образом можно непосредственно составить таблицу переключении для корректирующего элемента 19.4. Процесс преобразования заканчивается, если все двоично-десятичное число будет выдвинуто из разрядной сетки.

На рис. 19.8 приведена комбинационная схема для преобразования 2 -разрядного двоично-десятичного числа. Здесь, так же как и в схеме на рис. 19.6, сдвиг двоично-десятичных разрядов достигается путем соответствующего соединения одинаковых комбинационных схем. Чтобы наглядно продемонстрировать структуру этой схемы, на рис. 19.8 изображены все три корректирующих элемента для каждой ступени кодопреобразователя. В действительности если старший разряд корректирующего элемента не используется, то, согласно табл. 19.4, коррекция не нужна и данный элемент можно исключить. На рис. 19.8 такие элементы изображены пунктирной линией.

Корректирующие схемы составляются из отдельных секций, содержащих по два элемента (рис. 19.9). Каждая секция представляет собой одну интегральную микросхему ПЗУ на 32 байта, программируемую изготовителем. Такая микросхема (типа SN 74184) имеет пять входов и пять выходов.

Рис. 19.8. Преобразование двончно-десятичиого кода в двоичный с помощью комбинационной схемы. Приведенные значения соответствуют преобразованию числа 218.

Рис. 19.9. Структура интегральной микросхемы для преобразования двоично-десятичного кода в двоичный.

19.1.3. КОД ГРЕЯ

Во многих случаях необходим числовой код, построенный таким образом, чтобы при переходе от одного числа к следующему изменялся всегда только один двоичный разряд. Этим свойством, в противоположность всем рассмотренным ранее кодам, обладает код Грея. На рис. 19.10 он сопоставлен с двоичным кодом.

Рис. 19.10. Сравнение кода Грея с двоичным.

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

Код Грея не позволяет выполнять арифметические операции. Поэтому его используют только в тех случаях, когда это дает существенные преимущества, и после этого снова переходят к двоичному коду.

Как можно видеть из рис. 19.10, для преобразования двоичного кода в код Грея можно использовать следующие операции:

Для старшего разряда gN N-разрядного числа эта операция упрощается, поскольку dN+1 = 0. В данном случае

Эта зависимость следует также и из рас. 19.10. Таким образом, для преобразо вания N-разрядного двоичного числа требуется N-1 элементов ИСКЛЮЧАЮЩЕЕ ИЛИ, включенных согласно рис. 19.11.

-

Рис. 19.11. Преобразование двоичного кода в код Грея.

Рис. 19.12. Преобразование кода Грея в двоичный.

Преобразование кода Грея в двоичный также производится с помощью элементов ИСКЛЮЧАЮЩЕЕ ИЛИ. Однако оно выглядит несколько сложнее. Для N-разрядного числа

Простейшая реализация этого выражения возможна с помощью последовательного соединения элементов ИСКЛЮЧАЮЩЕЕ ИЛИ, как показано на рас. 19.12. Так же как и ранее, здесь используются N-1 элементов. Правда, в этом случае время задержки схемы значительно больше. Для младшего разряда оно составляет (N-1)tpd. Поэтому в случае многоразрядных чисел целесообразно, насколько возможно, выполнять необходимые логические операции параллельно. Для этого следует входы схемы подключить попарно к элементам ИСКЛЮЧАЮЩЕЕ ИЛИ. а их выходы также попарно соединить с входами следующих элементов.