前回は 10 進数を入力することでその数字を表示する回路を作ってみました (「ダイオードマトリクスで10進7セグLEDドライバを作ってみる」) 。しかし、これを Arduino などで制御するのは実用的ではありませんでした。
そこで、4桁の 2進数を入力として 7 セグメント LED を駆動する回路、たとえば TC4511BP といったドライバ IC がありますが、今回はこうしたドライバ IC のような動作をする論理回路を考えてみます。
でも、さすがにこれをトランジスタで作る気力はありませんので (^_^;) 、手持ちの AND と OR のロジック IC を使うことにします。
真理値表
論理回路を作る場合、まず必要になるのが真理値表です。下表のようにしました。
入力は Z3 〜 Z0 の 2 進数 (BCD) です。
出力は 7 つのセグメント a 〜 g の組み合わせになります。たとえば入力が 0100 の場合、セグメント b c f g を点灯させて [ 4 ] を表示する、ということを示しています。
1001 を越える入力はセグメントをすべて消灯することにします。小数点は使用しません。
論理式を作る
真理値表から論理式を作ります。今回は、じつは初めてなんですが、カルノー図法を利用してみました。
カルノー図法については、グーグル先生に尋ねて下さい m(__)m
まずセグメント a について。なお、Z2′ は Z2 を表しています。
セグメント b は、
というふうになります。
これをすべてのセグメントでやった結果、論理式は以下のようになりました。
a = Z2 Z1 ( Z0 + Z3 ) + Z3 ( Z2 Z0 + Z1 ) b = Z2 Z1 + Z3 ( Z2 + Z1 Z0 + Z1 Z0 ) c = Z3 ( Z1 + Z1 Z0 + Z2 ) + Z2 Z1 d = Z2 Z1 ( Z0 + Z3) + Z3 ( Z2 Z1 + Z1 Z0 + Z2 Z1 Z0 ) e = Z0 ( Z2 Z1 + Z3 Z1 ) f = Z3 ( Z1 Z0 +Z2 ) + Z3 Z2 Z1 g = Z3 ( Z2 Z1 + Z2 Z1 + Z1 Z0 ) + Z3 Z2 Z1
さて、これらの論理式をじーっと眺めてみると、同じ部分がいくつか見られます。そうした場所は回路を共通にできますから、まとめることにします。
式の中で、二度以上出てくる部分は次のとおりです。
R = Z2 Z1 S = Z2 Z0 T = Z1 Z0 U = Z1 Z0 V = Z1 Z0 W = Z2 Z1 X = Z0 + Z3 P = Z3 R = Z3 Z2 Z1 Q = R X = Z2 Z1 ( Z0 + Z3 )
ということで、論理式は以下のようになりました。
a = Q + Z3 ( S + Z1 ) b = R + Z3 ( Z2 + U + T ) c = Z3 ( Z1 + T + Z2 ) + R d = Q + Z3 ( W + V + Z1 S ) e = Z0 ( R + Z3 Z1 ) f = Z3 ( U + Z2 ) + P g = Z3 ( Z2 Z1 + W + V ) + P
では、次回は、この論理式にしたがって論理回路を作ってみましょう。