0.0 |
0 |
1 |
0 0 |
0 |
1 |
1 |
|
0.0 |
0 |
0 0 0 |
0 |
1 |
|
|
|
0.0 |
0 |
0 0 0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.0 |
0 |
|
|
0 0 |
0 |
0 |
|
|
|
1 |
1 |
|
4 такт |
|
|
|
|
|
|
|
|
|
|
П4 =0.0 0 |
1 |
0 0 |
0 |
0 |
1 |
|
0.0 0 |
0 0 1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
0.0 0 |
1 |
0 1 |
1 1 |
0 |
1 |
0.0 0 |
0 0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
0.0 0 |
1 |
0 0 |
1 |
0 |
0 |
1 |
0.0 0 |
0 0 1 |
0 |
0 1 |
|
0.0 0 |
0 0 0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
0.0 0 |
1 |
0 1 |
1 |
0 |
1 |
1 |
S |
|
0 |
1 |
|
|
|
П1 |
|
0 |
S |
|
0 |
1 |
|
|
|
П 0 |
|
1 |
|
|
П |
2 |
0 |
|
|
Проверка осуществляется преобразованием полученного произведения в
двоичный код.
Делим результат на положительное и отрицательное числа:
П+ =0.0 0 0 0 1 0 0 1 0 П– =0.0 0 1 0 0 1 0 0 1.
Переводим П– в дополнительный код и суммируем П=(П+)доп+(П–доп= 0.0 0 0 0 1 0 0 1 0
1.1 1 0 1 1 0 1 1 1
1.1 1 1 0 0 1 0 0 1
Найдем произведение в двоичной форме. Для этого переведём X и Y в
дополнительный код, соответственно умножение проведём также в дополнительном коде.
Напомним алгоритм умножения в дополнительном коде. Множимое умножается на разряды множителя, начиная со старших разрядов. При сдвиге частичного произведения старшие освобождающиеся разряды заполняются значением знакового разряда (первая коррекция). Если разряд, отводимый под
221
знак, не нулевой, то множимому присваивается знак минус и берется дополнение. Полученный дополнительный код суммируется со старшей частью произведения (вторая коррекция). Итак, имеем
Xд= 0.0 1 0 1 1 Yд= 1. 1 0 1 1 0
П= 0.0 1 0 1 1
1.10 1 1
0.00 1 0 1 1
0.00 0 0 0 0 0
0.00 0 0 1 0 1 1
0.00 1 1 0 1 1 1
0.00 0 0 0 1 0 1 1
0.0 0 1 1 1 1 0 0 1 1.1 0 1 0 1 (дополнение множимого).
1.1 1 1 0 0 1 0 0 1
Как видим, результаты совпадают.
3.6.6. Параллельно-последовательный умножитель
Структурная схема параллельно-последовательного умножителя приведена на рис. 3.32. Она содержит два двухрядных регистра А и В, схему умножения числа на разряд (nxF), параллельный сумматор в ДИЗСС,
обеспечивающий формирование текущего произведения и двурядного регистра
S-результата.
Умножение начинается с приема чисел X и Y по сигналу Cпр – приём
числа.
222
|
X |
2 x Рг A |
Спр. числа |
|
|
|
n |
|
1р |
nxF |
Y |
2 x Рг B |
|
|
Сдвиг |
Сум. ДИЗСС |
|
|
2 x Рг S |
|
пр. числа |
Рис.3.33
После приёма числа начинается умножение.
1. Значение разряда множителя выходов старших триггеров регистра Y
поступает на схему n F. Каждый разряд множимого изменяется в соответствии с таблицей умножения.
Пример 3.22.
Х = . 1 0 1 0 1 0 1
Y = . 1 1 . . .
ЧП1 = . 0 1 0 1 0 1 0 1 ЧП2 = . 0 0 1 0 1 0 1 0 1
Соответственно на выходе схемы n F имеем
. 1 0 0 0 1 . 0 0 1 0 0
. 0 0 1 0 0 0 . 1 0 0 0 1 0
2. Полученное на выходе схемы n F частичное произведение поступает на сумматор, где складывается с текущим произведением, и значение текущего произведения записывается в регистр S со сдвигом на один разряд в сторону
223
старших. Одновременно происходит сдвиг множителя в сторону старших разрядов.
3. Если регистр Y не нуль, то переход на пункт 1. Иначе умножение
закончилось.
Пример 3.23.
Умножение чисел на параллельно-последовательном умножителе.
1 такт |
. 0 0 0 0 0 0 |
значение регистра S |
суммирования |
1 1 1 1 1 |
произведение X∙Y1 |
|
|
|
|
|
0 1 1 1 1 1 |
|
|
0 0 0 0 0 |
|
старшая цифра результата
следующая цифра результата
|
|
|
|
|
1 |
1 |
1 |
1 |
1 |
|
|
|
|
1 1 1 1 |
1 |
|
|
|
|
|
|
0 0 0 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 0 0 0 |
0 |
1 |
|
1. |
0 0 0 0 |
1 |
0 |
|
|
|
|
|
|
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 1 1 1 |
0 1 |
|
|
|
|
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 0 0 |
1 |
1 |
|
|
|
|
0 0 0 0 |
1 |
|
|
|
|
|
|
0 0 0 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 0 0 |
0 |
|
|
|
|
|
|
1 |
1 |
|
|
|
. |
0 0 0 0 |
|
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
1 1 1 |
1 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 1 1 1 |
0 1 |
|
|
|
|
0 0 0 0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
1 |
1 |
1 |
1 |
|
|
|
|
1 1 1 0 |
1 |
|
|
|
Проверка.
Проверка осуществляется преобразованием результата в двоичный код и сравнением его с умножением в двоичном коде:
+
Пдизсс = 0 . 1 0 1 0 0 0 0 0 0
-
Пдизсс = 1 . 1 0 1 0 1 1 0 1 1
Пдсс = 0 . 0 1 0 0 1 1 0 1 1
Умножение в двоичной системе счисления
X = 0 . 1 1 1 1 1
Y = 0 . 0 1 0 1
0 . 0 0 1 1 1 1 1 0 . 0 0 0 0 1 1 1 1 1
Пдсс = 0 . 0 1 0 0 1 1 0 1 1 .
Как видим, результаты совпадают.
225
полноразрядный
результат
следующая цифра результата
следующая цифра результата
|
|
0 0 0 |
0 0 |
|
|
|
1 0 0 |
1 |
1 |
1 |
цифра |
1. |
0 0 |
1 |
1 |
1 |
|
|
|
|
|
|
|
1 |
1 |
1 |
1 |
1 |
|
|
0 1 0 |
0 0 |
1 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
1 |
1 |
1 |
1 |
|
|
|
1 |
0 |
0 |
1 |
1 |
1 |
|
|
0 0 |
0 |
0 1 |
|
|
|
0 0 |
0 |
0 |
|
|
|
|
|
1 |
0 |
0 |
1 |
0 |
1 |
|
1 . |
0 0 |
1 |
0 |
1 |
|
|
0 |
0 |
1 |
0 |
1 |
|
|
|
|
. . . |
|
|
|
|
|
|
При выполнении умножения в микропроцессорах цифровой обработки
результат умножения округляют до n разрядов. Поэтому |
П |
ДИЗСС |
.11110 |
, а |
|
|
П |
ДСС |
0.01010 |
. |
Нетрудно увидеть, что результат в ДИЗСС |
получается |
|
|
округлённым по |
1 |
2 |
старшего отбрасываемого разряда. Это является свойством |
|
|
|
|
|
|
|
|
|
|
|
избыточных знакоразрядных систем, так как числа ДИЗСС не содержат после проведения операций массивы единиц одного знака.
3.6.7. Последовательно-последовательное устройство умножения на параллельном сумматоре
Множимое и множитель поступают в последовательном коде, и
одновременно с приемом на регистры осуществляется умножение. В основу построения умножителя положен следующий алгоритм.
Обозначим через Xi текущее значение X-множимого, Yi – текущее значение Y-множителя, Xi – текущее приращение множимого, Yi – текущее приращение множителя. Тогда для i-го момента времени можно записать
Xi = Xi–1 + Xi ; Yi = Yi–1 + Yi .
Текущее произведение будет равно |
|
|
Zi = ( Xi–1 + Xi ) ∙ ( Yi–1 + Yi ) = Xi–1 ∙ Yi–1 |
+ Xi–1 ∙ Yi |
+ Yi–1 ∙ Xi + Xi ∙ Yi, |
или Zi = Zi–1 + dZi , |
|
|
|
где Zi–1 = Xi–1 ∙ Yi–1, dZi = Xi–1 ∙ Yi + Yi–1 |
Xi + Xi ∙ Yi = Xi Yi + Yi–1 Xi . |
Выберем в качестве |
приращений значения |
текущих разрядов, т.е. |
Xi = xi 2–i , Yi = yi 2–i , |
(i = 1, 2, ... , n) , где xi и yi – значения цифр в i-м |
разряде X и Y. Начальные значения X0 |
и Y0 (i = 1) |
равны нулю. Производя |
действия, которые описаны выше, получим искомое произведение. Достоинство этого метода умножения заключается в том, что произведение формируется в темпе поступления чисел и результат выдаётся сразу после прохождения двух настроечных тактов. Схема устройства умножения приведена на рис. 3.34.
226
C |
1 |
C |
2 |
|
|
C |
n |
1 |
|
|
Р |
г |
с д |
в . |
|
|
С |
0 |
|
|
|
|
|
1n - 1
*F
|
2 |
x |
n |
1 |
|
|
|
|
|
|
Р |
г |
Y |
|
|
|
|
|
|
|
|
|
|
|
* F |
|
|
|
|
|
|
|
|
|
|
С |
М |
и |
з |
б |
|
|
|
|
|
|
|
|
|
С |
М |
|
и |
з б |
|
|
|
|
|
|
2 |
x |
Р |
г |
S |
Рис. 3.34
Пример 3.24.
Умножение на последовательно-последовательном умножителе с
параллельным сумматором чисел х и у.
Умножение на поступающие последовательные разряды.
Пусть |
|
|
|
|
|
|
|
|
|
|
X = .1 |
1 |
1 1 |
Y = . 1 |
1 1 |
1 , |
|
|
|
|
|
|
|
X1 0.1, |
|
X1 |
0.1, |
Y0 0. |
|
Y1 0. |
|
. |
1 такт |
|
|
, |
1 |
|
|
|
|
|
|
|
|
|
|
Частичное произведение
227
0.0 |
0 0 |
0 |
1 |
1 |
1 |
1 |
0.0 |
0 0 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
|
0.0 |
0 0 |
0 0 0 |
0 1 |
0.0 |
0 0 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
0.0 |
0 0 |
1 |
1 |
1 |
|
1 |
1 |
0.0 |
0 0 |
0 0 0 |
1 |
|
0.0 |
0 0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.0 |
0 0 |
0 |
1 |
|
|
|
0 |
1 |
1 |
|
0.0 |
0 0 |
0 |
1 1 |
0 |
1 |
0.0 |
0 |
1 |
0 0 |
1 |
|
|
|
|
|
|
|
0.0 |
0 1 |
0 1 0 |
0 1 |
0.0 |
1 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
0.0 |
1 |
1 |
1 |
0 0 |
1 |
1 |
0.0 |
1 0 |
0 0 0 |
1 |
|
|
|
|
|
|
|
Z |
|
0.00 1 1 |
000 1 |
|
0.0 0 |
1 |
1 0 0 0 |
1 |
4 |
|
|
|
|
Таким образом, определены основные биты результата. Так как все
остальные приращения равны нулю, то остаток Z4 не изменяется и результат
равен Z4 0.00 1 1 000 1 .
Реализация длинных вычислений на основе двоично-избыточного кода также возможна, но требуют специального подхода. Это связано с тем, что, как правило, двоично-избыточный код используется для выполнения операций в последовательном коде. А в этом случае временная диаграмма и, как следствие,
форматы длины всегда фиксированы и в процессе функционирования устройства не изменяются. В этом случае прямое выполнения операции при увеличении разрядности данных невозможно. В этом случае организация вычислений производится определённым образом. Исходные операнды всегда имеют фиксированную длину. При изменении разрядности данные предоставляются в форме нескольких виртуально не зависимых чисел.
230