アフィリエイト広告
アフィリエイト広告

2進数入力7セグLEDドライバを作る(論理式)

前回は 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

では、次回は、この論理式にしたがって論理回路を作ってみましょう。

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