Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций ТДУ.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
2.26 Mб
Скачать

9.2. Вычитание двоичных чисел

Из математики известно, что вычитание – это сложение положительного и отрицательного чисел. Следовательно, для вычитания можно использовать сумматоры. Чтобы записать отрицательное число, следует представить его в дополнительном коде.

Алгоритм получения дополнительного кода:

-инвертируется каждый разряд двоичного кода – получается обратный код;

-арифметически прибавляется к полученному обратному коду единица младшего разряда – получается дополнительный код.

Теперь при сложении уменьшаемого с представленным в дополнительном коде вычитаемым получится разность. Знак результата (+ или ) зависит от значения старшего разряда разности. Если в старшем разряде «0» то разность – положительное число, представленное в прямом коде. Если в старшем разряде «1» то разность – отрицательное число, представленное в дополнительном коде.

Рассмотрим пример вычисления разности 31 – 12.

Для проведения действий используем 8-разрядные шины.

Прямой код: 31 = 00011111; 12 = 00001100.

Обратный код: .

Дополнительный код: .

Выполним сложение:

.

Получился 9-разрядный код. Старший (9-й) разряд отбрасывается. В полученном результате в 8-ом разряде «0», значит разность – положительное число 19, представленное в прямом коде.

Рассмотрим обратное вычисление 12 – 31.

Прямой код: 12 = 00001100; 31 = 00011111.

Обратный код: .

Дополнительный код: .

Выполним сложение:

.

В полученном результате в 8-ом разряде «1», значит разность – отрицательное число, представленное в дополнительном коде.

Чтобы получить результат в прямом коде, можно воспользоваться формальным приёмом. Нужно прочитать число наоборот, оставляя без изменения все нули до первой единицы, которую тоже оставляют без изменения. Все остальные разряды инвертируют. Такое действие можно выполнить с помощью сдвигающего регистра. В результате получим 00010011 =  19.

Сложение и вычитание двоичных чисел можно проводить с помощью общей схемы. Рассмотрим такую схему на примере устройства для сложения и вычитания двухразрядных чисел (рис. 9.4).

Рис. 9.4. Устройство для сложения и вычитания двухразрядных чисел

Схема состоит из общего управляющего узла DD1, который определяет, какое действие – сложение или вычитание – будет выполнено, и блоков сложения вычитания БСВ. В состав БСВ входит сумматор с входной логикой.

В исходном состоянии на входах DD1 («+» и «») логический 0. На входах элементов И DD3, DD7 и DD5, DD9 тоже логический 0, следовательно и на выходах этих элементов логический 0. Никаких действий схема не выполняет.

Если на вход «+» подать сигнал логической 1 (на входе «» - логический 0), разрешается работа элементов И DD3 (верх), DD5, DD7 (верх) и DD9. От входа схемы через эти элементы на входы сумматоров DD4, DD8 поступят коды Y0 + X0 и Y1 +X1. На выходах сумматоров получится результат S0 = Y0 + X0, S1 = Y1 +X1 и P (перенос в следующий разряд).

Если на вход «» подать сигнал логической 1 (на входе «+» - логический 0), разрешается работа элементов И DD3 (низ), DD5, DD7 (низ) и DD9. Прямой код уменьшаемого Y1; Y0 поступит на входы b сумматоров через элементы DD5, DD9. Обратный код вычитаемого поступит на входы а сумматоров через инверторы DD2, DD6 ( ). Одновременно на входе Р-1 младшего разряда (БСВ0) появится сигнал логической 1 от входа «». Сложение этой 1 с обратным кодом вычитаемого даст дополнительный код. На выходах сумматоров получится результат S0 = Y0  X0, S1 = Y1 X1.

Подавать одновременно сигнал логической 1 на входы «+» и «» нельзя. В такой простой схеме это приведёт к сбою в работе.

Пример технической реализации АЛУ  микросхема К555ИП3. Её условное графическое обозначение представлено на рис. 9.5.

Рис. 9.5. Условное графическое обозначение микросхемы АЛУ К555ИП3

Микросхема К555ИП3 работает с двумя четырёхразрядными входными кодами и может выполнят 16 логических и 16 арифметических операций. Вид выполняемой операции (арифметическая или логическая) определяется управляющим сигналом входа М (mode control). М = 1 – логические операции, М = 0 – арифметические.

Конкретный вид выполняемой операции зависит от управляющего кода входов S0, S1, S2 и S3. Результаты выполненной операции снимаются с выходов F0, F1, F2 и F3. Вход Р0 и выход Рn – переносы из младшего и в старший разряды. Выходы G и H служат для соединения нескольких АЛУ в многоразрядные схемы. G – схемы с последовательным переносом, Н – с параллельным. Выход К  выход внутреннего цифрового компаратора. К = 1 при совпадении входных кодов a = b.

Контрольные вопросы

1. Для каких целей применяются арифметико-логические устройства?

2. Что такое сумматор? Приведите таблицу истинности, запишите ФАЛ, нарисуйте схему и условное графическое обозначение полусумматора.

3. Для чего предназначен вход переноса из младшего разряда?

4. Приведите таблицу истинности, запишите ФАЛ, нарисуйте схему и условное графическое обозначение сумматора.

5. Как нужно соединить сумматоры для получения многоразрядной схемы параллельного сумматора?

6. Поясните алгоритм вычитания двоичных кодов. Как получить дополнительный код?

7. Как определить знак разности?

8. Как схема сложения и вычитания двоичных чисел выбирает необходимое действие и формирует дополнительный код при вычитании?

9. Приведите условное графическое обозначение микросхемы АЛУ К555ИП1 и поясните принцип её работы.