книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие
.pdf4) Если 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),
4«
Г л а в а III
ЛОГИЧЕСКИЕ ОСНОВЫ АНАЛИЗА И СИНТЕЗА ЭЛЕМЕНТОВ И УЗЛОВ ЦИФРОВЫХ МАШИН
§ 3.1. Элементы алгебры логики
Вопросы анализа и синтеза схем устройств управляющих и вычислительных цифровых машин решаются па основе аппа рата математической логики и теории дискретных автоматов. Из математической логики для описания функции полного со става цифровых автоматов используется раздел алгебры ло гики.
Для большинства современных цифровых автоматов, обес печивающих преобразование цифровой информации по пред варительно разработанному алгоритму, кодирование входной и выходной информации выполняется в двухбуивеином алфави те, символами -которого являются нуль и единица. В этом слу чае работу универсального преобразователя информации мож но представить так: на входы автомата поступает некоторая конечная последовательность нулей и единиц, которая вызы вает появление на выходах вполне определенной последова тельности тех же символов. Это позволяет использовать аппа рат алгебры логики для математического описания функцио нальной структуры цифрового автомата, поскольку основное понятие алгебры логики — понятие высказывания — также можно рассматривать как некоторую переменную величину, принимающую только два значения: пуль или единицу. Приме нение алгебры логики в качестве теоретической основы анали за и синтеза элементов и узлов цифрового автомата дает воз можность получать наиболее простые решения при определе нии функционального состава цифровой машины [1].
Элементы и узлы универсальных преобразователей инфор мации можно разделить на два класса-
В схемах первого класса выходные сигналы определяются не только входной последовательностью, но н состоянием са мой схемы. Такие узлы имеют элементы памяти и в процессе преобразования информации запоминают ее. При анализе и синтезе цифровых автоматов с памятью, кроме алгебры логи ки, требуются и другие математические дисциплины, пока еще полностью не сформированные для описания этих автоматов.
В-се реальные автоматы конечны, поскольку конечны мно жества состояний автомата, а также множества входных и вы ходных сигналов.
4 |
Э. В. Сарннгулян, Г. В. Смирнова |
49 |