Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа _6 .doc
Скачиваний:
111
Добавлен:
23.05.2015
Размер:
9.87 Mб
Скачать

6.4.3 Преобразователь дополнительного кода в прямой код

Если на вход схемы преобразователя четырехразрядного прямого кода в дополнительный код (см. рис. 6.15) подать дополнительный код, то на выходе получим прямой код.

6.4.4 Преобразователь прямого кода в обратный код

Правило кодирования чисел:

Например, число А=0.10000 в обратном коде [A]обр=1.01111

В десятичной системе счисления обратный код образуется путём преобразования каждой цифры числа в дополнение до 9. В таблице 2 приведены для десятичных цифр прямые коды и соответствующие им обратные коды.

Таблица 6.2

Десятичная цифра

Прямой код

Обратный код

Х(8)

Х(4)

Х(2)

Х1

У(8)

У(4)

У(2)

У(1)

0

0

0

0

0

1

0

0

1

1

0

0

0

1

1

0

0

0

2

0

0

1

0

0

1

1

1

3

0

0

1

1

0

1

1

0

4

0

1

0

0

0

1

0

1

5

0

1

0

1

0

1

0

0

6

0

1

1

0

0

0

1

1

7

0

1

1

1

0

0

1

0

8

1

0

0

0

0

0

0

1

9

1

0

0

1

0

0

0

0

Из сопоставления приведённых в таблице значений не трудно заключить, что:

Получаем схему, формирующую обратный код.

Рис. 6.20 Четырех разрядный преобразователь прямого кода в обратный код. Временные диаграммы

Рис. 6.21 Внутренняя структура элемента «Convert» (преобразователь прямого кода в обратный)

Рис. 6.22 Преобразователь прямого кода в обратный код в пакете MAX+Plus II

Рис. 6.23 Временные диаграммы преобразователя прямого кода в обратный

Рис. 6.24 Матрица временных задержек

6.4.5 Преобразователь обратного кода в прямой

Если на вход схемы преобразователя четырехразрядного прямого кода в обратный код (см. рис. 6.20) подать дополнительный код, то на выходе получим прямой код.

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

Десятичные сумматоры применяются в тех случаях, когда числа X и Y представлены в десятичной системе счисления двоично-десятичным кодом 8-4-2-1 и требуется представлять сумму S в этом же коде. Числа X и Y записываются в виде:

Х’=хn,...х1х0 Y’=yn,... у10

Код 8 - 4 - 2 - 1 неудобен для выполнения арифметических операций, в частности из-за сложности обнару­жения переноса в следующую тетроду при Хр + Yр > 10. При вычитании десятичных чисел X' и Y’ дело обстоит еще сложнее – требуется вводить преобразователь кода 8 - 4 - 2 - 1 отрицательных чисел в допол­нение до 9 (или до 10).

Десятичные сумматоры для сложения и вычитания чисел Х и Y можно построить на двоичных суммато­рах, если использовать код с избытком 3. Код 8 - 4 - 2 - 1 для числа Хр + 3 называется кодом с избытком 3 числа Хр и обозначается через {Ар}. Для сложения 4-разрядных двоичных кодов {Хр} и {Yр} можно использовать 4-разрядные двоичные сумматоры.

Рассмотрим особенности сложения положительных чисел Ар и Yр в коде с избытком 3. Если Хр + Yр > 10, то {Хр} + {Yр} = Хр + 3 + Yр + 3 > 16, и на выходе двоичного сумматора возникает перенос Сp+1= 1 в следующий десятичный разряд, а остаток суммы будет равен {Хр} + {Ур} - 16, в то время как он должен быть равен

{Xp+Yp-10}=Xp+Yp-10+3={Xp}+{Yp}-16+3.

Поэтому к остатку суммы {Xp}+{Yp}-16 следует прибавлять число 3.

