книги из ГПНТБ / Чеботарев Н.А. Построение схем сложения и вычитания в электронных цифровых машинах [пособие]
.pdf6 данном случае Отсутствует. Микропрограмму, состоящую из по следовательности микроопераций (МО), представим в виде Табл. 1.
|
|
|
|
|
|
|
|
|
Таблица I |
№ |
|
|
|
|
|
|
Сигналы |
|
|
|
|
: Содержание МО Обозн. МО |
|
Р |
<7 |
»- : |
Q |
||
этапа | МО |
|
||||||||
|
|
|
i |
|
1 |
|
\ |
■ |
|
1 |
! 1 |
Очистка регистра |
0-+Рг |
1 |
Pi |
|
1 ' |
Qopr |
|
\ |
<7слчЯъчI |
||||||||
|
I ... |
Прием числа из |
|
1 |
|
|
i |
|
|
2 |
|
2 |
{а)-+Рг |
|
Ра |
|
— |
Опч |
|
. |
ячейки „а* |
|
|
||||||
|
|
|
|
1 |
' |
|
|
||
3 |
|
3 |
Выдача числа в |
(Рг)-^См |
\ |
Рл |
- |
Qbhcm |
|
|
4сл |
||||||||
|
сумматор |
| |
|||||||
|
|
4 |
Выдача преобра |
(Рг)аР->Сл[ |
Р-, |
Чвч |
— |
Qbmcmnp |
|
|
|
зованного числа в |
|||||||
|
|
|
сумматор |
|
|
|
|
- |
|
При записи микроопераций приняты следующие обозначения: |
|||||||||
•-> |
— передача информации или занесение информации; направ |
||||||||
ление стрелки указывает направление передачи информации;' |
|||||||||
( ) — содержимое узла |
(ячейки |
|
хранения), |
заключенного в |
скобки.
Поставив в соответствие каждой микрооперации оператор А с номером, микрооперации, можно записать микропрограмму в опе раторной форме:
Операторная форма наглядно показывает, в каком направлении идет выполнение микропрограммы при тех или иных условиях.
Составим логические выражения для управляющих сигналов, используя данные табл. 1.
Управляющий сигнал Qopr должен быть сформирован при на личии синхросигнала р1 и признаков операции дсл или дт. Сле довательно,
Qopr—Р\ (9сл^*/вч)-
Аналогично получим выражения для остальных управляющих сигналов:
<3пч=/?2(^слу ^вч).
Qи’; см А3*7сл*
Q b4 см нр==Р з <7вч’
По логическим выражениям для управляющих сигналов можно
20
построить схему управления блоком операций при выполнении сло жения и вычитания. Эта схема приведена на рис. 8.
Для выработки управляющих сигналов необходимо, чтобы в арифметическое устройство поступали синхросигналы р и прйзнаки операций q. Синхросигналы можно формировать о помощью ге нератора импульсов и линии задержки с отводами (рис. 9), а приз-
Рис. 8 Рис. 9
наки операций с помощью дешифратора кода операции (рис. 10). Построением схемы управления заканчивается построение части арифметического устройства, предназначенной для выполнения
рассмотренных операций сложения и вычитания.
Составим теперь микропрограмму операций сложения и вычи
тания применительно к трехадресной системе команд.
При составлении микропрограммы будем исходить из того, что для выполнения трехадресной команды необходимо выбрать из оперативного запоминающего устройства первое число и поместить его в сумматор, затем выбрать второе число, выполнить собственно
мд |
Чсп |
|
Чвч |
||
опера - |
||
1 |
|
|
Рис. |
10 |
операцию, указанную в коде операции и результат отослать в опе ративное запоминающее устройство. Микрооперации, необходимые для выполнения указанных действий и составляющие микропро грамму операций сложения и вычитания, приведены в табл. 2.
Используя микропрограмму (табл. 2), составим логические вы ражения для управляющих сигналов:
Q ocm= V i (<7<ni7<7вч): |
Q bm см^ Р з(<7слУ<7в'>Ь/>в</с л : |
|
Qopr~ (PiVPi)(9csiУ<7вч)| |
*2вч см пр~Р&вч> |
|
Qji4~i.P2yP*)(4^ v4bh)j |
Qbh Р'ХРсл^Явч) ■ |
(2*9) |
21
№ № .
Содержание МО Обозн, МО \ Р ' я
этапа мо ;
Очистка сумматора |
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
2.4, Алгоритм’ Сложения модулей чисел
Недостатки применения алгоритмов сложения дополнительных или обратных кодов при хранении чисел в прямом коде, связанные с необходимостью в 50% случаев преобразовывать результат опе рации и первое число (табл. 3 и 4), привели к разработке алгорит ма сложения модулей чисел. В основу этого алгоритма положено обычное (школьное) правило сложения относительных чисел. При этом различаются два случая: знаки чисел одинаковые и знаки чи сел разные. В первом случае складываются модули чисел и резуль
тату приписывается знак любого числа. Во втором случае из боль шего модуля вычитается меньший и результату приписывается знак большего модуля. Так как действия производятся над абсо лютными величинами чисел — модулями, то алгоритм, основанный на этих правилах, получил название алгоритма сложения модулей чисел.
При разработке машинного алгоритма второй случай разделя ют на два и всего рассматривают три случая. Принадлежность к тому или иному случаю определяется знаками слагаемых и соотно
шением абсолютных влияний чисел и приводится в табл. 5. |
|
Получим алгоритм сложения для каждого из случаев. |
Прямой |
Случай 1. Знаки слагаемых одинаковы: ЗнА-~ ЗнВ. |
|
код суммы чисел [Р1 пР определяется алгоритмом |
|
[Р]пр=ЗнА. (|А'+ |В:). |
(2.15) |
При словесной записи этого алгоритма получим следующее правило.
П р а в и л о . Для получения прямого кода суммы двух чисел в первом случае необходимо сложить модули этих чисел и резуль тату приписать знак первого слагаемого.
Случай 2. Знаки чисел разные, модуль числа А больше модуля числа В:
ЗнА~ЗнВ и А;>|В .
В этом случае нужно было бы из большего модуля А вычесть мень ший модуль В и результату приписать знак числа с большим моду лем Зн А, т. е.
1Р]Пр“ ЗнА • {|А,-;В|}.
Однако в ЭЦМ вычитание заменяется сложением числа А с до полнением к вычитаемому.
Для правильных |
дробей дополнение |
будет .B ^ - l- B i, |
отку |
да —:В,!~;В;:1— 1, и, |
следовательно, |
|
|
I Р ] пр— З н А • {|А|+!В |л - |
1}. |
( 2. 16) |
29