比較回路

論理回路 logic

比較回路(コンパレータ)は、入力された数値を比較して、一致や大小を判定する回路です。

図1は、2つの2ビットの入力信号A,Bを比較する回路のシンボル図です。表1は、図1の比較回路の真理値表です。入力Aは2ビットで、下位ビットをA[0]で表し、上位ビットをA[1]で表します。同様に、入力Bは2ビットで、下位ビットをB[0]で表し、上位ビットをB[1]で表します。A=Bのとき出力信号A=Bが1になり、A<Bのとき出力信号A<Bが1になり、A>Bのとき出力信号A>Bが1になります。

2ビットの比較回路
図1: 2ビットの比較回路
表1: 比較回路の真理値表
入力 出力
A[1] A[0] B[1] B[0] A=B A<B A>B
0 0 0 0 1 0 0
0 0 0 1 0 1 0
0 0 1 0 0 1 0
0 0 1 1 0 1 0
0 1 0 0 0 0 1
0 1 0 1 1 0 0
0 1 1 0 0 1 0
0 1 1 1 0 1 0
1 0 0 0 0 0 1
1 0 0 1 0 0 1
1 0 1 0 1 0 0
1 0 1 1 0 1 0
1 1 0 0 0 0 1
1 1 0 1 0 0 1
1 1 1 0 0 0 1
1 1 1 1 1 0 0

出力A=B, A<B , A>Bについて、表1から主加法標準形で論理式を作成します。A=Bは、1になるAとBの組み合わせが4通りなので、論理式は(1)のようになります。

\begin{equation}
\begin{split}
A=B
= & \overline{A[1]} \cdot \overline{A[0]} \cdot \overline{B[1]} \cdot \overline{B[0]}+\\
& \ \overline{A[1]} \cdot A[0] \cdot \overline{B[1]} \cdot B[0]+\\
& \ A[1] \cdot \overline{A[0]} \cdot B[1] \cdot \overline{B[0]}+\\
& \ A[1] \cdot A[0] \cdot B[1] \cdot B[0]\ \ \ \ \ \text{(1)}
\end{split}
\end{equation} 

A<Bは、1になるAとBの組み合わせが6通りなので、論理式は(2)のようになります。

\begin{equation}
\begin{split}
A<B
= & \overline{A[1]} \cdot \overline{A[0]} \cdot \overline{B[1]} \cdot B[0]+\\
& \overline{A[1]} \cdot \overline{A[0]} \cdot B[1] \cdot \overline{B[0]}+\\
& \overline{A[1]} \cdot \overline{A[0]} \cdot B[1] \cdot B[0]+\\
& \overline{A[1]} \cdot A[0] \cdot B[1] \cdot \overline{B[0]}+\\
& \overline{A[1]} \cdot A[0] \cdot B[1] \cdot B[0]+\\
& A[1] \cdot \overline{A[0]} \cdot B[1] \cdot B[0]\ \ \ \ \ \text{(2)}
\end{split}
\end{equation}

式(2)は、ブール代数の相殺則を利用して(3)のように最適化できます。

\begin{equation}
\begin{split}
A<B
= & \overline{A[1]} \cdot \overline{A[0]} \cdot \overline{B[1]} \cdot B[0]+\\
& \overline{A[1]} \cdot B[1] \cdot \overline{B[0]}+\\
& \overline{A[1] \cdot A[0]} \cdot B[1] \cdot B[0]\ \ \ \ \ \text{(3)}
\end{split}
\end{equation}

A>Bは、1になるAとBの組み合わせが6通りなので、論理式は(4)のようになります。

\begin{equation}
\begin{split}
A>B
= & \overline{A[1]} \cdot A[0] \cdot \overline{B[1]} \cdot \overline{B[0]}+\\
& A[1] \cdot \overline{A[0]} \cdot \overline{B[1]} \cdot \overline{B[0]}+\\
& A[1] \cdot \overline{A[0]} \cdot \overline{B[1]} \cdot B[0]+\\
& A[1] \cdot A[0] \cdot \overline{B[1]} \cdot \overline{B[0]}+\\
& A[1] \cdot A[0] \cdot \overline{B[1]} \cdot B[0]+\\
& A[1] \cdot A[0] \cdot B[1] \cdot \overline{B[0]}\ \ \ \ \ \text{(4)}
\end{split}
\end{equation}

式(4)は、ブール代数の相殺則を利用して(5)のように最適化できます。

\begin{equation}
\begin{split}
A>B
= & \overline{A[1]} \cdot A[0] \cdot \overline{B[1]} \cdot \overline{B[0]}+\\
&A[1] \cdot \overline{A[0]} \cdot \overline{B[1]}+\\
&A[1] \cdot A[0] \cdot \overline{B[1] \cdot B[0]}\ \ \ \ \ \text{(5)}
\end{split}
\end{equation}

HDL記述

2ビットの比較回路をVerilogで記述したのがリスト1です。3項演算子を使ってAとBをそのまま比較しています。

リスト1
タイトルとURLをコピーしました