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

同期カウンタ (JKフリップフロップ使用 2進~10進)

JKフリップフロップを使ったカウンタ回路をつくってみました。

11進~16進同期カウンタは、続きの記事を参照ください。

Dフリップフロップを使ったカウンタ回路は下記を参照ください。

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

JKフリップフロップの真理値表
表1. JK-FFの真理値表

JKフリップフロップの動作をおさらいしておきましょう。

表1 は JKフリップフロップの真理値表です。
J、K は入力、Qn は現在の出力、Qn+1 は次の出力の状態です。

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

また、入力が (0,0) のときは出力は変化しません。(1,1) のときは、出力がトグルする T フリップフロップの動作となります。

JKフリップフロップの励起表
表2. JK-FFの励起表

表2 は、JKフリップフロップの励起表です。
励起表とは、出力を Qn から Qn+1 へ遷移させるための入力を示す表です。俺はどちらも真理値表と書いてますが、まぁ気にしないでくださいまし。

出力が 0 → 1 に変化するのは J=1 のときで、K は don’t care (0 でも 1 でもかまわない) です。同様に、出力が 1 → 0 に変化するのは K=1 のときで、J は don’t care です。
JKフリップフロップは、Qn=0 のときは J によって、Qn=1 のときは K によって Qn+1 が変化する、ということがわかります。

2進~10進同期カウンタ

JKフリップフロップを使用した 2進~10進同期バイナリアップカウンタの回路例です。

  1. 2進カウンタ
  2. 3進カウンタ
  3. 4進カウンタ
  4. 5進カウンタ
  5. 6進カウンタ
  6. 7進カウンタ
  7. 8進カウンタ
  8. 9進カウンタ
  9. 10進カウンタ

フリップフロップとかカウンタとか真理値表とかカルノー図とか、基本的なことは教科書みるか、グーグル先生に尋ねてください。なお、シミュレーションは、verilogHDL によって論理式について行なっており、回路図と連動していません。回路はじっさいに製作しておらず、動作を確認していません。

2進カウンタ

JKフリップフロップを使った2進カウンタの真理値表

2進カウンタです。
クロックが入るたびに出力がトグルする Tフリップフロップになっています。J、K ともに 5V につなぐ回路 (左側) が一般的だと思いますが、don’t care を 0 とみなして、出力 Q を K に、反転出力 Q を J にもどす方法 (右側) もあります。

偶数の n進カウンタは LSB が 1 と 0 の交互になるので、初段は必ずこの回路になります。

JKフリップフロップを使った2進カウンタの回路図
2進カウンタ回路図 (Tフリップフロップ)

JKフリップフロップを使ったTフリップフロップの回路図
2進カウンタ回路図 (出力をもどす Tフリップフロップ)
JKフリップフロップを使った2進カウンタのシミュレーション波形
2進カウンタ シミュレーション

3進カウンタ

JKフリップフロップを使った3進カウンタの真理値表

前出の表2 JKフリップフロップの励起表から、左の真理値表を埋めていきます。

Q(n)=0 → Q(n+1)=0 と変化しないとき J=0 です。Q(n)=0 → Q(n+1)=1 と変化するときは J=1 になります。
Q(n)=1 → Q(n+1)=0 となるときは K=1 です。

JKフリップフロップを使った3進カウンタのカルノー図

3進カウンタですので、(1,0) の次が (0,0) にもどります。

真理値表をみつめれば論理式は求められそうですが、考えているうちにできちゃうので、カルノー図を書きました。

論理式より組み立てた回路が下図。2ビットカウンタでは、まだゲート回路は不要です。

JKフリップフロップを使った3進カウンタの回路図
3進カウンタ回路図
JKフリップフロップを使った3進カウンタのシミュレーション波形
3進カウンタ シミュレーション

4進カウンタ

JKフリップフロップを使った4進カウンタの真理値表

4進カウンタは基本的なカウンタ回路で、これも真理値表をみつめれば論理式が求められそうです。

JKフリップフロップを使った4進カウンタのカルノー図

が、念のためにカルノー図を書いておきました。

JKフリップフロップを使った4進カウンタの回路図
4進カウンタ回路図
JKフリップフロップを使った4進カウンタのシミュレーション波形
4進カウンタ シミュレーション

