前回作った回路をさらに改造します。
- 前回の回路を左右に2つ並べる
- 左側=前段 / 右側=後段 とする
- 後段の切り替え器部分を消し、代わりに前段の出力をつなげる
- 前段と後段の門番回路をつなげる
- 前段の方は NOT で反転する
すると、このような回路になります。
見た目がますます複雑になってきましたが、大丈夫です。 前回の回路の延長なので、怖くないです。
この時点で相楽製作所さんの
記憶回路(フリップフロップ) | コンピュータの仕組み | 研究開発 | 相楽製作所
に載っている「図56.フリップフロップ回路20」と同じものができあがります。
左下のスイッチ(クロック入力に相当)だけ切り替えてみます。
前段・後段の門番がお互いに逆の状態になるように切り替わります。 切り替え器の動きと似てますね。
後段の門番が有効になっている(通過できない)状態で左上の入力を切り替え。
入力の切り替えがすぐに前段の RS フリップフロップ部分に伝わるが、 門番に阻まれて後段には伝わらない、という動きになっています。
前段の門番が有効になっている(通過できない)状態で左上の入力を切り替え。
この場合は前段の門番に阻まれるので、左上の切り替え器の状態が変わるだけ。
で、前回と同様、クロック入力が L から H に切り替わるときの挙動がポイントです。
- クロック入力が L の状態で左上の入力を切り替えても、まだ右上の出力に反映されない
- クロック入力が H に切り替わったときに、前段の RSフリップフロップで保持されていた情報が後段の RSフリップフロップに(反転して)コピーされる
左上の入力と、右上の出力を示すランプに注目すると、
- クロック入力が L の状態で左上の入力を H にしても、右上の出力はまだ L のまま
- 次にクロック入力を H にすると、右上の出力まで伝わる
出力への伝達が、クロック入力が H になるまで待たされている感じでしょうか。
逆の変化の場合も同様です。
- クロック入力が L の状態で左上の入力を L にしても、まだ右上の出力は H のまま
- 次にクロック入力を H にすると、右上の出力まで伝わる
あまり上手いたとえではないですが、私は水門が2つある運河みたいなイメージで考えてみたりしてました。
- 午前中は前(左側)の門を開けとくよ
- 右側に行きたかったら午前中に真ん中の区画に入っといてね
- 1回入ってまた戻ってもいいよ
- 1回と言わず何回でも出入りしていいよ
- ただし正午までにはどうするか決めてね
- 正午になったら前の門を閉じて後ろ(右側)の門を開けるよ
- 真ん中の区画に船が来てたら右側にコピーするよ
- 真ん中の区画に船がいなかったら「船がいない状態」をコピーするよ
- このあたりでたとえが苦しくなってきます ;-)
- 正午に門を開閉して船のコピーが終わったら、 午後はもうやることがないよ
- 午前0時になったら後ろの門を閉じて前の門を開けるよ
水門の開け閉めの周期がクロックの周期に当たるので、
約 0.000012 Hz (1 / (60 * 60 * 24)
)ですね :D
そんなこんなで、とにかく、これで Dフリップフロップが手に入りました!!
以下のリンク先で実際に動かせます。
https://sonota88.github.io/kairo-gokko/pages/33/index.html
※ 音量小さめにしていますが音が出ます。
※ スマホでは全体が表示できないかもしれません。PCブラウザなどで見てください。