Файл: Чеботарев Н.А. Построение схем сложения и вычитания в электронных цифровых машинах [пособие].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 В ы

Ац За

вг

Ai В(

 

 

Цепь циклического перекоса

 

2

ил

А

Щ*-----------------

ШW -

1

С

 

 

 

 

 

 

 

 

 

 

 

К

 

 

/ \

 

 

Тг/1+1

ш

 

 

 

 

-ЙЭ*'

 

 

 

 

 

ra*i

 

 

 

 

 

З н а к

 

Числовая

часть

 

 

Рис. 14

операции сложения с изменением знака вычитаемого. Изменение

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

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

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

Анализ алгоритма сложения дополнительных кодов показал необходимость в этом случае большого количества преобразований! (табл. 3 и 4). Такое же количество преобразований необходимо производить и при использовании алгоритма сложения обратных кодов. Однако поскольку при преобразованиях прямых кодов в об­ ратные не требуется прибавления единицы в младший разряд, эти преобразования не приводят к увеличению оборудования и време­ ни выполнения операции. Поэтому алгоритм сложения обратных] кодов может быть использован для выполнения операций сложе-j ния и вычитания при хранении чисел в прямом коде.

28