Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Чеботарев Н.А. Построение схем сложения и вычитания в электронных цифровых машинах [пособие]

.pdf
Скачиваний:
12
Добавлен:
29.10.2023
Размер:
3.46 Mб
Скачать

6 данном случае Отсутствует. Микропрограмму, состоящую из по­ следовательности микроопераций (МО), представим в виде Табл. 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 В ы

Ац За

вг

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

Соседние файлы в папке книги из ГПНТБ