Использование сумматора с запоминанием переноса
tсум=ntкс+tпр.кода
Основная идея:
n-разрядный сумматор строится на базе одноразрядных сумматоров с разорванными цепями переноса. Переносы запоминать на регистре и прибавлять к сдвинутой сумме частичных произведений в следующем такте.
В цикле проверки Bn
1такт – y(+) (множитель+сумма част.произведений+перенос)
2такт – y(-)(сдвиг)
Пропуски тактов суммирования в этом алгоритме запрещены, т.к. перенос всегда необходимо прибавлять.
После n циклов вычисленное произведение будет представлено двумя числами С и Р. их нужно сложить на обычном сумматоре с замкнутыми цепями переноса.
Пример:
В 0 0111 0 0111 0 1011 0 1011 0 0101 0 0101 0 0010 0 0010 0 1001
СМ 00 0000 00 1111 00 0111 00 1000 00 0100 00 1100 00 0110 00 0001 00 0000
Р 0000 0000 0000 0111 0111 0111 0111 0110 0110
А 0 1111 0 1111 0 1111 0 1111 0 1111 0 1111 0 1111 0 1111 0 1111
Сч 00 00 01 01 10 10 11 11 00
0 1001 7/16*15/16=105/256
00 0110 6/16+9/256=105/256
0 1111
Дерево сумматора.
Идея: увеличить количество сумматоров с разорванными цепями переноса, чтобы умножение производилось за 1 такт.
С1+С2+С3=S1s+S2p
C1+C2+…+Cn= 2/3n слагаемых
4/9n слагаемых и т.д.
Ускорение достигается за счет того, что при выработке каждой суммы в каждом из n-2 сумматоров нет задержки распространения переноса. Последние два слагаемых складываются на n-1 сумматоре, у которых цепи переноса замкнуты.
Если очередной ярус слагаемого не делится на 3 , свободные входы сумматоров можно использовать для прибавления суммы из другого яруса.
Дерево сумматора для умножения 12-разрядных чисел:
Сi(1:n)=A(1:n)*bi
tсум=17tкс<=24tкс<=2ntкс
Все слагаемые подаются на сумматоры с необходимым сдвигом.
Пример:
0,1111*0,1111
дерево сумматора:
tсум=2tкс+5tкс=7tкс
å1 | C1 Sum8 | ||||||||
C2 C2 | |||||||||
C3 | |||||||||
S1 | |||||||||
S2 | |||||||||
å2 | S1 Sum7 | ||||||||
L1(S2) | |||||||||
C4 | |||||||||
S3 | |||||||||
S4 | |||||||||
å3 | S3 Sum6 | ||||||||
L1(S1) | |||||||||
Sum(1:5) |
Умножение чисел представленных в дополнительных кодах.
С=А*В
1) В>0
Алгоритм умножения применяется без изменения. К сумме частичных произведений в каждом такте прибавляется А, если цифра Bn =1. знаковые разряды С иа учавствуют в суммировании, у А знаковый разряд при суммировании удваивается.
С 11 0111
После сдвига 11 1011
С 10 1000
После сдвига 11 0100
2) B<0
А*(-В)=А*(1-В)=А-АВ
1-АВ
А-АВ+(1-А)=1-АВ
Корректирующее слагаемое
После умножения в цикле на n цифр множителя к сумматору прибавляется корректирующее слагаемое(кс). Если B>0, то корректирующее слагаемое=0, иначе – 1-А .
А*В
5*6 кс=0
-5*6 кс=0
5*(-6) кс=1-5=11 1011
-5*(-6) кс=00 0101
микропрограмма: