トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第90回]
●CPUのレジスタ(9)
前回はコンデンサ蓄電型レジスタ回路を考案し、我ながら画期的なアイデアということで皆様にその一端をご披露申し上げたのでありますが、その後に動作テストを進めていきましたところ、やっぱりうまくないところが出てきてしまいました。
なかなか思うようにはいかないものです。
それでここ3日ほどなんとかしなければとあれこれ工夫を重ねて苦闘しておりました。
本日になりましてから、やっとこれならば、というところまでこぎつけたのでありますが。
あれこれ対策をしておりますうちに結局トランジスタ数が増えてしまいました。
当初は、8ビットのレジスタ回路1回路あたり、64トランジスタでいけるはずだったのですが、最終的にはちょっと増えて80個になってしまいました。
それの18レジスタ分では80×18=1440個になります。
ま。
多いことは確かに多いのですけれど。
ここはもうこれ以上はどうしようもないようです。
それでも当初は雑に数えても8ビットレジスタ1回路あたり160個、正確に数えればおそらく180個くらいになるところでしたから([第81回]参照)、それからすれば半数以下に削減できたことになります。
それで。
具体的な回路の説明なのですが、考え方の基本は前回お見せしました下の回路図です。
入力信号の電圧をそのままコンデンサに蓄えようというわけです(この回路図ではインバータを通しますから、入力電圧の+−を反転したものがコンデンサに蓄えられる電圧値になります)。
もっとも前回書きましたようにこのままでは値を保持することはできません。
値を書き込むときだけコンデンサ回路に接続し、それ以外のときは入力回路とコンデンサ回路を切り離してしまう工夫が必要になります。
というところまでで前回は終りました。
今回はそこからの続きです。
実は上の回路図では以前にお見せした回路図から意図的に一部を隠しています。
それはOE_回路(スリーステートバッファ回路)です。
この回路を見ていて、入力回路とコンデンサ回路を切り離す方法を思いつきました。
それと同じ方法が使えないだろうか?
そこに着目して考えたのが下の回路です。
理屈としてはこれで良いはずなのですが、実際にジャノ目基板に組んで試してみると全く使い物になりませんでした。
こういう少し込み入った回路になってきますとブレッドボードでは配線のチェックが困難です。
面倒なようでもやはりジャノ目基板に実装するのが一番です。
中央の丸ピンはコンデンサ実装用です。
ここにいろいろな容量のコンデンサを実装してテストをするためのものです。
この基板を使って、どこがいけないのかあれこれ試行錯誤するなかで色々なことが見えてきました。
2SA1015のコレクタに入っているダイオードは逆流防止のためです。
バイポーラトランジスタはエミッタ→ベースの向きだけではなくて、コレクタ→ベースの向きでも電流が流れます。
このダイオードがないとDinがLのときにコンデンサが2SA1015のコレクタを通じて放電してしまいます。
より実際の回路動作に近づけてテストするためにND80Z3.5のバスラインに接続して、とりあえずは擬似的に外部I/Oとしてテストをしてみたのですが、すると接続したデータバス信号がコンデンサのラインに乗ってしまい、コンデンサがあっという間に放電してしまいました。
データライトの時以外は入力回路とコンデンサ回路を切り離すようにできたのはよかったのですが、すると結果としてコンデンサ回路がハイインピーダンスになってしまうため、データバスの信号の影響をもろに受けてしまいます。
そこでさらなる工夫が必要になってきました。
説明の途中ですが、本日は時間がなくなってしまいました。
この続きは次回にいたします。
トランジスタでCPUをつくろう![第90回]
2015.6.30upload
前へ
次へ
ホームページトップへ戻る