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

論理回路 / 4進同期カウンタ (2bit)

一般に、カウンタ回路は同期式が利用されている。非同期式は、回路の遅延のばらつきが大きく、動作が不安定になりやすい。同期式は、回路が複雑になるが、動作が安定している。

ってことで、同期カウンタ回路を勉強しましょう。

なお、多くのグーグル先生にたくさん、いろいろ教えていただきました。なかでも、
Hatada’s Home Page
3 bit synchronous up counter using j k flip flop | counters
は、とても参考になりました。ありがとうございます。

JKフリップフロップの動作

図1. JK-FFの動作

まず、JKフリップフロップの動作をおさらいします。

図 1 は、JKフリップフロップの動作を表しています。J、K は入力の状態。Qn は現在の出力、Qn+1 は次の出力の状態です。

たとえば 3 行目、入力が (1,0) で、Qn=0 のとき、Qn+1 は 1 に変化します。入力が同じ (1,0) であっても、7行目のように、Qn=1 のときは、Qn+1 は変化しません。

図2. JK-FFの出力の遷移

JKフリップフロップ の動作を、出力の遷移を視点にしたのが、図 2 です。

出力が 0 → 1 に変化するのは、J=1 のときで、K は don’t care です。同様に、出力が 1 → 0 に変化するのは、K=1 のときで、J は don’t care です。
don’t care とは、0 でも 1 でもかまわない、ということです。

JKフリップフロップは、Qn=0 のときは入力 J によって、Qn=1 のときは入力 K によって、次の出力が変化する、ということがわかります。

JKフリップフロップを使った 4進同期カウンタ

とりあえず、回路の構成が簡単な 4進同期カウンタで実験してみました。
そのあとで、回路の設計をやりましょう。JKフリップフロップを使った、同期式のアップ・バイナリ・カウンタを基準とします。

実験回路図

図3. JK-FF を使った 4進同期カウンタ 実験回路

上側が、JKフリップフロップ 2段で構成した 4進同期カウンタです。各 JKフリップフロップには、同一のクロックが入力されている、つまり「同期」しています。

左下はクロックの発振回路、右下が、リセットスイッチ SW1、クロックの表示 LED3 と、出力表示 LED1、LED2 です。LED1 が LSB、LED2 が MSB になっています。

LED1、LED2 は、
00 → 01 → 10 → 11 → 00 → …
のように、カウント表示していきます。出力が 2 ビットなので、クロックの数を 22 で割った余り 0 から 3 が表示される仕組みです。

4進同期カウンタの設計

さてと、頭が痛くなりますが、回路の設計方法をまとめておきましょう。

図4. 4進同期カウンタ 真理値表

図 4 が 4進同期カウンタの真理値表です。

Q1(n)、Q0(n) は、ビット 1 とビット 0 の現在値。00 から 11 まであります。
Q1(n+1)、Q0(n+1) は、次の出力の状態。n のとき 00 ならば、n+1 は 01 ですから、01 から 00 までとなります。

J1、K1 は、ビット 1 の入力です。ここは、Q1(n) → Q1(n+1) の変化に着目します。
1 行目。Q1(n)=0 が Q1(n+1)=0 になります。図 2 から、このときは J1=0、K1=x です。
2 行目。同様に、Q1(n)=0 が Q1(n+1)=1 になりますから、図 2 から J1=1、K1=x です。
3 行目は、Q1(n)=1、Q1(n+1)=1 なので J1=x、K1=0
4 行目は、Q1(n)=1、Q1(n+1)=0 なので J1=x、K1=1
これで、J1、K1 の列が埋まりました。

J0、K0 は、ビット 0 の入力です。ここは、Q0(n) → Q0(n+1) の変化をみます。
1 行目は、 Q0(n)=0、Q0(n+1)=1 なので J0=1、K0=x です。
以下、同様にして、J0、K0 を埋め、真理値表が完成しました。

図5. 4進同期カウンタ カルノー図

真理値表にしたがい、カルノー図を描きます。

J1 について。
Q1Q0 が 00 のとき、J1 は 0 ですので、左上のマスには 0 を書き入れます。Q1Q0 が 01 のとき、J1 は 1 なので、右上のマスには 1 を書き入れます。同様に、Q1Q0 が 10 のとき J1 は don’t care、Q1Q0 が 11 のとき J1 は don’t care です。
1 を囲んだ赤色のループより、論理式は J1=Q0 となります。

K1 について。
Q1Q0=00 のとき K1=x
Q1Q0=01 のとき K1=x
同様に、10 のとき K1=0、11 のとき K1=1 となり、論理式は K1=Q0 となります。

以下、同様にカルノー図を描き、論理式を求めた結果、

J1 = Q0
K1 = Q0
J0 = 1
K0 = 1

となりました。

この論理式から論理回路をつくると、図 3 のカウンタ回路部分になります。
JKフリップフロップの 1 段目 (ビット 0) の入力 J0、K0 は常に 1 ですので、5V ラインにつないでおきます。2 段目 (ビット 1) の入力 J1、K1 はともに Q0 ですので、1 段目 (ビット 0) の出力 Q0 につなぐ。
ということです。

後記

4進同期カウンタは、JKフリップフロップだけで構成できるので、とても簡単でした。
が、設計方法は何進であっても同じ。ビット数が多くなれば、それだけ多くの真理値表、カルノー図を作らなければなりませんが、それはせっせと手を動かせば済むことなので、問題はないです。

とうぜん設計するためのツールがあるんだろうと思いますが、趣味で回路を考えるのですから、こういう計算も、また楽しい、あ〜頭痛いけど、ものです。

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