トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第89回]
●CPUのレジスタ(8)
前回は、その前にお見せした回路図にCS_が必要であることに気が付きましたので、その部分を追加して最終的なCPUレジスタの回路図とました。
当初はトランジスタ数を大幅に削減しようと意気込んでいたのですが、結局のところそれほどの削減には至らず、最終的なトランジスタ数は8ビットのレジスタ1回路あたり128個になってしまいました。
ま、それもやむを得ないことと思い、とりあえずレジスタ回路部分だけの基板を作ることにしようと考えて、具体的な基板設計にとりかかろうとしたのでありますが。
ちょっとまてよ。
それって、無理じゃないの?
このCPUレジスタ回路が余りに非現実的であることにやっと気が付きました。
そうなんですよね。
だから、トランジスタ数をなんとか削減しなければ、と躍起になっていたのでした。
前にも書いたことなのですが、74HC版MYCPU80の場合、8ビットレジスタを18個も使っています。
トランジスタ版MYCPU80でもそれと同じ数のレジスタを使うと仮定しますと、レジスタ回路のトランジスタ数は128×18=2304個にもなってしまいます。
レジスタだけで2300個!
2300個のトランジスタをひたすらハンダ付けして組み立てて、それでレジスタだけにしかならないなんて、そんな組立てキットはありませんでしょう。
やっぱりここはなんとかしませんと。
それでこの2日間というもの、そこをなんとかしようと苦闘しておりました。
しかし。
窮すれば通ず。
やっぱりとことん考えてみるものです。
いい案がひらめきました。
うまくいけばトランジスタ数を劇的に削減できます。
あ。
実はそのアイデアはこの連載が始まった当初からあったものです。
しかし、実現できませんでした。
それが、回路の検証が進んでいくにつれて、基本的な回路の考えというものがだんだんと頭の中に蓄積していきまして、難問を解く鍵となりました。
アイデアといいますのは、ダイナミックRAMの原理です。
RSフリップフロップはロジック回路の動作原理を利用して値を保持します。
スタティックRAMといわれるものも基本的にはその原理を利用しています。
ところがダイナミックRAMはそれとはまったく別の原理を利用しています。
値をコンデンサに蓄えるという考え方です。
デジタルというよりもアナログ的な考え方です。
確かADコンバータもサンプルホールド回路ではコンデンサに電圧値を蓄えるという方法を使っていたように記憶しています。
で。
これから何回かに分けまして、トランジスタの大幅削減に至ったコンデンサ蓄電型レジスタ回路について書いていくことにいたします。
大幅削減などとちょっと大げさな表現なのですが、それではそのレジスタ回路というのは、一体どれほどのトランジスタ数かといいますと、前回と同じようにCS_、WR_、OE_の回路まで含めまして、8ビットのレジスタ回路1回路あたり、なんと64トランジスタ(!)で実現できました。
前回の最終案のちょうど半分のトランジスタ数です。
もっともそれでもそれの18レジスタ分ということになりますと64×18=1152個ですからハンパない数なのですが、大幅に減ったということで、ここは忍耐で乗り切るべきところでありましょう。
まず最初に、基本的な考え方を回路にしますと、下の図のようになります。
もっともこのままでは値を保持することはできません。
Dinはラッチされていませんから、その値の変化につれて、入力回路のトランジスタはH側かL側のどちらかが常にONになります。
これではコンデンサに値を蓄えることはできません。
なんとかして入力回路のトランジスタを遮断する工夫が必要になります。
説明の途中ですが、本日は時間がなくなってしまいました。
この続きは次回にすることにいたします。
それまでに皆様方もどうすればコンデンサに値を蓄えることができるか、考えてみてくださいませ。
トランジスタでCPUをつくろう![第89回]
2015.6.27upload
前へ
次へ
ホームページトップへ戻る