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

книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие

.pdf
Скачиваний:
8
Добавлен:
19.10.2023
Размер:
3.96 Mб
Скачать

4) Если jVi<0 и N2< 0, то произведение ра-вно

(1 - I 'V .l h l -|/V ,|) = 1 — j yY, [ — |yV21+ |yV, 11 yV21.

Учитывая, что результат положителен, его изображение должно быть представлено величиной!/V, ||/V2|. Для этого не­ обходимо провести два корректирующих шага, содержащих добавление ! /V, |и |/V, |. В итоге получим величину 1-(-|.'V,| |М|,

в которой единица переполнения не принимается

во внима­

ние. Значение |/V, 11 Л'2|есть абсолютная величина

произве­

дения.

 

Пример на выполнение операции умножения в дополнительных кодах с коррекцией

1

Множимое

[/V,|11р = 1,10011

 

[Лг,]доп

-М,01101

 

 

 

 

Передача

разрядов Лга,

о

Множитель

 

[Лг2]„р -=0,01111

 

начиная с младшего

0

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

Знак-

произведения

 

 

 

 

Разряди сумматора'.

 

+

00000

Первое частичное произведение в д. к.

 

01101

Первая сумма

Х4

 

 

01101

Сдвиг Xj

 

 

 

-4-

001101

Второе частичное произведение в д. к.

01101

 

Вторая

сумма

 

 

 

 

100111

Сдвиг

 

 

 

 

 

0100111

Третье

частичное произведение в д. к.

~

01101

Третья

сумма

 

 

 

 

1011011

Сдвиг S3

 

 

 

-*01011011

Четвертое частичное произведение в д.к.

+

01101

Четвертая сумма

^4

 

11000011

Сдвиг

X,

 

 

 

-*•

011000011

Сдвиг И4

 

 

 

 

0011000011

Корреляция

1—•|Лг3 |

 

+

10001

 

 

 

1

]ДОП

" '

1,1011100011

 

 

 

 

 

 

t

 

1

1

1

1

0

|;V,-./V2|np— 1,0100011101

Пример на выполнение операции умножения в дополнительных кодах с двумя коррекциями

 

Множимое

t [Лг, ],,r,= 1J0101

 

[Лт

1,01011

__________________ |

 

[Л'5]ди„ - 1,00011

О

Множитель

[

|пр =1,11101

 

Передача разрядов

ак

произведения

 

 

 

 

 

Разряды сумматора

 

 

00000

 

Первое

частичное

произведение в д. к.

 

0ПП1

1

Первая

сумма

 

 

 

01011

 

 

 

 

Сдвиг

^

 

 

 

001011

 

Второе частичное произведение в д. к.

 

01011

1

Вторая

сумма

 

 

 

100001

 

Сдвиг

 

 

 

-ч.

0100001

 

Сдвиг

 

 

 

~

00100001

0

Сдвиг

 

 

 

 

000100001

0

Сдвиг

 

 

 

 

0000100001

0

Первая

коррекция

|yVi|

 

10101

 

 

 

 

 

 

+

1011000001

 

Вторая

коррекция

|Л2 |

11101

 

 

 

 

 

 

 

 

 

11001100001

 

Не учитывается

 

 

 

 

 

 

 

 

 

[-V. АЧ доп = [ЛГ,N , ] „р =

0,1001100001

Деление в машинах с фиксированной запятой

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

41

Пример на выполнение операции деления с восстановлением остатка при использовании дополнительного кода

 

Делимое

IMlnp = 0,01100;

 

 

 

Делитель

1/V3]np = 1,10100;

 

 

 

Знак

частного

- о 0

1 = 1 ;

 

 

 

Частное

1,10011.

 

 

 

 

 

Л-

00,01100

0,10100

 

 

 

 

11,01100

О, 1 0 0

1 1

 

?

■- О

 

 

■ ф

ф I

 

--------------------------------------

11,11000 . . . . 1

 

Восстановление

остатка

+

00,10100

 

 

 

 

<г-

 

100,01101)

 

 

Сдвиг

остатка

-------------- 1

 

 

 

 

00,01100

 

 

 

 

 

 

00,11000

 

 

 

 

 

+

11,01100

 

 

 

 

 

 

100,00100

---------

 

Сдвиг

остатка

 

^

00,01000

 

 

 

 

 

'

11,01100

 

 

 

 

 

 

11,10100

 

 

Восстановление

остатка

 

00,10100

 

 

 

 

 

 

100,01000

 

 

 

 

 

___I

 

 

Сдвиг остатка

 

 

00,01000

 

 

 

 

 

+

00,10000

 

 

 

 

 

11,01100

 

 

 

 

 

,

11,11100

 

 

Восстановление

остатка

^

00,10100

 

 

 

 

 

 

100,10000

 

 

Сдвиг

остатка

 

 

00,10000

 

 

 

 

 

 

01,00000

 

 

 

 

 

+

11,01100

 

 

 

 

 

 

100,01100

 

 

 

 

^-------------- 1

 

 

Сдвиг

остатка

 

 

00,11000

 

 

 

 

 

'

11,01100

 

 

 

 

 

 

100,00100

 

 

42

Пример на выполнение операции деления без восстановления остатка при использовании обратного кода

 

Делимое

[-A’llnp — 0,01 ICO;

 

 

Делитель

[-'Упрг 1,101 ('0;

 

 

Знак частного

 

 

0 Ф 1

= 1

 

 

Частное

->

1,10011

 

 

 

 

 

I

—>■Ш= 1

 

 

 

 

 

 

00,01100

0,10100

 

 

 

 

1 0 0 1 1

 

 

+

 

0,

 

о —0

11,01011

 

 

<

-

11,10111

 

Сдвиг

остатка

 

 

111,01110

 

 

 

 

 

I

1

 

 

 

 

 

11,01111

 

 

 

+

00, 1010"

 

 

 

 

 

100,00011

 

Сдвиг

остатка

 

 

I______

1'

 

 

 

00,00100

 

 

 

 

 

00,01000

 

 

 

+

11,01011

 

Сдвиг

остатка

 

 

11,10011

 

 

 

 

 

111,00110

 

 

 

 

 

11,00111

 

 

 

 

 

00,10100

 

Сдвиг

остатка

 

 

11,11011

 

 

 

 

 

111,10110

 

 

 

 

 

11,10111

 

 

 

+

00,10100

 

 

 

 

 

100,01011

 

 

 

 

 

I

t

 

Сдвиг

остатка

 

 

00,01100

 

 

 

 

 

00,11000

 

 

 

+

11,01011

 

 

 

 

 

100,00011

 

43

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

Цифры частного определяются по знаку остатка: при по­ ложительном остатке разряд частного 1, при отрицательном— 0. Знак частного определяется аналогично знаку произведе­ ния, а именно, суммируются знаковые разряды делимого и де­ лителя по модулю два, и затем результат добавляется к циф­ ровой части частного.

При выполнении операции деления может возникнуть пе­ реполнение, если делитель меньше делимого, и тогда первый остаток получится 'положительным, а разряд целой части част­ ного будет равен единице. Для анализа переполнения выра­ батывается сигнал ср. ф— 1 при первом положительном остат­ ке. По знаку частного формируется сигнал со.

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

Сложение и вычитание в машинах с плавающей запятой

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

При представлении в машине чисел с учетом их порядков необходимо до выполнения сложения или вычитания двух

чисел выравнять

их порядки.

второе Nz— 24 •N211'■

Пусть первое

число

N\ = 2p-NlAp, а

Выравнивание порядков

состоит в том,

что число, имеющее

меньший порядок, сдвигается вправо на количество разрядов, равное разности порядков этих двух чисел. Операция над по­ рядками выполняется в блоках и узлах арифметического уст­ ройства, аналогичных и для действий над мантиссами (пре­ имущественно это сумматор порядков, регистры, логические элементы связи). Учитывая, что с порядками чисел произво-

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

Если p>q, то код знака на сумматоре порядков будет О (разность положительна). Этот знак является признаком то­ го, что порядок первого числа больше порядка второго числа и, следовательно, необходимо сдвинуть второе число вправо на количество разрядов, равное этой разности (р— q). После сдвига второе число будет иметь порядок q + (р — q) = р, и можно производить операцию вычитания пли сложения.

Если p<q, то код знака на сумматоре порядков будет 1 (разность отрицательна). Знак разности служит призмаком то­ го, что порядок первого числа меньше порядка второго числа. Для выравнивания порядков первое число необходимо сдви­ нуть вправо па количество разрядов qр, после чего порядки чисел будут одинаковы.

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

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

Для нормализации производится сдвиг результата вправо на один разряд с одновременным увеличением на единицу значения порядка.

При алгебраическом сложении мантисс результат может оказаться меньше 0,1 ...—"происходит нарушение нормализа­ ции вправо. Полученный результат необходимо нормализо­ вать, сдвигая число на сумматоре чисел на столько разрядов влево, чтобы первая значащая цифра ( 1) заняла старший раз­ ряд. При каждом сдвиге числа .влево значение порядка умень­ шается на единицу. Нормализация результата влево произво­ дится в прямом коде. Если результат отрицательный, то необ­ ходимо предварительно выполнить его преобразование в пря­ мой код.

При осуществлении операции вычитания необходимо ис­ кусственно изменить знак вычитаемого на обратный, что обыч­ но достигается путем предварительной установки в положение «1» знакового разряда второго числа. Тогда при коде знака О положение знаковой ячейки сохранится единичным, при прие­ ме же кода знака 1 значение знакового разряда изменится на нулевое. И уже в соответствии с состоянием ячейки знака формируется код вычитаемого. В остальном операция вычита­ ния не отличается от операции сложения.

Таким образом, сложение и вычитание чисел с разными по­ рядками в машинах с плавающей запятой реализуются в пос­ ледовательности:

1) выравнивание порядков;

2) сложение или вычитание мантисс;

3) нормализация результата.

Примеры на выполнение операции сложения

1. Числа записаны в запоминающем устройстве в виде:

Знак порядка

0

0

Порядок

р = 011

О о II

Знак числа

 

Число

0

[Л?,]пр =

0,11 100100

0

[ЛУпр =

0,10010101

а) Выравниваем порядки путем

определения разности

рq. Операцию вычитания заменяем

сложением отрицатель­

ного порядка q в модифицированном

дополнительном коде с

прямым кодом порядка р.

 

00,011 v 11,111

00,010

Так как знак разности положительный, то p>q, и необхо­ димо выполнить сдвиг второго числа вправо на два разряда (0,010), в результате получаем [Л/2]пр = 0,00100101.

б) После выравнивания порядков производится сложение мантисс на сумматоре чисел:

[TVJnp = 0 0 , 1 1 1 0 0 1 0 0

_________[А^п'р =00,00100101______________

[АМп’р + [ л /2]п“ р = 01,00001001 = [/V, + л д ;’р

в) Так как в ячейках знака код 01, то необходимо произ­ вести нормализацию числа путем его сдвига вправо па один разряд и прибавления единицы к порядку суммы (р):

00,011 01,00001001 до нормализации

1 00,10000100 после нормализации

00,100

46

Передача результата без округления в запоминающее уст­ ройство

0,100 0, 10000100.

2. Числа записаны в запоминающем устройстве в виде:

Знак порядка

Порядок

Знак числа

Число

1

\р]л.к— ПО

1

[A 'j |Пр = =0,11101101

1

М д . к = П 1

0

[AAJnp =0,10010101

а) Определяем разность порядков

11,110

00,001

11,111

Так как знак разности отрицательный, то порядок первого числа меньше порядка второго числа (p < q ). Первую мантис­ су необходимо сдвинуть вправо на число двоичных разрядов,

равное 0,001, так как — ?]“.« = 11,001. Учитывая, что первое число отрицательное, и для операции выбран модифицирован­

ный дополнительный код, [Лг1]д.к = 11, 00010011. После сдвига

[ЛГ,]“ К= 11,10001001.

б) После выравнивания порядков суммируем мантиссы в модифицированном дополнительном коде:

[ЛМдол =

11,10001001 .

 

_________ [/У2]д0„ =

00,10010101

____

[Л Ч ”пп + [Л/2]”оп =

00,00011110 = [Л/, +

лу.пр

в) Так как старшие разряды суммы равны 0, необходимо произвести нормализацию результата путем сдвига влево. При каждом сдвиге следует вычитать единицу (1,111) из по­ рядка суммы

,11,111 00,00011110 «-результат

-.LIlLLL

00,00111100

«г-первый

сдвиг

00,01111000

второй

сдвиг

11 Iqj

00,11110000 «-трети й

сдвиг

f 1Ь 111

 

 

 

11,100

 

 

 

Передача в запоминающее устройство

1,100 0,11110000,

47

Умножение н деление в машинах с плавающей запятой

При умножении чисел в машинах с плавающей запятой мантиссы перемножаются аналогично действию над числами в машинах с фиксированной запятой. Порядок произведения оп­ ределяется суммированием порядков сомножителей.

Таким образом,

в результате умножения

двух чисел

и 24-N„ будем иметь

 

’ 2РN,

X 2? •N, = 2/н я(A’, X ЛД).

(2.8)

Операция умножения в машинах с плавающей запятой ре­ ализуется в следующей последовательности:

1) определение знака произведения путем сложения знако­ вых разрядов мантисс сомножителей;

2) определение порядка произведения p + q\

3)перемножение мантисс (преимущественно в прямом

коде);

4)-нормализация результата.

При умножении двух нормализованных чисел, из которых каждое меньше 1 и больше или равно 0,1, произведение будет всегда меньше 1 и больше или равно 0,01. Поэтому нормали­ зация произведения вправо не требуется; нормализация же произведения влево может выполняться максимум на один разряд.

Признаком необходимости нормализации произведения влево служит, как и при сложении, код 0 в старшем цифровом разряде результата. При этом вычитается единица из порядка произведения.

При делении чисел в машинах с плавающей запятой част­ ное определяется как результат деления мантиссы делимого на мантиссу делителя, а порядок мантиссы частного получается в результате вычитания кода порядка делителя из кода поряд­ ка делимого. Деление мантисс реализуется аналогично деле­ нию чисел в машинах с фшссированой запятой. Таким образом, будем иметь

2f • Л/, : 24 • ДА = 2P - я (АД:ЛД).

(2.9)

Операция деления выполняется в следующей

последователь­

ности:

1) определение знака частного как суммы кодов знаков де­ лимого и делителя;

2) определение порядка частного рq;

3)деление мантисс;

4)нормализация результата.

При делении двух нормализованных чисел, из которых каждое меньше 1 и больше или равно 0,1, частное будет всегда меньше 10 и больше 0,1. Если частное получается >1, то для его нормализации вправо порядок частного должен быть уве­ личен на 1 q+ 1),

Г л а в а III

ЛОГИЧЕСКИЕ ОСНОВЫ АНАЛИЗА И СИНТЕЗА ЭЛЕМЕНТОВ И УЗЛОВ ЦИФРОВЫХ МАШИН

§ 3.1. Элементы алгебры логики

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

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

Элементы и узлы универсальных преобразователей инфор­ мации можно разделить на два класса-

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

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

4

Э. В. Сарннгулян, Г. В. Смирнова

49

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