最終課題で詳細に説明されている。外部値計算回路を検討する。
2入力A, Bに対して以下の計算を行い、出力OUTを生成します。
OUT = sgn(A*B) * min(|A|, |B|)
今回はA, B, OUTとも2の補数表現の8ビット数とします。
8ビットの2の補数表現の最小値、最大値は以下のようになります。
8ビットの2の補数 | 10進数表現(整数表現) | |
最大値 |
0111 1111 |
127 |
最小値 |
1000 0000 |
−128 |
したがって、2の補数表現の8ビットを用いれば、−128から127の間の整数が表現することができます。
したがって、絶対値を計算したいのですから、正または0の数値であれば、入力をそのまま出力し、
負の数であれば符号を反転させて正の数にすればよいことになります。
ただし、注意点があって、数値がー128の絶対値は128になりますが、8ビットの2の補数表現では127が最大値なので、127に丸める必要があります。
入力 | 出力 | |
入力1のMSB | 入力2のMSB | 積のMSB |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
1)上記シミュレーション動作の確認
2) 回路合成し、なるべく高速な回路を実現せよ
以上