トップデジタル回路 > 同期式カウンタ―JKフリップフロップ使用(1)

同期式カウンタ―JKフリップフロップ使用(1)

1.JKフリップフロップによる同期式カウンタ

同期式カウンタとはカウンタを構成する全てのフリップフロップが同じクロックで動作するものである。 Dフリップフロップを使う方法とJKフリップフロップを使う方がよく知られている。 Dフリップフロップでは、D入力だけを使うのに対して、JKフリップフロップ(JK-FF)ではJ入力とK入力を使用する。 二つ使うため設計は複雑になる(設計に使う真理値表が2倍になる)が、自由度が高くなることから、一般には、 フリップフロップの周辺に使うゲートを少なくすることができる。

JK-FFの現在のJ,K,Qの値と次の時刻におけるQの値(Q'で表す)の関係は以下の表の通りである。

JK-FFの動作
JKQQ'
000 0
100 1
010 0
110 1
001 1
101 1
011 0
111 0

この表は次のように書き換えることもできる。x印はこの値には関係しないことを表す。

JK-FFの出力の変化に対するJとKの値
出力の変化JK
0 → 00x
0 → 11x
1 → 0x1
1 → 1x0

JK-FFによる同期式カウンタの設計では、J入力に対する回路とK入力に対する回路を独立して別々に作成する。 すなわち、設計方法の本質はD-FFの場合とまったく同じである。 D-FFによる同期式カウンタに比べると、設計に使用する真理値表はちょうど2倍になる。 上の表にあるように、0と考えて1と考えてもよい×印が多いため、自由度が高く、 このため、一般には、回路図が簡単になる。

2.JKフリップフロップによる3進同期式カウンタ

JKフリップフロップによる3進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる3進カウンタ真理値表
Q1Q2Q1'Q2' J1K1J2K2
0010 1x 0x
1001 x1 1x
0100 0x x1
11xx xx xx

左の列から説明する。最初のQ1、Q2は現在時刻でのJK-FFの出力の値を表す。 次のQ1'、Q2'は次の時刻におけるJK-FFの出力の値を表す。3進カウンタのため、 0の次が1、1の次が2、2の次が0である。3になることはないため、最後の行は x x とする。

次のJ1、K1は下位のJK-FFの入力を表す。 この欄に入る値がこの設計法の要となる。 まず、 J1、K1はQ1とQ1'に着目する。

次のJ2、K2は上位のJK-FFの入力を表す。上と同じように Q1とQ1'に着目して、J2、K2の列を埋めると、表が完成する。

回路設計は各列独立して行う。例えば、J1は真理値表を次のように捉える。

Q1Q2J1
00 1
10 x
01 0
11 x

この場合、2行目の x を 1 と捉えて

 J1Q2 
とする。 もちろん、カルノー図を使って求めてもよい。

同様に

 J2=Q1 
となる。

K1、K2は、いずれも全ての行を1と考えることができるので、

 K1=1、K2=1 
である。 2行ずつ選ぶと
 K1Q2、
 K2Q1 
となる。 この場合も回路上余分なANDゲートやORゲートなどは要らない。 このときの回路図およびタイムチャート(画像)を下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

3.JKフリップフロップによる4進同期式カウンタ

JKフリップフロップによる4進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる4進カウンタ真理値表
Q1Q2Q1'Q2' J1K1J2K2
0010 1x 0x
1001 x1 1x
0111 1x x0
1100 x1 x1

J1、K1は、いずれも全ての行を1と考えることができるので、

 J1=1、K1=1 
である。

J2、K2は、いずれも2行目と3行目を選ぶことができるので、

 J2=Q1、K2=Q1 
となる。 このときの回路図およびタイムチャート(画像)を下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

4.JKフリップフロップによる5進同期式カウンタ

JKフリップフロップによる5進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる5進カウンタ真理値表
Q1Q2Q3 Q1'Q2'Q3' J1K1 J2K2 J3K3
000100 1x0 x0x
100010 x11 x0x
010110 1xx 00x
110001 x1x 11x
001000 0x0 xx1
101xxx xxx xxx
011xxx xxx xxx
111xxx xxx xxx

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q3
 K1=1またはQ1または  Q3
 J2=Q1
 K2=Q1
 J3=Q1・Q2
 K3=1またはQ1または  Q2

K1、K3の表し方は3通りある。 ここでは、回路図が見やすいものを選んだ。 回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

5.JKフリップフロップによる6進同期式カウンタ

JKフリップフロップによる6進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる6進カウンタ真理値表
Q1Q2Q3 Q1'Q2'Q3' J1K1 J2K2 J3K3
000100 1x0 x0x
100010 x11 x0x
010110 1xx 00x
110001 x1x 11x
001101 1x0 xx0
101000 x10 xx1
011xxx xxx xxx
111xxx xxx xxx

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q1または1
 K1=Q1または1
 J2=Q1Q3
 K2=Q1
 J3=Q1・Q2
 K3Q1

J1、K1の表し方は2通りある。 ここでは、回路図が見やすいものを選んだ。 回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 5, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

6.JKフリップフロップによる7進同期式カウンタ

JKフリップフロップによる7進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる7進カウンタ真理値表
Q1Q2Q3 Q1'Q2'Q3' J1K1 J2K2 J3K3
000100 1x0 x0x
100010 x11 x0x
010110 1xx 00x
110001 x1x 11x
001101 1x0 xx0
101011 x11 xx0
011000 0xx 1x1
111xxx xxx xxx

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q2Q3
 K1=Q1または1
 J2=Q1
 K2=Q1+Q3
 J3=Q1・Q2
 K3=Q2

K1の表し方は2通りある。 ここでは、回路図が見やすいものを選んだ。 回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 5, 6, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

7.JKフリップフロップによる8進同期式カウンタ

JKフリップフロップによる8進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる8進カウンタ真理値表
Q1Q2Q3 Q1'Q2'Q3' J1K1 J2K2 J3K3
000100 1x0 x0x
100010 x11 x0x
010110 1xx 00x
110001 x1x 11x
001101 1x0 xx0
101011 x11 xx0
011111 1xx 0x0
111000 x1x 1x1

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q1または1
 K1=Q1または1
 J2=Q1
 K2=Q1
 J3=Q1・Q2
 K3=Q1・Q2

J1、K1の表し方は2通りある。 ここでは、回路図が見やすいものを選んだ。 回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

8.JKフリップフロップによる9進同期式カウンタ

JKフリップフロップによる9進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる9進カウンタ真理値表
Q1Q2Q3Q4 Q1'Q2'Q3'Q4' J1K1 J2K2 J3K3 J4K4
0000 1000 1x0x0x0x
1000 0100 x11x0x0x
0100 1100 1xx00x0x
1100 0010 x1x11x0x
0010 1010 1x0xx00x
1010 0110 x11xx00x
0110 1110 1xx0x00x
1110 0001 x1x1x11x
0001 0000 0x0x0xx1
1001 xxxx xxxxxxxx
0101 xxxx xxxxxxxx
1101 xxxx xxxxxxxx
0011 xxxx xxxxxxxx
1011 xxxx xxxxxxxx
0111 xxxx xxxxxxxx
1111 xxxx xxxxxxxx

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q4
 K1=Q1または1
 J2=Q1
 K2=Q1
 J3=Q1・Q2
 K3=Q1・Q2
 J4=Q1・Q2・Q3
 K4Q1,Q2,Q3,Q4, or 1

K1、K4の表し方は2通り以上ある。 ここでは、回路図が見やすいものを選んだ。 回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

9.JKフリップフロップによる10進同期式カウンタ

JKフリップフロップによる10進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる10進カウンタ真理値表
Q1Q2Q3Q4 Q1'Q2'Q3'Q4' J1K1 J2K2 J3K3 J4K4
0000 1000 1x0x0x0x
1000 0100 x11x0x0x
0100 1100 1xx00x0x
1100 0010 x1x11x0x
0010 1010 1x0xx00x
1010 0110 x11xx00x
0110 1110 1xx0x00x
1110 0001 x1x1x11x
0001 1001 1x0x0xx0
1001 0000 x10x0xx1
0101 xxxx xxxxxxxx
1101 xxxx xxxxxxxx
0011 xxxx xxxxxxxx
1011 xxxx xxxxxxxx
0111 xxxx xxxxxxxx
1111 xxxx xxxxxxxx

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q1 or 1
 K1=Q1 or 1
 J2=Q1Q4
 K2=Q1
 J3=Q1・Q2
 K3=Q1・Q2
 J4=Q1・Q2・Q3
 K4=Q1

J1、K1の表し方は2通りある。 ここでは、回路図が見やすいものを選んだ。 回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

10.JKフリップフロップによる11進同期式カウンタ

JKフリップフロップによる11進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる11進カウンタ真理値表
Q1Q2Q3Q4 Q1'Q2'Q3'Q4' J1K1 J2K2 J3K3 J4K4
0000 1000 1x0x0x0x
1000 0100 x11x0x0x
0100 1100 1xx00x0x
1100 0010 x1x11x0x
0010 1010 1x0xx00x
1010 0110 x11xx00x
0110 1110 1xx0x00x
1110 0001 x1x1x11x
0001 1001 1x0x0xx0
1001 0101 x11x0xx0
0101 0000 0xx10xx1
1101 xxxx xxxxxxxx
0011 xxxx xxxxxxxx
1011 xxxx xxxxxxxx
0111 xxxx xxxxxxxx
1111 xxxx xxxxxxxx

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q2Q4
 K1=Q1 or 1
 J2=Q1
 K2=Q1+Q4
 J3=Q1・Q2
 K3=Q1・Q2
 J4=Q1・Q2・Q3
 K4=Q2

回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。

11.JKフリップフロップによる12進同期式カウンタ

JKフリップフロップによる12進同期式カウンタを設計する。最初に、次のような真理値表を作成する。

JK-FFによる12進カウンタ真理値表
Q1Q2Q3Q4 Q1'Q2'Q3'Q4' J1K1 J2K2 J3K3 J4K4
0000 1000 1x0x0x0x
1000 0100 x11x0x0x
0100 1100 1xx00x0x
1100 0010 x1x11x0x
0010 1010 1x0xx00x
1010 0110 x11xx00x
0110 1110 1xx0x00x
1110 0001 x1x1x11x
0001 1001 1x0x0xx0
1001 0101 x11x0xx0
0101 1101 1xx00xx0
1101 0000 x1x10xx1
0011 xxxx xxxxxxxx
1011 xxxx xxxxxxxx
0111 xxxx xxxxxxxx
1111 xxxx xxxxxxxx

カルノー図法による論理式の簡単化は別のページにまとめているのでここでは省略する。 結果を以下に示す。

 J1Q1 or 1
 K1=Q1 or 1
 J2=Q1
 K2=Q1
 J3=Q1・Q2Q4
 K3=Q1・Q2
 J4=Q1・Q2・Q3
 K4=Q1・Q2

回路図およびタイムチャートの画像コピーを下に示す。

タイムチャートからカウンタの出力が 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, ... となっていることを確認できる。

JavaScriptによるシミュレーションを下に示す。