トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第412回]
●バイナリカウンタ回路の改良(2)
前回の続きです。
下は前回もお見せした改良後の回路です。
まずはこの図を使って説明をします。
そもそもはなぜ当初はRS回路が2段必要と考えたのか、というところからです。
考えをシンプルにするためR14やR 10KΩについては考えないことにします。
CLRもないことにします。
T7、T8、T9、T10がRS回路です。
T1、T2は入力GATEです。
もしGATEがONでGATE入力が固定しているならばQはGATE入力と同相でQ_はその逆になります。
カウンタ回路ではGATEはCLKによってコントロールされ、「次のクロックのとき」にQ_がGATEに入力されることでQが反転します。
それが連続することでカウンタの動作になります。
この回路ではCLKがHのときにGATEがONになります。
CLKがLのときにはGATEはOFFになります。
基本的な回路ではGATE入力によってQ、Q_出力が確定した「直後」にQ_がGATE入力になるので、するとQ、Q_がすぐに反転してしまいます。
すると反転したQ_がまたGATE入力になるのでQ、Q_がまたまた反転してしまいます。
それがGATEがONの期間中(CLK=Hの期間中)続きます。
それじゃ駄目じゃん、ということでRS回路を2段にしたのでした。
ここからが突然ひらめいてしまったことについての説明です。
なかなかひとつの概念にとらわれるとそれが絶対的なことでそのほかのことは考えられないと思ってしまいがちです。
ずっとスピードアップについてのみとらわれてきました。
確かに入出力信号の立ち上がり立ち下りはシャープであるのが望ましいのですが。
それは全ての場合に通ずることなのか?
そこでひらめいたのです。
もしも、もしも。
GATEに入力するQ_がうんと遅くてGATEがOFF(つまりCLKがL)になってからGATEに届いたならば。
GATEはOFFなのですからQもQ_もそれまでの状態を維持しているのでは?
そしてCLKが次にHになった途端にQ_がGATEに入力されQとQ_が反転するはず(しかしそこで反転したQ_はすぐにはGATEには届かず、またうんと遅延して次にCLK=Lになってから届きます)。
おお。
それならば。
RS回路は一段だけでいけるではないか。
しかしそれは非現実的であります。
カウンタ回路の場合CLKには下位ビットの出力を入力します。
たとえビット0のクロックが高速だったとしても上位にいくにつれて低速(低周波数)にならざるを得ません。
当然のこととしてCLKのH期間もうんと長くなります。
それに対応できるほどの遅延など現実にはありえません。
と考えたのはおそらくほんの一瞬だったでありましょう。
ここは、あれだ。
それはもう瞬間的にひらめきました。
CLKのHパルス幅を狭くすればよいではないか。
その回路が上の回路の下側の部分です。
入力がCKINで出力がCKV、CKGです。
CKINは下位ビットのQ出力です。
ちょっと見には何をやっているのかよくわからないかもしれません。
その部分の前の部分を取り出して下に示します。
インバータ(04)x1とNAND(00)x1をつないだだけの回路です。
これをTTLで組むと出力はつねにHになります。
インバータ出力が遅いとヒゲが出ます。
それをうんと遅くしたのがこの回路です。
こういう「器用な回路」はTTLゲートではちょいと難しいでしょう。
トランジスタロジックならではの回路だと思います。
インバータのC1815のベース抵抗は200KΩでスピードアップコンデンサはありません。
入力がLからHになったときだけインバータの出力は遅延します。
するとNAND出力に狭いLパルスが出ます。
ここがLの期間だけCKVがLになりCKGはHになります(その期間だけGATEがONになります)。
さきほどの回路図でQ_とGATE入力の間には10KΩが入っています。
GATE入力をその期間+α遅延させるためです。
GATEがONの期間は短ければ短いほどよいかというとそういうわけにはいきません。
内部でQ_からQの入力につながっているラインは逆にGATEがONの期間中にQ回路の入力に間に合わなければなりません。
当初はここに入っているR14は10KΩだったのですがそこを4.7KΩにしてあります。
この抵抗値とGATE入力ラインの10KΩとNAND出力のLパルス幅は「適当」です。
いずれなるべく安全側になるように調整するつもりです。
今回の改良回路は実際にテスト回路を組んで動作テストを行ないました。
次回はそのときに撮った写真をお見せすることにいたします。
トランジスタでCPUをつくろう![第412回]
2024.2.5upload
前へ
次へ
ホームページトップへ戻る