Если Хр + Yр < 10, то {Xp}+{Yp}<16 и на выходе двоичного сумматора перенос отсутствует (Cp+1 = 0), а сумма {Хр} + {Yр} = {Хр + Yр} + 3. Поэтому из суммы {Хр} + {Yр} следует вычесть число 3, чтобы получить величину {Хр + Yр}, которая является кодом с избытком 3 суммы Хр+Yр. Вычитание какого-либо числа эквивалентно сложению его с дополнением до 2n, поэтому вместо вычитания числа 3 можно прибавить число 24 – 3 = 13 = 1101.

Таким образом, если перенос возникает, то к остатку суммы следует прибавить число 3, а если он от­сутствует, то к сумме следует прибавить число 13. Итак, одноразрядный десятичный сумматор для деся­тичных разрядов, представленных в коде с избытком 3, описывается соотношениями:

(6.6)

где Cp+1 — перенос в следующий десятичный разряд; {Sp}значение р-го десятичного разряда суммы чисел X и Y; Ср = 0 или 1 – перенос из предыдущего десятичного разряда. Сложение с числами 3 и 13 называется коррекцией суммы. Из соотношения (6.6) видно, что вычисление суммы {Sp} можно вы­полнить с помощью двух последовательно включенных 4-разрядных двоичных сумматоров: первый сумматор вычисляет вспомогательную сумму

и перенос Сp+1, а второй сумматор – сумму

так как Cp+1 Cp+1 Cp+1 1 = 13 при Ср+1 = 0 и Ср+1Cp+1Cp+1 1 = 3 при Cp+1 = 1. Такое устройство называ­ется сумматором кодов с избытком 3.

Рассмотрим теперь вычитание n-разрядных десятичных чисел X и Y с использованием кода с избытком 3.

Так как S’=X-Y=X-10n+(10n-Y)= X-10n+W , где W=10n-Y,

То вычитание из X числа Y эквивалентно сложению X с дополнением Y до 10n с коррекцией результата на 10n.

При Х  5 надо производить сложение числа Х (x4, x4, x4 , x4) с числом 3. Таким образом, данный преобразователь выполняет функцию Y = X, если 0  Х  4 и Y = X + 3, если 5 Х9.

Таблица 6.3 Таблица истинности преобразователя

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

Х4

Х3

Х2

X1

Y4

Y3

Y2

Y1

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

1

0

0

1

0

0

0

1

0

0

0

1

1

0

0

1

1

0

1

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

1

0

1

1

0

0

0

1

1

1

1

1

0

1

1

0

0

0

1

1

1

0

1

0

0

1

1

1

1

1

Построим преобразователь двоично-десятичного кода в двоичный на ЛЭ.

Для получения логических выражений представим переменные Y1, Y2, Y3, Y4 в форме таблиц Вейча:

Тогда для Y4 можно записать: , или иначе:

.

Аналогично, для остальных Y:

Теперь при помощи полученных логических выражений на элементах И-НЕ построим преобразователь двоичного кода в двоично-десятичный код (рис. 6.25).

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

Рис. 6.26 Блок преобразователя двоичного кода в

двоично-десятичный код

Рис. 6.27 Заданная последовательность входных сигналов

для схемы (рис. 6.20)

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

Рис. 6.29 Преобразователь двоичного кода в двоично-десятичный код в пакете MAX+Plus II

Рис. 6.30 Временные диаграммы

Рис. 6.31 Матрица временных задержек

Программа:

SUBDESIGN preobraz_dvoichnogo_v_dvoichno_desayt

(

X[3..0] : INPUT;

Y[3..0] : OUTPUT;

)

BEGIN

IF X[3..0] <= B"0100"

THEN Y[3..0] = X[3..0];

ELSE Y[0] = X[0];

TABLE

X[3..1] => Y[3..1];

B"010" => B"101";

B"011" => B"110";

B"100" => B"111";

END TABLE;

ENDIF;

END;

Примечание. В пакете Max+ Plus2 имеются микросхемы, реализующие преобразование из двоичного кода в двоично-десятичный и обратно (74184/74185).