5進カウンタ

5進カウンタから 3ビットになり、JKフリップフロップが 1つ増えます。
真理値表も大きくなってくるのでちょっとわかりにくくなりますが、Q(n) → Q(n+1) の遷移にたいして J、K の状態が決まることに注目すれば理解できると思います。

JKフリップフロップを使った5進カウンタの真理値表

カルノー図は Q(n) をみて書きます。JKフリップフロップを使ったカウンタ回路では、カルノー図はわりと簡単になります。つまり、ゲート回路も簡単になるってことですね。

JKフリップフロップを使った5進カウンタのカルノー図
JKフリップフロップを使った5進カウンタの回路図
5進カウンタ回路図
JKフリップフロップを使った5進カウンタのシミュレーション波形
5進カウンタ シミュレーション

6進カウンタ

6進カウンタも、かわったところはありません。同様につくっていくだけです。

JKフリップフロップを使った6進カウンタの真理値表
JKフリップフロップを使った6進カウンタのカルノー図
JKフリップフロップを使った6進カウンタの回路図
6進カウンタ回路図
JKフリップフロップを使った6進カウンタのシミュレーション波形
6進カウンタ シミュレーション

7進カウンタ

7進カウンタもかわりないですが、論理式に OR がでてきました。

JKフリップフロップを使った7進カウンタの真理値表
JKフリップフロップを使った7進カウンタのカルノー図

たとえば J0=Q2+Q1 ですが、ド・モルガン変換すると J0=Q2⋅Q1 になります。つまり、OR ではなくて NAND を使えば、反転出力を使わない回路ができます。じっさいに回路を組むとき、どのゲートIC を使うかによってどちらを選ぶか決めますが、ここでは AND と OR に統一することにしました。

JKフリップフロップを使った7進カウンタの回路図
7進カウンタ回路図
JKフリップフロップを使った7進カウンタのシミュレーション波形
7進カウンタ シミュレーション

8進カウンタ

8進カウンタは 4進や 16進と同様に (2n)進カウンタで、これも基本的な回路です。

JKフリップフロップを使った8進カウンタの真理値表
JKフリップフロップを使った8進カウンタのカルノー図
JKフリップフロップを使った8進カウンタの回路図
8進カウンタ回路図
JKフリップフロップを使った8進カウンタのシミュレーション波形
8進カウンタ シミュレーション

9進カウンタ

9進カウンタから 4ビットになり、さらに JKフリップフロップが増えます。真理値表もさらに大きくなりますが、基本はこれまでと同じです。
カルノー図は don’t care が多いので、あまり難しくならないんですよね。

JKフリップフロップを使った9進カウンタの真理値表
JKフリップフロップを使った9進カウンタのカルノー図-1
JKフリップフロップを使った9進カウンタのカルノー図-2
JKフリップフロップを使った9進カウンタの回路図
9進カウンタ回路図
JKフリップフロップを使った9進カウンタのシミュレーション波形
9進カウンタ シミュレーション

10進カウンタ

10進カウンタは、BCDを出力するためによく使われるカウンタです。10進数を扱うにはかかせません。

JKフリップフロップを使った10進カウンタの真理値表
JKフリップフロップを使った10進カウンタのカルノー図-1
JKフリップフロップを使った10進カウンタのカルノー図-2
JKフリップフロップを使った10進カウンタの回路図
10進カウンタ回路図
JKフリップフロップを使った10進カウンタのシミュレーション波形
10進カウンタ シミュレーション

後記

ここまで、JKフリップフロップを使った 2進~10進カウンタ回路をつくってきました。

以前つくった Dフリップフロップを使ったカウンタ回路 (参考記事) と比較してみると、JKフリップフロップを使ったカウンタ回路のほうがゲート回路がとても簡単です。そのせいか、カウンタ回路をググると JKフリップフロップを使った回路が多くみられるようです。
でも、真理値表をみるとちょっと複雑なんですよね。わかってしまえばどうということはないのですが、頭痛くなっちゃう。どちらを選ぶかは、お好みで。

では、次は 11進~16進カウンタをつくっていきましょう。だんだん複雑になっていきますが、基本はすべて同じです。

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