kairo-gokko (33) Dフリップフロップ 2



前回作った回路をさらに改造します。

  • 前回の回路を左右に2つ並べる
    • 左側=前段 / 右側=後段 とする
  • 後段の切り替え器部分を消し、代わりに前段の出力をつなげる
  • 前段と後段の門番回路をつなげる
    • 前段の方は NOT で反転する

すると、このような回路になります。

f:id:sonota88:20200405081301p:plain

見た目がますます複雑になってきましたが、大丈夫です。 前回の回路の延長なので、怖くないです。


この時点で相楽製作所さんの

記憶回路(フリップフロップ) | コンピュータの仕組み | 研究開発 | 相楽製作所

に載っている「図56.フリップフロップ回路20」と同じものができあがります。


左下のスイッチ(クロック入力に相当)だけ切り替えてみます。

f:id:sonota88:20200405082347g:plain

前段・後段の門番がお互いに逆の状態になるように切り替わります。 切り替え器の動きと似てますね。


後段の門番が有効になっている(通過できない)状態で左上の入力を切り替え。

f:id:sonota88:20200405083423g:plain

入力の切り替えがすぐに前段の RS フリップフロップ部分に伝わるが、 門番に阻まれて後段には伝わらない、という動きになっています。


前段の門番が有効になっている(通過できない)状態で左上の入力を切り替え。

f:id:sonota88:20200405083645g:plain

この場合は前段の門番に阻まれるので、左上の切り替え器の状態が変わるだけ。


で、前回と同様、クロック入力が L から H に切り替わるときの挙動がポイントです。

f:id:sonota88:20200405085201g:plain

  • クロック入力が L の状態で左上の入力を切り替えても、まだ右上の出力に反映されない
  • クロック入力が H に切り替わったときに、前段の RSフリップフロップで保持されていた情報が後段の RSフリップフロップに(反転して)コピーされる

左上の入力と、右上の出力を示すランプに注目すると、

  • クロック入力が L の状態で左上の入力を H にしても、右上の出力はまだ L のまま
  • 次にクロック入力を H にすると、右上の出力まで伝わる

出力への伝達が、クロック入力が H になるまで待たされている感じでしょうか。

逆の変化の場合も同様です。

  • クロック入力が L の状態で左上の入力を L にしても、まだ右上の出力は H のまま
  • 次にクロック入力を H にすると、右上の出力まで伝わる

あまり上手いたとえではないですが、私は水門が2つある運河みたいなイメージで考えてみたりしてました。

f:id:sonota88:20200405093508p:plain

  • 午前中は前(左側)の門を開けとくよ
  • 右側に行きたかったら午前中に真ん中の区画に入っといてね
  • 1回入ってまた戻ってもいいよ
    • 1回と言わず何回でも出入りしていいよ
    • ただし正午までにはどうするか決めてね

f:id:sonota88:20200405093540p:plain

  • 正午になったら前の門を閉じて後ろ(右側)の門を開けるよ
  • 真ん中の区画に船が来てたら右側にコピーするよ
    • 真ん中の区画に船がいなかったら「船がいない状態」をコピーするよ
    • このあたりでたとえが苦しくなってきます ;-)
  • 正午に門を開閉して船のコピーが終わったら、 午後はもうやることがないよ
  • 午前0時になったら後ろの門を閉じて前の門を開けるよ

水門の開け閉めの周期がクロックの周期に当たるので、 約 0.000012 Hz (1 / (60 * 60 * 24))ですね :D


そんなこんなで、とにかく、これで Dフリップフロップが手に入りました!!


以下のリンク先で実際に動かせます。

https://sonota88.github.io/kairo-gokko/pages/33/index.html

※ 音量小さめにしていますが音が出ます。
スマホでは全体が表示できないかもしれません。PCブラウザなどで見てください。