比較器とは
ある2つの数値A,Bを比較し、どちらが大きいか判定する演算器です。
判定方法はシンプルです。人間の目で10進数の数値を大小比較するときに考えることを2進数に落とし込むだけです。
もし、A=33,B=4ならば、どちらが大きいかは明白です。A=33です。
どのように判断されましたでしょうか?Bは1桁で、Aは2桁と、そもそもAの方が桁数が多いと答える方が多そうです。
この考え方を論理回路でも用います。
A=33を2進数にすると、[100001]です。B=4を2進数にすると、[100]です。
2進数も、桁数の多いAが大きいことが一目で分かりました。
もし同じ桁数の場合は、1桁目から数字を比較していきます。この動作内容を次章で示します。
比較器の演算内容
Nbitの数値
前章で示した指針通り、

のとき、 、 のとき、 、 のとき、 、
それぞれの成立条件は、下記のように考えることができます。
:
i bit目のAとBの数値がAの方が大きい または
i bit目の数値はAとB等しいが、i-1bit目までのAとBの数値がAの方が大きい :
i bit目のAとBの数値が等しい かつ i-1 bit目までのAとBの数値も等しい :
i bit目のAとBの数値がBの方が大きい または
i bit目の数値はAとB等しいが、i-1bit目までのAとBの数値がBの方が大きい
上記が全てです。これが分かれば後は論理式の通り回路を組むだけです。
比較器の回路設計
を利用して、下記の比較器を設計できます。

一般化しているため
なお、比較する数値の桁が一致しない場合は、桁が足りない側のbitに0を入れます。
例)A=33の2進数[100001]に対し、B=4を[000100]とします。
大きい方の数値を出力する論理回路設計
前節までは、二つの数値A,Bを比較した結果を3つのフラグで表しました。
問題によっては、フラグだけでなく大きい方の数値を出力すること。なる追加条件があります。
本節では、この実現方法を考えていきます。
まず、前節で算出したフラグが役立ちそうです。
これをAND、ORで実現すると、以下のような回路で表すことができます。

ちょっとトリッキーですが、以下の考え方で設計しました。
AND回路を採用すれば、フラグ0が成立している側の数値に関しては出力に影響しないです。フラグ=1が成立している側の数値の対応するbitが1の場合、ANDが成立するため、この先のORで出力する。
これを
最後に
大きい方の数値を出力する回路設計は、教科書では見たことなく、本サイトオリジナルの設計です。2進数ならば問題無い認識ですが、誤りがある場合はご教授お願いいたします。
他、もっと良い設計方法があればご教授下さると幸いです。
参考文献
ディジタル情報回路 (第2版):清水 賢資 (著) P116,117