乗算器(論理回路)

論理回路における乗算器とは、2つの2進数を掛け合わせる論理回路のことです。

ここでは、2つの0以上の2進数を掛け合わせる符号なし2進数の乗算器について説明します。

符号なし2進数の乗算器は、複数桁の2進数の掛け算の方法を論理回路に落とし込むことで実現できます。

符号なし2進数の乗算器の作り方

複数桁の2進数の掛け算より、4ビットの2進数a_[[3]]a_[[2]]a_[[1]]a_[[0]]b_[[3]]b_[[2]]b_[[1]]b_[[0]]の掛け算は、以下の計算で求められます。

a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[[3]]b_[[2]]b_[[1]]b_[[0]]=(a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[[0]])+(a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[1]]×10)+(a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[2]]×100)+(a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[3]]×1000)

論理回路で表現された2進数に0や1を掛ける方法より、a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[[0]]は、以下の論理回路で表せます。

同様に、a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[[1]]a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[[2]]a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[[3]]も以下の論理回路で表せます。

上記の論理回路の出力を使うと、先ほどの計算は、以下のように書き換えられます。

=c_[[3]]c_[[2]]c_[[1]]c_[[0]]+(d_[[3]]d_[[2]]d_[[1]]d_[[0]]×10)+(e_[[3]]e_[[2]]e_[[1]]e_[[0]]×100)+( f_[[3]] f_[[2]] f_[[1]] f_[[0]]×1000)

上記の計算は、4ビットの加算器を3つ使って、以下のように表せます。

つまり、上記で導出した5つの論理回路を使って、以下の計算を実現できます。

a_[[3]]a_[[2]]a_[[1]]a_[[0]]×b_[[3]]b_[[2]]b_[[1]]b_[[0]]=g_[[7]] g_[[6]] g_[[5]] g_[[4]] g_[[3]] g_[[2]] g_[[1]] g_[[0]]

符号なし2進数の乗算器を作れました。