乗算器とは
乗算器とは、2つの数の乗算(掛け算)を行うための
電子回路です。
デジタル回路で構成される
デジタル乗算器と、
アナログ回路で構成される
アナログ乗算器の2種類があります。
デジタル乗算器は、
デジタル信号を用いて乗算を実行する回路で、
コンピュータなどの
演算装置の中核を担っています。その実装には様々な手法があり、基本的には部分積を計算し、それらを加算することで最終的な積を求めます。このプロセスは、小学校で習う筆算による乗算と似ていますが、
デジタル乗算器では二進数を用いて計算が行われます。
符号なし整数の乗算
8ビットの符号なし整数の乗算を例に、その仕組みを見ていきましょう。2つの入力値を \(a[7:0]\) と \(b[7:0]\) とします。このとき、8つの部分積 \(p_0\) から \(p_7\) を生成します。
\(p_i\) は、\(a\) の各ビットと \(b\) の全ビットの
論理積(AND演算)で計算されます。具体的には、以下のようになります。
\(p_0[7:0] = a[0] \times b[7:0] = \{a[0]\} \text{ AND } b[7:0]\)
\(p_1[7:0] = a[1] \times b[7:0] = \{a[1]\} \text{ AND } b[7:0]\)
\(p_2[7:0] = a[2] \times b[7:0] = \{a[2]\} \text{ AND } b[7:0]\)
\(p_3[7:0] = a[3] \times b[7:0] = \{a[3]\} \text{ AND } b[7:0]\)
\(p_4[7:0] = a[4] \times b[7:0] = \{a[4]\} \text{ AND } b[7:0]\)
\(p_5[7:0] = a[5] \times b[7:0] = \{a[5]\} \text{ AND } b[7:0]\)
\(p_6[7:0] = a[6] \times b[7:0] = \{a[6]\} \text{ AND } b[7:0]\)
\(p_7[7:0] = a[7] \times b[7:0] = \{a[7]\} \text{ AND } b[7:0]\)
最終的な積 \(P[15:0]\) は、これらの部分積をシフトしながら加算することで得られます。
\(P[15:0] = p_0 + p_1 \text{ (左に1ビットシフト) } + p_2 \text{ (左に2ビットシフト) } + ... + p_7\text{ (左に7ビットシフト) }\)
符号付き整数の乗算
もし \(b\) が符号付き整数である場合、部分積を符号拡張してから加算する必要があります。\(a\) が符号付き整数の場合、\(p_7\) のみを他の部分積の合計から減算する必要があります。また、2の補数表現を使用する場合は、\(p_0\) と \(p_7\) の左端に1を補い、さらに \(p_7\) の各ビットを反転させます。
これは、2の補数の特性を利用して、減算を加算で表現するテクニックです。乗数と被乗数の両方が負の数の場合、算術オーバーフローが発生しますが、通常は無視されます。
実装
初期の乗算器では、シフターとアキュムレータを使用して部分積を足し合わせていました。部分積を1つ計算するのに1クロックサイクルが必要でした。しかし、最近の乗算器アーキテクチャでは、Baugh-Wooleyアルゴリズム、ウォレス木、Dadda乗算器などの手法を用いて、1クロックサイクルで部分積の加算を完了します。ウォレス木型乗算器は、ブースの乗算アルゴリズムを適用することで、加算する部分積の数を減らし、さらに性能を向上させることができます。
アナログ乗算器は、
アナログ信号を用いて乗算を実行する回路で、
周波数帯域の変換などに用いられます。一般的に以下の等式を利用して実装されます。
\(AB = e^{\log{A} + \log{B}}\)
原理
1.
バイポーラトランジスタにおいて、ベース・エミッタ間電圧(\(V_{BE}\))がコレクタ電流(\(I_C\))の対数に比例することを利用し、入力信号の対数を取得します。
\(V_{BE} \propto \log{I_C}\)
2.
オペアンプを用いて、これらの対数値を加算します。
3. 1と同様の原理で、2で得られた和の指数を取ります。これにより、2つの数の積が得られます。
\(I_C \propto e^{V_{BE}}\)
アナログ回路なので、これらのステップはほぼ同時に実行されます。また、ステップ2を減算に変更することで、同様の原理で除算も可能です。
参照
参考文献
関連項目
ブースの乗算アルゴリズム
積和演算
混合器 (ヘテロダイン)
加算器
オペアンプ
外部リンク
* Multiplier Designs
以上が、乗算器に関する詳細な解説です。
デジタル乗算器と
アナログ乗算器の違い、それぞれの動作原理、実装方法について理解を深めていただければ幸いです。