入力に1が3回連続で与えられたとき、1を出力する論理回路をSRフリップフロップを用いて作成したい。
問1:本問で与えた条件における状態遷移表を作成せよ。なお、初期状態では0が入力されているとし、状態数は最小とすること。SRフリップフロップを複数使用する場合は、下位側のbitの添え字$S_i R_i$を小さくせよ。状態変数は$y_i$とする。
問2:作成した状態遷移表に基づいて、SRフリップフロップ回路を作成せよ。入力変数$S_i,R_i$への入力の前段にAND回路を用いて良い。

SRフリップフロップとは
二入力(S:セット、R:リセット)を用いて、出力0,1を切り替える順序回路になります。一度S=1を入力すると、リセットR=1を入力するまで出力1を立て続けます。(ラッチ)
なお、S=1とR=1を同時に入力することは禁止です。万が一入力した際は、内部回路の構成(NAND or NOR)次第で出力がバラツキます。論理回路設計する際、一般的に、内部回路はブラックボックスであることが多いため、使用することは控えましょう。
回路上のシンボルとしては、問で与えた図のようになっています。また、内部回路の構成例はNAND、NORごとに下記のようになっています。

論理回路設計の世界でも、仕様の分かりやすさからよく使用されている回路素子になります。是非とも覚えておきましょう。
院試でのSRフリップフロップ問題
表題のように、決まった入力系列、または真理値表を与えてそれを状態遷移表に落として回路にする問題が頻出です。Dフリップフロップ、JKフリップフロップで問われる場合もありますが、それは過去の記事で紹介しています。SRフリップフロップでも表せるようになれば、順序回路において基本的に穴が無くなります。
解き方も同じです。各フリップフロップ特有のルールに基づいて真理値表を立て、カルノー図にて論理式を立てる。その結果を回路に図示することに尽きます。
(余談)Tフリップフロップも順序回路素子として存在しますが、院試問題としてはあまり見かけたことがありません。真理値表だけ覚えておいて、いざ問われた時はそのルールに基づいて解いていけば良いです。
解答例
問1 状態遷移表の作成
3回1が連続するときに出力1を立てるため、下記の3状態が必要。一つのSRフリップフロップで表せる状態は0,1の2通りであるため、3状態表すためには2つのSRフリップフロップが必要。
- 一度も1が立っていない状態 $(y_2,y_1)=(0,0)$
- 一度だけ1が立った状態 $(y_2,y_1)=(0,1)$
- 二度以上1が立った状態 $(y_2,y_1)=(1,0)$
※二度1が立った状態のとき、入力1を与えると、出力1になります。三度1が立った状態ですが、次の周期でもう一度1が立つと、これも出力1を立てます。二度1が立った状態と同じ動作になります。よって、二度以上1が立った状態にまとめることができます。

問2 順序回路の作成
問1で求めた状態遷移表に基づき、各SRフリップフロップに入力する$S_i,R_i$のカルノー図、論理式を作成します。
- $S_2,R_2$のカルノー図、論理式

\begin{cases}S_2=xy_1 \\ R_2=\bar{x}\end{cases}
- $S_1,R_1$のカルノー図、論理式

\begin{cases}S_1=x\bar{y_1}\bar{y_2} \\ R_1=y_1\end{cases}
上記を論理回路として表すと、下記のようになる。

最後に
本記事では省略しますが、本問はJKフリップフロップ、Dフリップフロップを用いても実現することができます。余裕があればやってみましょう。



