第9回: 乗算器(その2)
ブースのアルゴリズム(続き)
前回紹介したブースのアルゴリズムを使って、乗算を実際にやってみましょう。
たとえば6桁で、X = -9, Y = +25 の積を求めてみましょう。
まずX, Yを2進数で求めると次のようになります。
- X = 11 0111 = x5x4x3x2x1x0
- Y = 01 1001 = y5y4y3y2y1y0
いまの場合、N=6ですから、j は0〜(N-2)/2、つまり0〜2まで
求めればよく、Yjは次のようになるでしょう。
j | y2j+1 | y2j | y2j-1 | Yj | Zj |
0 | 0 | 1 | 0 | 1 | X・20 |
1 | 1 | 0 | 0 | -2 | -2X・22 |
2 | 0 | 1 | 1 | 2 | 2X・24 |
このZjをすべて加算すると、次のようになるでしょう。
Z0 = 11111110111 (11桁にあわせる)
Z1 = -2・ 11011100 = 00001001000 (11桁にあわせる)
Z2 = 2・1101110000 = 11011100000
----------------------------------
11100011111
この求められた結果は、2進数で2の補数の00011100001 = 225の
負の数=-225ですから、たしかに-9×25 = -225となっていることが
わかります。
ブースのアルゴリズムを使った乗算器の設計
ブースのアルゴリズムによるQ1, Q2, QNの生成
ブースのアルゴリズムでは、まずYjの値からZjを求めるときに、
Yjの値、つまりy2j, y2j+1, y2j-1の値に応じて、
被乗数Xに対して、2jビットのシフト(Q1)、(2j+1)ビットのシフト(Q2)、
2の補数を求める(QN)、のいずれかの演算を組み合わせて
Zjを求めました。
これは、逆に言えばy2j, y2j+1, y2j-1の値の組(8通り)に対して
Q1, Q2, QNが0か1かを、組み合わせ論理回路で求めればよいわけです。
つまり次のような真理値表の組み合わせ論理回路を求めればよいわけです。
y(2j+1) y(2j) y(2j-1) Y(j) | Q1 Q2 QN
---------------------------+---------
0 0 0 0 | 0 0 0
0 0 1 1 | 1 0 0
0 1 0 1 | 1 0 0
0 1 1 2 | 0 1 0
1 0 0 -2 | 0 1 1
1 0 1 -1 | 1 0 1
1 1 0 -1 | 1 0 1
1 1 1 0 | 0 0 0
これから、次のような論理式が導かれるでしょう。
- Q1 = y2jy2-1
- Q2 = (y2j+1y2j)・/(y2jy2j-1)
- QN = y2j+1・/(y2j・y2j-1)
この論理回路を、BTDセルと名づけて、次のような記号で
かくことにしましょう。
(ブースのアルゴリズムを使った乗算器の続きは次回へ)
ここの「(続)ブースのアルゴリズム」の部分の抜粋
この回のソボクな疑問集
戻る