基本情報技術者 2014年 秋期 午後 問02
JKフリップフロップに関する次の記述を読んで、設問1~3に答えよ。
JKフリップフロップは、二つの信号入力端子JとK、一つのクロック信号入力端子CLK、及び二つの信号出力端子Qとをもつ回路である。図1にJKフリップフロップの記号を示す。

入出力される信号の値は高、低の二つの電圧レベルのいずれかである。クロック信号の値は、周期的に高と低を繰り返す。Qの値は、の値が高であれば低、低であれば高となる。
各入出力端子の信号の値を当該端子記号で表し、信号の値が高の場合を論理値の1、低の場合を論理値の0として表記する。また、信号の値が低から高に変化することを0→1、高から低に変化することを1→0と表記する。
CLKの立ち下がり(1→0)時に、その時点でのJ、K、Qの値に基づき、その後のQの値が決定される。この様子を図2に示す。CLKの立ち下がり時刻をt1、その後のQの値が決定した時刻をt2として、時刻t1でのJ、K、Qの値(J1, K1, Q1と表記)と時刻t2のQの値(Q2と表記)の関係を表1の真理値表に示す。ここで、時刻t1とt2の時間間隔は極めて短く、CLKの1周期に比べても十分に短いものとする。
設問1:
問題文を見る 次の記述中のに入れる正しい答えを、解答群の中から選べ。
図3に示すとおり、JとQ、Kとをそれぞれ同一の値の信号とする回路(端子間を結線する)にクロック信号(CLK)を入力したとき、CLKの立ち下がりでQの値はa。ここで、Qの初期値は0とする。

解答群
ア:0のままである
イ:0→1と変化する
ウ:0→1、1→0と変化する
エ:0→1、1→0の変化を繰り返す
模範解答
a:ア
解説
解答の導き方
図3では、出力のを入力のへ、出力のを入力のへ戻しています。このように出力を入力へ戻す接続を、フィードバックといいます。
問題文では、とは互いに反対の値になると説明されています。初期値はなので、です。したがって、CLKの立ち下がり時の入力と状態は次のとおりです。
JKフリップフロップは、CLK(clock:動作のタイミングを示す信号)の立ち下がり、つまり値が1から0に変わるときに、入力と現在のの値から次のを決めます。
が0のままなら、フィードバックされるも0のままです。また、は1なので、も1のままです。そのため、次の立ち下がりでも同じく、、となり、は変化しません。これが繰り返されるので、該当する選択肢は「ア:0のままである」です。
誤りやすいポイント
- に接続されているのはではなくです。初期値がなら、です。
- JKフリップフロップは、どの入力でも値が反転するわけではありません。表1では、、のときに現在のと反対の値になります。この問題のとはそれぞれ0と1です。
- 値が決まるのは、CLKが立ち下がるときです。CLKが立ち上がるときの値で考えないようにします。
FAQ
Q: なぜならなのですか?
A: 問題文にあるとおり、とは互いに反対の値だからです。が0なら、は1になります。
A: 問題文にあるとおり、とは互いに反対の値だからです。が0なら、は1になります。
Q: が一度0のままになった後も、同じ状態が続くのはなぜですか?
A: が続くと、接続先のも0のままです。また、なのでも1のままです。この組合せでは表1により次のも0となるため、状態が変わりません。
A: が続くと、接続先のも0のままです。また、なのでも1のままです。この組合せでは表1により次のも0となるため、状態が変わりません。
関連キーワード: JKフリップフロップ、真理値表、クロック信号、立ち下がり、フィードバック
設問2:
問題文を見る模範解答
b:ア、c:エ
解説
解答の導き方
この設問では、真理値表の各行を、からへの変化ごとにまとめ直します。
フリップフロップは、入力に応じて0または1の状態を保持する回路です。問題文では、CLK(clock:回路が動作するタイミングを知らせる信号)の立ち下がり時の入力と、その後の出力を考えています。つまり、、、を見て、次の出力がどうなるかを調べます。
表2の各行は、左から入力、入力の条件を示しています。「任意」は、0でも1でもよいという意味です。
どちらの行でもは0です。一方、は0の場合と1の場合があります。したがって、となる条件は「が0、が任意」です。表2の左から、の順に当てはめると、bには「0、任意」の組合せが入ります。解答群ではアです。
次に、からがとなる行を探します。該当するのは次の2行です。
どちらの行でもは0です。一方、は0の場合と1の場合があります。したがって、となる条件は「が任意、が0」です。解答群ではエです。
表2の残りの行も、表1から同じように確認できます。ではが1、が任意となり、ではが1、が任意となります。これらも、表2でとの順に条件を並べることの確認になります。
誤りやすいポイント
- 表2の左側は、左から、の順です。「0、任意」を逆に読み、「任意、0」としないように注意します。
- とを混同しないようにします。は変化前、は変化後の値です。
- 「任意」は「どちらでもよい」という意味です。表1で0と1の両方が現れる入力を、任意とまとめます。
- ある入力の条件を決めるときは、対応する行の値を一つだけ見るのではなく、同じ変化になる行をすべて比べます。
FAQ
Q: なぜ表1のすべての行を見比べるのですか?
A: 表2は、表1の複数の行を同じ出力変化ごとにまとめた表だからです。複数の行で共通する入力条件を見つけます。
A: 表2は、表1の複数の行を同じ出力変化ごとにまとめた表だからです。複数の行で共通する入力条件を見つけます。
Q: 「任意」は入力が不明という意味ですか?
A: いいえ。入力が不明なのではなく、0でも1でも同じ出力変化になるという意味です。
A: いいえ。入力が不明なのではなく、0でも1でも同じ出力変化になるという意味です。
Q: CLKの立ち下がりとは何ですか?
A: CLKの値が1から0へ変わることです。問題文では、このタイミングでの入力値を基に、その後の出力が決まります。
A: CLKの値が1から0へ変わることです。問題文では、このタイミングでの入力値を基に、その後の出力が決まります。
関連キーワード: JKフリップフロップ、真理値表、クロック信号、立ち下がり、論理値
設問3:
問題文を見る JKフリップフロップ1個を使って、図4のように動作する2進カウンタを構成する。ここで、2進カウンタとは、CLKの1周期ごとにQの値が変化するものである。次の記述中のに入れる正しい答えを、解答群の中から選べ。

