ディジタル回路の設計では、
フリップフロップを用いた順序回路の解析や設計が重要なテーマとなります。
特に、JKフリップフロップを用いた問題は、
多くの大学院入試や資格試験で出題される定番の問題です。
この記事では、
名古屋工業大学の2023年度大学院入試問題を例に取り、
JKフリップフロップを用いた判定機問題の解法を解説します。
ディジタル回路の問題では、
以下の流れで解くことが基本となります。
1.真理値表の作成 (入出力の関係を整理する)
↓
2.カルノー図の作成 (論理式の視覚的な整理)
↓
3.論理式の簡単化 (設計をシンプルにする)
本記事では、これらの手順を具体的に示しながら、
実際の問題をどのように解いていくのかを詳しく説明します。
JKフリップフロップを理解し、応用できるようになるための一助となれば幸いです。
例題








引用:名古屋工業大学2023年度大学院工学研究科(博士前期課程)
専用試験問題 (情報工学系プログラム)
全体の流れ
設問では、
2つの入力IA、IBがあり、どちらが早く押されたかの判定機を考えます。
出力にはOA、OBがあり、初期状態はIA、IB、OA、OB=0となっています。
IAが先に押されて1となった場合 : OA=1,OB=0となり以降これを保持
IBが先に押されて1となった場合 : OA=0,OB=1となり以降これを保持
IA,IBが同時におされて1になった場合:OA=1,OB=1となり以降これを保持
となる判定機を作成することを考えます。
この判定機をTAという関数を作成したのちに適切なJKフリップフロップを設定します。
(1)~(3)はTAを作成するための問題。
(1)真理値表の作成
(2)加法標準形での表示
(3)カルノー図による簡単化
(4)は作成したTAを用いてJKフリップフロップ回路を構築する問題。
(1)真理値表の作成
[問題]


[解答]

[解説]
(1)は判定機の機能の説明から、入力に対する適切な出力を考えます。
その入力と出力の対応関係を真理値表にまとめます。
入力がIA、IB、QA、QBの4種類であるため、24で16通りの出力を考えます。
ある時刻の出力をQA、QBとしたとき、次の出力をQAn、QBnとすると設問にあります。
また、OA、OBとQA、QBの信号は等しいので、
この判断機の性能上、Qは先に入力が1となった入力を表します。
QA=0,QB=0だった場合は、入力IA、IBのどちらも1が入力されていない。
QA=1,QB=0だった場合は、入力IAで先に1が入力された。
QA=0,QB=1だった場合は、入力IBで先に1が入力された。
QA=1,QB=1だった場合は、入力IA、IBで同時に1が入力された。
ということを表します。
この仕組みを真理値表にまとめます。
例えば、
QA=0,QB=0の時にIA=1、IB=0が入力された場合
以前に1が入力されていない状態でIAが押されたということを表すので、
次のQA,QBはQA=1,QB=0となります。
これは、QAn=1、QBn=0ということです。
他にも、
QA=0,QB=1の時にIA=1、IB=1が入力された場合
以前に1がIBで入力された状態で、IAIBで同時に押されたということを表します。
しかし、QA=0,QB=1の状態からQが変化することはないので、
次のQA,QBはQA=0,QB=1となります。
これは、QAn=0、QBn=1ということです。
QA=1,QB=1の時にIA=1、IB=0が入力された場合
以前に1がIA,IBで同時に入力された状態で、IAが押されたということを表します。
しかし、QA=1,QB=1の状態からQが変化することはないので、
次のQA,QBはQA=1,QB=1となります。
これは、QAn=1、QBn=1ということです。
このような関係をすべての入力に対しての出力を表でまとめたものが真理値表になります。

(2)TAを加法標準形で表す
[問題]

[解答]

[解説]
今回着目すべき点はQAとQAnが反転している場所です。
TAの出力はQAとQAnが反転している場所だけ1を
それ以外の入力に対しては0を出力する論理関数となっています。

さきほどの真理値表を確認してみると、
QAとQAnが反転しているのは2か所のみです。
この2行をTAの出力1にするとします。
[加法標準形の導出方法]
(1)真理値表で出力が1の行を考える
(2)(1)の各行で入力が1の変数はそのまま、
入力が0の変数は否定して最小項を作る
(3)得られた最小項で論理和をとる
加法標準形の導出方法にのっとり、論理関数を表します。
QA,QB,IA,IB=0,0,1,0
QA,QB,IA,IB=0,0,1,1
の時に出力が1となるとしているので、各行の最小項を作成します。
QA,QB,IA,IB=0,0,1,0 →

QA,QB,IA,IB=0,0,1,1 →

得られた最小項で論理和をとるとTAは

(3)カルノー図による簡単化
[問題]


[解答]
カルノー図

論理関数

[解説]
カルノー図による簡単化はこちらの記事をご参照ください。
サイト:「工業大学生ももやまのうさぎ塾」
記事 :うさぎでもわかる論理回路 カルノー図編
リンク:https://www.momoyama-usagi.com/entry/info-karnaugh-map#i-2
さきほどの真理値表を用いてカルノー図による簡単化を行います。
カルノー図を確認してみると、QA=0,QB=0,IA,=1は固定で決まっていますが、
IBは0と1のどちらでも良いようです。
つまり、考慮しなくて良いということになります。
したがって論理関数TAは

と簡単化することができます。

(4)TAを用いてJKフリップフロップ回路を構築
[問題]



[解答]
JA=1、KA=0、CKA=TA
(※JA=1、KA=1、CKA=TAも正解)
[解説]
設問に
「IAの変化をCKのエッジとして用い、CKが0から1に変化した瞬間に各フリップフロップ
の出力Qを変化させるように設計する」
と記載されているので、IAを含むTAがCKAとして適切であることが分かります。

現状の論理回路

残るはJAとKAですが、
JAとKAはそれぞれ0か1が指定できるので、JKフリップフロップの入出力特性を参考にJAとKAのすべての組み合わせに対する出力を考えます。
JA=0、KA=0のとき
QAの初期状態は0であり、IA,IBのどちらかに1が入力さるまではその状態が維持されます。
IAで1が入力されると、入出力特性より
QAn=QAであるので、QAn=QA=0となります。
OA=QAnであるので、IAに1が入力された場合OAは0を出力しています。
したがって、JA=0、KA=0は適切ではありません。
JA=0、KA=1のとき
QAの初期状態は0であり、IA,IBのどちらかに1が入力さるまではその状態が維持されます。
IAで1が入力されると、入出力特性よりQAnに0が出力されます。
OA=QAnであるので、IAに1が入力された場合OAは0を出力しています。
したがって、JA=0、KA=1は適切ではありません。
JA=1、KA=0のとき
QAの初期状態は0であり、IA,IBのどちらかに1が入力さるまではその状態が維持されます。
IAで1が入力されると、入出力特性よりQAnに1が出力されます。
OA=QAnであるので、IAに1が入力された場合OAは1を出力しています。
したがって、JA=1、KA=0は適切であると考えられます。
JA=1、KA=1のとき
QAの初期状態は0であり、IA,IBのどちらかに1が入力さるまではその状態が維持されます。
IAで1が入力されると、入出力特性より
QAn=¬QAであるので、QAn=¬QA=1となります。
OA=QAnであるので、IAに1が入力された場合OAは1を出力しています。
したがって、JA=1、KA=1は適切であると考えられます。
論理回路の例

コメント