言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

フリップ?フロップ!

実家に電子ブロックの説明書があったので、フリップフロップについて復習。この電子ブロックって、簡単に実験できて良いのだけど、結局回路の意味が分からずまったく勉強にならなかったなあ。で、今度はこの回路図を元に、こないだ本を買ったCircuitMaker でフリップフロップのシミュレーションをしてみることにした。CircuitMaker の学生版は無料で使えます。 http://www.microcode.com/downloads/student.htm

しかし僕の使い方が悪いのか、電子ブロックのようには行きませんでした。どうやら電球がデジタル回路のモードしか使えないらしく、逆にデジタルモードではトランジスタが使えないという事になってました。仕方が無いので妥協して、http://laputa.cs.shinshu-u.ac.jp/~yizawa/logic2/chap2/index.html の通りに NOR 素子で組んでみるとまあまあ上手く動きました。でもやっぱりトランジスタや抵抗があったほうが良いなあ。

このフリップフロップと言うのはとても不思議な仕組みで、スイッチを押すとその状態をあとまで覚えて置くようになっています。何が不思議かというと、最初チカチカした状態では(本物の回路ではチカチカしない)いわばシーソーがどちらにも倒れない状態になっていて、シーソーが片方に倒れると勝手にはもう片方に動かないように、フリップフロップもその状態を保とうとするのです。

これを実現するには、入力に出力を入れるフィードバックというのを使います。これは電子回路にしか出来ない芸当で、プログラムでそのまんまやると無限ループになってしまう。Squeak で電子回路をシミュレートしようと思った時に面倒なのはこういう部分をどう作るかです。

CircuitMaker でつくったやつはこちら http://languagegame.org:8080/propella/uploads/47/rs-flipflop.ckt