Файл: Чеботарев Н.А. Построение схем сложения и вычитания в электронных цифровых машинах [пособие].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.04.2024
Просмотров: 33
Скачиваний: 0
№ № .
Содержание МО Обозн, МО \ Р ' я
этапа мо ;
Очистка сумматора |
0-*См i р 1 |
|
|
|
Очистка регистра |
|
|
|
|
Прием числа из ячей |
|
|
|
|
ки „А]* |
|
|
4 |
|
Выдача числа в сум |
|
|
|
матор |
||
|
|
|
||
|
1 .5 |
|
Очистка регистра |
|
|
6 |
|
Прием числа из |
|
|
|
ячейки „А3“ |
||
|
|
|
||
|
7 |
|
Выдача числа в сум |
|
|
|
матор |
||
3 |
|
|
||
|
|
Выдача преобразо |
||
|
8 |
|
||
|
|
ванного числа в |
||
|
|
|
сумматор |
|
4 |
9 |
' |
Выдача результата в |
|
яйейку „А8“ |
||||
|
|
|
0-)-Рг |
| |
Рх |
|
То же |
|
(A ^ -P r |
|
Pt |
|
|
|
(Рг)->-См |
|
Ра |
|
|
|
О -Р г |
! |
Pi |
i |
» |
|
(As) - P r |
Рг, |
j |
- » |
||
! |
|||||
|
| |
|
|
|
|
(Рг) -См |
| |
Ри |
|
7сл |
|
|
i |
|
1- |
|
|
|
|
|
|
||
(Рг)Пр-См |
1 |
Рй |
| |
Чвч |
|
|
|
1 |
|
||
|
|1 |
|
! |
|
|
(См)->А,. |
|
Р- |
|
ЧслУЯъч |
Таблица 2
У о
Уорг
Упч
У,орг
—Упч
—Увч см
—Увч смир
—Увч
На основании логических выражений для управляющих сигна лов (2.9) построим схему управления блоком операций при выпол нении сложения и вычитания (рис. 11).
Уточним некоторые вопросы составления логических выражений для управляющих сигналов.
Как уже указывалось, для составления логических выражений управляющих сигналов нужно выполнение каждой микрооперации
микропрограммы привязать к определенному моменту времени. При решении этой задачи необходимо исходить из следующего:
1. Микрооперации, реализуемые разными узлами, можно вы полнять одновременно (например, микрооперации 1 и 2 в табл. 2).
2. Интервал между двумя синхросигналами, по которым выпол няются две соседние микрооперации, должны быть не меньше вре мени срабатывания узла, выполняющего первую по очереди микро операцию. Так, например, прием числа из ячейки в регистр (микро операция 3 табл. 2) можно выполнить только после очистки регист ра (микрооперация 2).. Следовательно, интервал между синхросиг-
22
налами р\ и р2 должен быть не меньше времени изменения состоя ния триггера регистра t Х1.
Рис. II
3. В микропрограмме часто встречаются повторяющиеся микро операции (2 и 5, 3 и 6 в табл. 2). Для одинаковых микроопераций используется один управляющий сигнал. Однако для того, чтобы Зти микрооперации выполнялись в определенной последовательно сти в различные моменты времени, для каждой микрооперации этот сигнал формируется соответствующим синхросигналом (напр.,
(/W p 2) ДЛЯ Qорг)*
4. Некоторые микрооперации участвуют в выполнении различ ных операций. В этом случае в логическое выражение для управ
ляющего сигнала вводится дизъюнкция признаков тех |
операций, |
в которые входит данная микрооперация (напр. (Рсл^Цвч) |
Для QB,). |
Рассмотрим выполнение операций сложения и вычитания в том случае, когда числа хранятся в оперативном запоминающем уст ройстве в прямом коде.
Как мы видели, операция сложения при хранении дополнитель ных кодов чисел выполняется очень просто без каких-либо допол нительных преобразований кодов чисел. Однако хранение чисел в дополнительном коде не всегда язляется удобным для выполнения других операций. По ряду алгоритмов операций умножения и де ления требуется выполнение действий над числами, представлен ными прямым кодом. Выдача результатов вычислений также произ водится в прямом крде. Поэтому во многих Э’ЦМ числа хранятся в оперативном запоминающем устройстве b прямом коде. В этом случае при выполнении операции сложения по алгоритму сложения
23
дополнительных кодов необходимо производить преобразование ко дов отрицательных слагаемых из прямого кода в дополнительный и отрицательного результата из дополнительного кода в прямой.
Необходимое количество преобразований при всех возможных комбинациях знаков чисел приведено для операции сложения в табл. 3, а для операции вычитания — в табл. 4.
|
|
Таблица 3~ |
|
|
|
Таблица 4 |
|
||||
т |
А |
В |
А + В |
Кол. |
№ |
|
В |
(—В) |
А -В |
Кол. |
|
п. п. |
преоб. |
п. п. |
* |
преоб, |
|||||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||
1 |
+ |
+ |
+ |
0 |
1 |
+ |
- 4" |
— |
"Г |
1 |
|
2 |
+ |
— |
+ - 1 |
2 |
+ ’ "Г |
— |
— |
2 |
|||
|
|
|
|
|
|
|
|
|
|
||
3 |
+ |
— |
— |
2 |
3 |
+ |
— |
+ |
+ |
0 |
|
4 |
— |
+ |
— |
2 |
! 4 |
— |
+ |
— |
— |
3 |
|
5 |
— |
_L. |
+ |
1 |
5 |
— |
— |
+ |
— |
2 |
|
6 |
|
_ |
|
|
i |
|
_ |
|
|
|
|
|
|
3 |
' 6 |
|
*Т' |
4" |
1 |
Необходимость преобразования первого слагаемого или умень шаемого приводит к увеличению оборудования блока операций,
так как теперь необходимо иметь два преобразователя (один для числа А, другой для числа В). Необходимость преобразования ре зультата приводит к увеличению времени выполнения операции, так как при этом требуется прибавление единицы в младший раз ряд, что вызывает еще один цикл сложения.
Указанные обстоятельства являются существенными недостат ками и поэтому при хранении чисел в оперативном запоминающем устройстве в прямом коде алгоритм сложения дополнительных ко дов, как правило, не применяется.
2.3. Сложение обратных кодов
Обратный код положительного числа равен самому числу. Об ратный код отрицательного числа в числовых разрядах содержит дополнение до единицы, следующей за старшим разрядом, за вы четом единицы младшего разряда, а в знаковом разряде — едини цу. Рассматривая знаковый разряд как1старший числовой, выраже ние для обратного кода можно представить в виде
А |
при А>0, |
( 2. 10) |
|
2к+2+ А -2 -« |
при А<0, |
||
|
24
где
к— номер старшего разряда;
п— номер младшего разряда.
Нумерация разрядов такая же, как в выражении (2.1). Выражение обратного кода для правильных дробей будет
(А |
при А>0, |
|
[А]обР= | 2+ А —2-* |
при А<0. |
*2Л1' |
Сравнивая выражения для обратного кода (2.10), (2.11) с вы ражениями для дополнительного кода (2.1), (2.2), нетрудно ви деть, что обратный и дополнительный коды положительных чи сел совпадают, а обратный код отрицательного числа меньше до полнительного кода на единицу младшего разряда:-
[А]обр—[А]доп — 2—" |
при А<0. |
(2.12) |
Такое построение обратного кода приводит к чрезвычайно прос тому способу получения обратного кода отрицательных чисел. Для получения обратного кода отрицательного числа достаточно инвер тировать значение разрядов (нуль заменяется единицей, а едини
ца заменяется нулем). Следовательно, для получения обратного кода отрицательного числа, хранящегося в регистре, достаточно выдачу из регистра произвести с нулевых выходов триггеров
(рис. 12).
Рассмотрим алгоритм сложения обратных кодов с учетом воз можных комбинаций знаков слагаемых и при условии, что запятая фиксирована перед старшим разрядом.
Случай 1. А>0; В>0; А+ В<1.
[А]обр"А, 1В]обр
[А]обр+[В]0бр= A-f В=[А + В]обр.
Так как сумма является положительным числом, то можно ска зать, что получен обратный код суммы чисел.
Случай 2. А>0; В<0; 'А[> В, следовательно А +В >0. [А]06р=А; [В]обр—В4-2—2_п;
[А10бР+[В ]обр---2+ (A-f В1—2-л.
Так как сумма — положительное число, то результат сложения не является обратным кодом (лишнее 2 и не хватает 2 " ). Очевид но, для получения обратного кода суммы необходимо отбросить число 2 и прибавить 2~л. Эта операция осуществляется с помощью цепи циклического переноса (рис. 13). Нетрудно видеть, что число 2 появилось в результате переноса из знакового разряда. Если этот перенос по цепй передать в сумматор младшего разряда, то будет получен обратный код суммы:
25
[А]0бр+[В10бр= 2 + (А + В )-2 "«
г-— -->+2~R
(А +В )=[А +В ]обр.
Следовательно,
[А+В]0бр= [А ]0бр+1В]0бр-2 + 2 -« .
Случай 3. А>0; В<0; |А|<|В|, следовательно А-г-В<0,
[A]o6p==A; [В]0бР==2+В—2~п,
[А]обр+[В ]обр= 2 + (А + В )- 2—=[А + В ]06р.
Так как сумма А+В — число отрицательное, то результат сле жения является обратным кодом суммы чисел.
Случай 4. А<0; В<0; iA-f-Bi< I-
[А]обр—2-LB—^2~n; [В]обр= 2 | В—2' "; [А]обр+[В ]обр= 2 + |2 -;. (А+ В)—2 -"]-2 ". .
Так как сумма А+В — число отрицательное, то обратный код этого числа представляется выражением в квадратных скобках. Следовательно' для получения обратного кода суммы необходим циклический перенос. После переноса получим
[А+В]обр~ [ А]0бр+ [В]обр 2+2“ ".
АА
Рис. 12
Рассмотренные случаи показывают, что в зависимости от зна ков и соотношения модулей чисел получаются различные записи алгоритма сложения обратных кедов, отличающихся отсутствием или наличием циклического переноса. Характерным является то, что прибавление единицы в младший разряд результата необходи
мо
мо только тогда, когда возникает перенос в знаковом разряде. Сле довательно, это прибавление можно осуществить автоматически,
Рис. 13
передавая единицу переноса в сумматор младшего разряда. Правило сложения обратных кодов можно записать словами в
следующем виде.
П р а в и л о. Для получения обратного кода суммы двух чисел необходимо сложить обратные коды этих чисел как обычные поло жительные числа, включая и знаковый разряд; перенос из знако вого разряда передается в младший разряд сумматора.
Таким образом, алгоритм сложения обратных кодов позволяет использовать для сложения этих кодов сумматор положительных чисел, дополненный цепью циклического переноса (рис. 13—комби национного типа, рис. 14—накапливающего типа).
Определим время сложения для сумматора каждого типа. Время сложения определяется временем сложения в одном раз
ряде и временем распространения переноса, включая и цикличе ский перенос. При сложении л-разрядных чисел получим:
— для сумматора комбинационного типа (рис. 13)
7’слк= (Л + 1 К ер+ ^ ) |
(2.13) |
где
7пер—время образования переноса в одном разряде; h —время образования суммы в одном разряде;
—для сумматора накапливающего типа (рис. 14)
Г „"==(л + Щ Тг+ ;зЖ т ,, |
(2-14) |
где
*тг —время изменения состояния триггера: 4 —время задержки в линии задержки.
Сравнивая выражения (2.13) и (2.14) с выражениями (2.6) и (2.7), видим, что время сложения обратных кодов больше времени сложения дополнительных кодов на время распространения одного переноса.
37
Выполнение операции вычитания обратных кодов производится, так же, как и в случае дополнительных кодов, путем выполнения
Afl*i В ы |
Ац За |
4г вг |
Ai В( |
|||
|
|
Цепь циклического перекоса |
|
|||
2 |
ил |
А |
Щ*----------------- |
ШW -— |
1 |
С |
|
|
|
|
|||
|
|
|
|
|
|
|
|
К |
|
|
/ \ |
|
|
Тг/1+1 |
ш |
|
|
|
|
|
-ЙЭ*' |
|
|
|
|
||
|
ra*i |
|
|
|
|
|
З н а к |
|
Числовая |
часть |
|
|
Рис. 14
операции сложения с изменением знака вычитаемого. Изменение
знака вычитаемого производится путем преобразования вычитае мого, выполняемого так же, как преобразование прямого кода от рицательного числа в обратный код, т. е. инвертированием значе ния всех разрядов, включая и знаковый.
Преобразование обратного кода не требует прибавления.в млад-, ший разряд единицы и поэтому время вычитания не увеличивается по сравнению со временем сложения. В этом проявляется неко торое преимущество обратных кодов при использовании накапли вающего сумматора.
Состав блока операций и микропрограмма операций сложения и вычитания обратных кодов такие же, как и при дополнительных кодах. Поэтому останавливаться на них мы не будем. Сделаем только некоторые замечания относительно выполнения алгоритма: сложения и вычитания обратных кодов при хранении чисел в опе ративном запоминающем устройстве в прямом коде.
Анализ алгоритма сложения дополнительных кодов показал необходимость в этом случае большого количества преобразований! (табл. 3 и 4). Такое же количество преобразований необходимо производить и при использовании алгоритма сложения обратных кодов. Однако поскольку при преобразованиях прямых кодов в об ратные не требуется прибавления единицы в младший разряд, эти преобразования не приводят к увеличению оборудования и време ни выполнения операции. Поэтому алгоритм сложения обратных] кодов может быть использован для выполнения операций сложе-j ния и вычитания при хранении чисел в прямом коде.
28