2017年 09月 18日
乗算器で符号拡張をさぼる話
Boothで求めた部分積を足しこむ際に符号拡張をばぼる話です。
ここにあげた例ではデータ長が短すぎて有難さがわからないのですが、符号拡張をさぼる手法があります。名前は知りません。
ここにあげた例ではデータ長が短すぎて有難さがわからないのですが、符号拡張をさぼる手法があります。名前は知りません。
まずは、今までの例ではありがたみどころか説明さえできないので、前回の符号あり乗算の例を無駄に符号拡張します。
赤字が符号拡張です。実際の乗算器では、もっとたくさん符号拡張が必要になります。
赤字が符号拡張です。実際の乗算器では、もっとたくさん符号拡張が必要になります。
これをさぼるには…
最下位の部分積とそれ以外ではルールが違うのですが、Sを部分積の符号とすると
最下位の部分積とそれ以外ではルールが違うのですが、Sを部分積の符号とすると
最下位は "~S,S,S" を上位ビットに拡張
それ以外は "1,~S" を上位ビットに拡張
それ以外は "1,~S" を上位ビットに拡張
上の例だと
では、最下位の部分積とそれ以外の部分積の場合で、本来の符号拡張との差を見てみます。
ここで、n-1個目の部分積までの差分の総和が{1,1,…,1,0,0}と仮定したときの n個目の部分積までの差分の総和を求めてみます。
部分積は 2bit ずれるのに注意です。
部分積は 2bit ずれるのに注意です。
n個目の部分積までの差分の総和も{1,1,…,1,0,0}になり、最下位も同様なので、帰納法で証明されたことに… なるんだよね?
つまり、桁あふれ分だけに差が出てくるので、まぁ良いかってことです。
Verilog にするとあまり差が出ないのですが、Github を更新しました。
つまり、桁あふれ分だけに差が出てくるので、まぁ良いかってことです。
Verilog にするとあまり差が出ないのですが、Github を更新しました。
by tom01h
| 2017-09-18 18:20
| 論理設計の話