・T型フリップフロップ(略称T-FF)ってのは、入力がひとつ(T)と出力が2つ(Qとそれを反転した/Q)あって、Tの立ち上がりごとに出力が反転するというフリップフロップ回路(1ビットメモリ)。TはToggleのTね。
・↑回路図記号はこんなの。(これは左下のクロックの立ち上がりでTを見て、HIGHだったらQが反転、LOWだったら何もしないというもの)
・これがさあ。Wikipediaのフリップフロップの項目をはじめ、どこを見てもたいていRS-FF、JK-FF、D-FFは回路図が載ってるのにT-FFだけは「JK型フリップフロップのJとKをHighに固定し、クロックを入力とすれば実現できる」としか書いてなくて、どーも納得いかないわけよ。他のみたいにNANDの組み合わせで作れないの?? とずっと思ってた。
・しかしそれを自力で考え出すなんてこともできず、しかし先日ついにですわ。ぼーっとネットサーフィンしてたらその回路図を見かけましてな。
・こんな感じらしい。はて⋯⋯コンデンサは入力をパルスにする(コンデンサの充電中はマイナス側に電流が漏れ*1、満充電状態になると漏れが止まるので、コンデンサを直列に⋯回路図の上では電気の流れを切断するような形で繋げば「一瞬HIGHになってすぐLOWになる」という仕組みを作れる)ために使ってるのはわかるんだけど、この抵抗は何だ。これがあることで逆流しないとかそんなやつ? だとしたらNANDのICの入力抵抗より大きい値にするようなことが必要なのか? よくわかんねーな。
・そんな感じで、いちいち「こことここがHIGHってことはここがLOWで、ええとー⋯」ってやるのがめんどくさいのでまず組んでみた。けどうまく動かにゃい。定数が悪いのかなあ。仕方ないから考えるか、こことここがHIGHってことはここがLOWで、ええとー⋯
・いや、変遷がわからん。ぱっと見発振するように思えるんだけど、試した限りはそんなことなかった。何なの。
・そんでまあ、諦めて再びT-FFに思いを馳せながらぼーっといろんな回路図を見てたら、ちょっとまて、クロックつきのJK-FFはこんな感じなんだってさ。
・これの、JとKをHIGHに固定すればCLKの入力でトグルするということは、左にある2つのNANDは3入力だけど、JとKを取り除いて2入力にすればいいってことだよね? 確かにJKフリップフロップは(J,K)が(1,0)ならQがHIGH、(0,1)ならQがLOW、(0,0)なら何もせず、(1,1)ならQが反転(/Qは常にNOT Q)という動作だから、ほんとにその通りの動きをするはずだが⋯?
・いや、っていうかこれ、初めてこのあたりの文章とかを読んだときに真っ先に試してみたはずだよなあ。それにWikipediaに載ってるJK-FFの回路図はそのまんま組んでも正しくうごかねーぞみたいな文言もどこかで見たような⋯。あ、これWikipediaに載ってるやつと等価なんですけどね。
・「こことここがHIGHってことはここがLOWで、ええとー⋯」をやってみても結局ぐるぐる回ってよーわからん。組んでみようじゃないの。
・動かにゃい。
・最後の手段として、ChatGPT先生に聞いてみることにした。
・あーーなるほどね。フリップフロップって必ず出力と反転出力があるから、それをいい感じに帰還させればそれだけでトグルが作れるんだ。何かスイッチの仕組みを噛ませばRSラッチでもいけるんじゃ?
・つまりこういう⋯⋯右の2個のNANDが負論理RSラッチで、どうせNANDゲート使うときは74HC132の4個セットなのでちょうど余るNAND2個を「TのHighをトリガーとして、Qを出力するNANDに/Qを、/Qを出力するNANDにQを入力する(ラッチが負論理なのでこれらは反転する)」というスイッチに見立てて作ってみたが、これさっきのJK-FFの回路図と等価じゃねーか。帰還する経路が外側から内側になってるだけで、ちょうど左の2つのNANDからJとKを取り除いてそれぞれ2入力のものに取り替えた形。接続せずに交差する点が少ないからこっちの方が見やすいと思うんだけどな。
・というわけで、簡単に組めるT-FFが欲しいと前から思ってるんだけど、ずっとこんな調子でさ。コンピュータはNANDで動いてるんだし、やっぱNANDで組みたいじゃんっていうお気持ちである。
・ちなみにNOT2個とコンデンサでT-FF的なものを実現する方法もあることは知っているんだが、よく考えたらNOTってNAND1個で表現できるんだよな⋯。たぶんつづく。