| code B | 部分積 |
| 000 | 0 |
| 001 | +A |
| 010 | +A |
| 011 | +2A |
| 100 | -2A |
| 101 | -A |
| 110 | -A |
| 111 | 0 |
|--10987654321098765432109876543210- 00 |------------------------------- FG0 01 | | | | DEF| 02 | | | | BCD | 03 | | | | zAB | 04 | | | |xyz | 05 |--------------------- vwx -------| 06 | | | tuv| | 07 | | | rst | | 08 | | | pqr | | 09 | | |nop | | 10 |----------- lmn -----------------| 11 | | jkl| | | 12 | | hij | | | 13 | | fgh | | | 14 | |def | | | 15 |- bcd ---------------------------| |--10987654321098765432109876543210-
しかも上記の b の部分をちゃんと符号拡張しておけば、2 の補数に対しても きっちり対応してくれるすぐれもの。今回は、32 ビットオペランドで、b で 丁度終了するから、符号拡張の必要すらない。
しかし 整数には符号無しの乗算も必要なので、結局もう 1 つ、部分積が必要 となり、計 17 個の部分積となる。
3 - 2 圧縮器を用いて、3 オペランドを 2 オペランドに圧縮する。圧縮に必 要な時間は最後に示すが、どのステージでもおよそ 1 ns 程度。
まず、エンコードされた 16 個の 34 ビットオペランドを下位から順に 3 つ づつに分け、圧縮器に投入する。すると、下図のように、最下位 2 ビットは スルーして、残り 36 ビットについて実際の圧縮が行われる。下図は、イメー ジのためあえて載せていないが、符号拡張を忘れずに行う必要がある。
以下、入力のビット数を上から a,b,c 、和とスルーの連結出力を s 、キャリー
の出力を t としたとき、(a,b,c,s,t) 加算器と表記し、この加算器をモジュー
ルの 1 単位として設計する。
なお、残った 2 つの部分積は、何も手を加えない。( スルー )
1.
(34,34,34,36,2) adder x 5
output:
38b , 36b , 38b , 36b , 38b , 36b , 38b , 36b , 38b , 36b , 38b , 36b ,
34b ( through ) , 34(32)b ( through )
0000000000000000000000000000000000
1111111111111111111111111111111111
2222222222222222222222222222222222
------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
012345678901234567890123456789012345
0 1 2 3
3333333333333333333333333333333333
4444444444444444444444444444444444
5555555555555555555555555555555555
------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
6666666666666666666666666666666666
7777777777777777777777777777777777
8888888888888888888888888888888888
------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
9999999999999999999999999999999999
0000000000000000000000000000000000
1111111111111111111111111111111111
------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
2222222222222222222222222222222222
3333333333333333333333333333333333
4444444444444444444444444444444444
------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
5555555555555555555555555555555555
DD66666666666666666666666666666666
-----------------------------------------------------------------------------------
5555555555555555555555555555555555
0000000000000000000000000000000000
0123456789012345678901234567890123456789012345678901234567890123
0 1 2 3 4 5 6
前のステージの結果を更に圧縮する。以下、同様に 2 つに減るまで作業を続ける。
stage 2.
(36,38,36,41,3) adder x 2
(38,36,38,39,3) adder x 1
(36,34,32,34,3} x 1 , 1bit dummy
output:
44b , 41b , 42b , 39b , 44b , 41b , 38b , 34(33)b
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
-----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
01234567890123456789012345678901234567890
0 1 2 3 4
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
---------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
012345678901234567890123456789012345678
0 1 2 3
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzz
-----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
5555555555555555555555555555555555
DD66666666666666666666666666666666
----------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
0123456789012345678901234567890123
0 1 2 3
stage 3.
(44,41,42,47,4) x 1
(39,44,41,45,5) x 1
output:
51b , 47b , 50b , 45b , 38b ( through ) , 34(33)b ( through )
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
-----------------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
01234567890123456789012345678901234567890123456
0 1 2 3 4
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
---------------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
012345678901234567890123456789012345678901234
0 1 2 3 4
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
stage 4.
(51,47,50,58,5) adder x 1
(45,37,33,37,8) adder x 1 msb dummy
output:
63b , 58b , 45b , 37(36)b
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzz
----------------------------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
0123456789012345678901234567890123456789012345678901234567
0 1 2 3 4 5
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
-------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
0123456789012345678901234567890123456
0 1 2 3
stage 5.
(63,58,45,58,6) x 1 msb dummy
output:
64b , 58b , 37(36)b ( through )
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzz
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzzz
----------------------------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
0123456789012345678901234567890123456789012345678901234567
0 1 2 3 4 5
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
0123456789012345678901234567890123456
0 1 2 3
stage 6.
(64,57,36,57,7) x 1 msb dummy
output:
64b , 57(56)b
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
---------------------------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
012345678901234567890123456789012345678901234567890123456
0 1 2 3 4 5
stage cla.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzz
Yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
--------------------------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzzz
0123456789012345678901234567890123456789012345678901234567890123
0 1 2 3 4 5 6
| モジュール名 | cost prim. | 時間 (ns) | 必要数 | 小計 prim. |
|---|---|---|---|---|
| boothencode | 501 | 4.982 | 16 | 8016 |
| comp1_0 | 282 | 1.204 | 5 | 1410 |
| comp2_0 | 310 | 1.244 | 2 | 620 |
| comp2_1 | 307 | 1.181 | 1 | 307 |
| comp2_2 | 266 | 0.886 | 1 | 266 |
| comp3_0 | 349 | 1.274 | 1 | 349 |
| comp3_1 | 352 | 1.280 | 1 | 352 |
| comp4_0 | 422 | 1.495 | 1 | 422 |
| comp4_1 | 284 | 0.835 | 1 | 284 |
| comp5_0 | 425 | 0.864 | 1 | 425 |
| comp6_0 | 393 | 0.835 | 1 | 393 |
| cla | 671 | 8.559 | 1 | 671 |