196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

【意外と簡単】フリップフロップ 理解の仕方

最初に断っておきますが、今回はこちらのブログさんからほぼ引用しております。
d.hatena.ne.jp




フリップフロップにすごいひっかかって悩んだ思い出であります。。しかも、結局今まで分からずに放置しておりました。

f:id:thinline196:20180118002911p:plain

他の論理回路って結構頑張って考えたら多少複雑でも理解できるじゃないですか、、?けど、フリップフロップ回路は全然分からなかったんです。


理解できなかった部分

どこで理解できなかったのかなーって考えたら、出力が帰ってきている部分と、2入力あるところかなと思いました。
と、ここで一番上のサイトさんから突破口を戴き、まずこの回路の役割と動きから理解して行くことに。

フリップフロップ回路は物事を記憶する

まぁ、これはフリップフロップを勉強するときに一緒に得る知識ですが、笑 
回路で記憶するとなると、ずっと同じ値がそこに流れていれば、それが記憶されていることになると思うのですが、サイトさんはこれを輪っかで例えました。円状の回路に値が流れれば同じ値がずっとぐるぐるしますよね。この状態を作るのが目的だそうです。



ここから、輪っかに手を加えます。

1. OR回路を追加する。 ーーこれに1を流せば輪っかの中は必ず1になります。(ONの状態になる)
2. AND回路を追加する。 ーーこれに0を流せば輪っかの中は必ず0になる。(OFFの状態になる)


これで、フリップは完成しています。図で表すと下のようになります。これなら輪っかの中でONかOFFを記憶できますね。

そして残りは、
3. 上の二つをNAND回路で書き換える。ーー回路はNANDで構築されている。


これで最初の乗せた普通のフリップフロップ回路になるわけです。NANDだから見難かったのかもしれません。

f:id:thinline196:20180118005940j:plain
フリップフロップ簡易版





一番上の図で説明しますが、
(S, R)を入力として用い(SはSet, RはResetの意味),Qは記憶させていたい値と思ってください。一般に

(1, 0) Qに1を保持させる。
(0, 1) Qに0を保持させる。(1を忘れさせる)
(0, 0) 今のQの状態を保つ。
(1, 1) 禁止。不安定になるのでだめ。

のような入力で使用します。



覚え方

ここからは勝手なこじつけかもしれないので、間違っていたらスルーで。

1.まず、初めの入力時は0が流れていると考える。
こうすることで、最初に出力結果が出ていないのにNANDとか無理じゃん!ってならない。

2. SとR平行に考えず、ゆっくりSから考える。
Sの先のNANDを突破したら自ずとRの方のNANDに結果が反映されるので、この方がわかりやすい!


最後に

覚え方の部分は割と自分流なので、あまりあてにしないように!けど、理解の掴みには良いかもしれない。
フリップフロップを自分で発見したかった。。



以上。