図4の例では、Qの値は、1回目のCLKの立ち下がりで0→1、2回目のCLKの立ち下がりで1→0に変化し、以降もCLKの立ち下がりごとにこれを繰り返す。
表2から、1回目のCLKの立ち下がりのときのJ、K、Qの値の組合せと、2回目のCLKの立ち下がりのときのJ、K、Qの値の組合せが、表3のようであればよいことが分かる。

例えば、表3の任意の値を0、任意の値を1にするためには、をJの入力に、Kの入力の値を常に1にすればよい。(以下、(J, K)=(, 1)と表記する)この構成例を図5に示す。

同様に、表3の任意と任意を組み合わせると、他の構成案として次の三つがある。
2進カウンタ構成案1 (J, K)=(d)
2進カウンタ構成案2 (J, K)=(e)
2進カウンタ構成案3 (J, K)=(f)
d~fに関する解答群
ア:1, 1
イ:1, Q
ウ:1,
エ:Q, 1
オ:Q,
カ:, Q
模範解答
d:ア、e:イ、f:カ(順不同)
解説
解答の導き方
この問題では、CLKの立ち下がりのたびにQが反転するよう、JとKをどう接続するかを考えます。JKフリップフロップは、CLK(回路の動作タイミングを合わせる信号)の立ち下がりで、入力J、Kと現在のQに応じて出力Qを変える回路です。
図4では、1回目のCLKの立ち下がりでQが0から1に、2回目で1から0に変化します。したがって、1回目は現在のQが0、2回目は現在のQが1です。
まず表1を見ます。1回目のように現在のQが0で、次のQを1にしたい場合、Jは1でなければなりません。Kは0でも1でも、次のQは1になります。これが表3の「Jが1、Kが任意」という条件です。
次に、2回目のように現在のQが1で、次のQを0にしたい場合、Kは1でなければなりません。Jは0でも1でも、次のQは0になります。これが表3の「Jが任意、Kが1」という条件です。
つまり、JとKの接続は、次の条件を満たす必要があります。
解答群の各候補を、この条件に照らして確認します。なお、はQと反対の値です。Qが0ならは1、Qが1ならは0です。
この結果から、条件を両方満たす候補はア、イ、カです。
問題文にある(J, K)=(, 1)は、すでに示されている構成例です。たとえばQが0のときはJが1になり、Qが1のときはKが1になります。この構成例とは別の候補として残るのが、ア、イ、カです。したがって、d~fにはこの3つを順不同で当てはめます。
誤りやすいポイント
- 「任意」は「どの値でもよい」という意味です。JやKを常に0にする、という意味ではありません。
- 1回目と2回目では、現在のQが異なります。1回目はQが0、2回目はQが1として、それぞれの入力条件を調べます。
- Qとを取り違えないようにします。はQの反対の値です。
- 片方のタイミングだけ条件を満たしても不十分です。Qが0のときとQが1のときの両方で、表3の条件を満たす必要があります。
- 問題文ではCLKの立ち下がりでQが決まります。CLKの立ち上がり時の変化を考える必要はありません。
FAQ
Q: 「任意」の入力は、回路の中でどう決めればよいですか?
A: 条件を満たす範囲なら、0でも1でも構いません。たとえばQが0のときはJが1ならよいため、Kはどちらの値でも次のQに影響しません。
A: 条件を満たす範囲なら、0でも1でも構いません。たとえばQが0のときはJが1ならよいため、Kはどちらの値でも次のQに影響しません。
Q: なぜ(J, K)=(1, Q)も使えるのですか?
A: Qが0なら(J, K)は(1, 0)となり、1回目の条件を満たします。Qが1なら(1, 1)となり、2回目の条件も満たします。
A: Qが0なら(J, K)は(1, 0)となり、1回目の条件を満たします。Qが1なら(1, 1)となり、2回目の条件も満たします。
Q: 図5の構成例があるのに、なぜほかの候補を選ぶのですか?
A: 図5は、すでに示されている構成例です。設問で求めているのは、それ以外の構成案なので、同じ条件を満たす別の候補を選びます。
A: 図5は、すでに示されている構成例です。設問で求めているのは、それ以外の構成案なので、同じ条件を満たす別の候補を選びます。
関連キーワード: JKフリップフロップ、真理値表、論理値、クロック信号、フィードバック、2進カウンタ






