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 |