第13回 カウンタ回路 (1)

オンデマンド受講する場合は、必ず連絡の動画を見てから今回の内容に進んでください。

7セグメントLEDと7セグデコーダ

概要

動画の解説を参照
7セグメントLEDは、7本の縦横の線を組み合わせてデジタル数字を表示する素子です。
以下の図のリンク先の回路で、a~g につながっている入力を切り替えてみればわかるように、それぞれの線 (セグメント) に対応する入力が 0 なら消え、1 なら光ります。


これを使えば、0~9の数字とA, b, C, d, E, F のアルファベット、つまり16進数の1桁分を表すことができます。
とはいえ、いちいち入力a~gを切り替えてその文字を表すのは非効率です。
そこで、4桁の2進数を受け取り、a~gに適切な出力を出す7セグデコーダを使います。

たとえば \((I_3, I_2, I_1, I_0)\) = (0, 0, 1, 1) にすると、a, b, c, d, g に 1 が、左の2本の縦棒 e, f には 0 が出力されるので7セグメントLEDは「3」の形に光ります。
7セグデコーダでは4つの入力に応じて a~g に適切に出力することで 0~F の形に光るようにしているわけです。
たとえば a (上の横棒) の出力は7セグメントLEDの表示が 0, 2, 3, 5, 6, 7, 8, 9, A, C, E, F のときに 1 で、1, 4, b, d のときに 0 になればいいので、真理値表はこのようになります。
表示 \(I_3\) \(I_2\) \(I_1\) \(I_0\) a
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 1
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 1
7 0 1 1 1 1
8 1 0 0 0 1
9 1 0 0 1 1
A 1 0 1 0 1
b 1 0 1 1 0
C 1 1 0 0 1
d 1 1 0 1 0
E 1 1 1 0 1
F 1 1 1 1 1
第4回でみた、真理値表から主乗法標準形で論理式を導く方法で a の出力を計算できます (その値を文字 \(a\) で表すことにします)。
真理値表の a の値が 0 の行の右に、対応した論理式 (4つの入力の論理和。その行で値が 1 のものにバーをつける) を書き、
表示 \(I_3\) \(I_2\) \(I_1\) \(I_0\) a
0 0 0 0 0 1
1 0 0 0 1 0 \(I_3 + I_2 + I_1 + \bar{I}_0\)
2 0 0 1 0 1
3 0 0 1 1 1
4 0 1 0 0 0 \(I_3 + \bar{I}_2 + I_1 + I_0\)
5 0 1 0 1 1
6 0 1 1 0 1
7 0 1 1 1 1
8 1 0 0 0 1
9 1 0 0 1 1
A 1 0 1 0 1
b 1 0 1 1 0 \(\bar{I}_3 + I_2 + \bar{I}_1 + \bar{I}_0\)
C 1 1 0 0 1
d 1 1 0 1 0 \(\bar{I}_3 + \bar{I}_2 + I_1 + \bar{I}_0\)
E 1 1 1 0 1
F 1 1 1 1 1
その論理積を取ったものが \(a\) になります。
\(a\) \(=(I_3 + I_2 + I_1 + \bar{I}_0)\) \((I_3 + \bar{I}_2 + I_1 + I_0)\) \((\bar{I}_3 + I_2 + \bar{I}_1 + \bar{I}_0)\) \((\bar{I}_3 + \bar{I}_2 + I_1 + \bar{I}_0)\)
7セグデコーダの中にはこういう出力を出す論理回路が含まれています。
b~gのための出力 \(b\)~\(g\) も同様です。

課題1

※ 準備 : 学籍番号を入れて「入力」をクリック (タップ) してください。


7セグデコーダの出力 の真理値表を以下の形式で書いてください。
表示 \(I_3\) \(I_2\) \(I_1\) \(I_0\)
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
A 1 0 1 0
b 1 0 1 1
C 1 1 0 0
d 1 1 0 1
E 1 1 1 0
F 1 1 1 1
課題1解説

課題2

課題1で求めた出力の論理式を主乗法標準形で書いてください。

課題2解説

アップカウンタ

概要

動画の解説を参照
前回見たように、ネガティブエッジトリガ型JK-FFの入力 \(J, K\) に (1, 1) を入れると、\(CLK\) が2回切り替わるたびに \(Q\) は1回切り替わります。

この \(Q\) をさらにもう1つのネガティブエッジトリガ型JK-FFの \(CLK\) に入れれば、\(CLK\) が4回切り替わるたびに1回切り替わる出力が作れます。
オシロスコープは上から順に \(CLK, Q_0, Q_1\) を表します。


\(Q_1Q_0\) の並びの2進数に対応する値を \(Q\) とすれば、\(Q\) は 0→1→2→3→0→1→... のように変化します。
「数をカウント (count) するもの」、つまり counter なので、このような回路をカウンタ回路と言います。
上の回路は0~3の範囲で数が増えていく (カウントアップする) ので4進アップカウンタです。
\(Q_1\) \(Q_0\) \(Q\)
0 0 0
0 1 1
1 0 2
1 1 3
出力 \(Q_1, Q_0\) を7セグデコーダの \(I_1, I_0\) に入れて7セグメントLEDにつなげば、出力を数字で確認できます。

ネガティブエッジトリガ型JK-FFをもう1つ増やせば、\(Q_2Q_1Q_0\) の並びの2進数に対応する値 \(Q\) は 0→1→2→...→7→0→1→...となります。
これは8進アップカウンタです。


さらにもう1つ増やせば16進アップカウンタになります。


シミュレータではこれが1つの素子にまとめられています。
\(U/D\) はカウンタの種類を切り替えるための入力で、0 にするとアップカウンタ、1 にすると後述のダウンカウンタになります。
\(R\) は「リセット」で、\(R=1\) にすると \(Q_0~Q_3\) がすべて 0 になり、\(R=0\) にするとカウントが始まります。

ダウンカウンタ

概要

動画の解説を参照

アップカウンタと同様の回路を作り、JK-FFをポジティブエッジトリガ型に変えると、15→14→13→...→1→0→15→14→...のように、カウントダウンするようになります。
このように数が減っていく方向に変化する回路をダウンカウンタ と呼びます。
これは16進ダウンカウンタです。

それぞれ左隣の出力の立ち上がりで出力が変化するので、\(Q_3Q_2Q_1Q_0\) の並びの2進数を10進数にしたものは下図の下側の数字のようになります。

ひとつの素子でダウンカウンタを作るには、前項の最後の回路で \(U/D\) を 1 にすればいいだけです。

課題

課題解答