2015.7.4
前へ
次へ
ホームページトップへ戻る

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第92回]


●CPUのレジスタ(11)

長々と書いてきましたコンデンサ蓄電型レジスタ回路もやっと終着点に到達しました。
とりあえずの最終回路です。

前回の回路図はもう一歩のところで問題が解決するところまできていました。

前回からの改良点は、LED表示回路をオープンドレインではなくてMOSコンプリメンタリ回路にして、それをフィードバック信号に利用するようにしたことと、その信号を利用してコンデンサを充電するところもコンプリメンタリ回路にして、充放電両用とするようにしたことです。
このようにすることで、入力値が1のときも0のときも安定して値を保持するようになりました。

なお出力段のスリーステートバッファ回路には2SA1015を使っていますが、LED表示兼フィードバック回路にはBS250を使っています。

スリーステート回路はデータを読み出すとき一瞬アクティブになるだけなので、2SA1015のベース抵抗を通じてコンデンサを充電してしまうほどの影響はないと考えられます。
しかもその読み出しはタイミングとしてはフィードバック回路が完全に機能しているときだと思いますから、51KΩを通じて充電する力よりも、回路左下の充放電回路の2N7000によって放電される力のほうが桁違いに大きくて問題にならないと考えられます。
ですからここに2SA1015を使うことは問題にはならないと考えました。

一方、もしもLED表示回路に2SA1015を使うと、ここは常時ONする回路ですから、コンデンサが0Vのときには、ベース抵抗を通じてコンデンサを充電する力が働きます。
こちらも充放電回路の2N7000がONになったときの力とは比べ物にならないのですが、こちらの場合には作動する順序に問題があると考えました。
コンデンサが0Vとの場合、LED表示回路に2SA1015が使われていた場合には、まずベース抵抗を通じてコンデンサを充電する向きに電流が流れ、そのあとで2SA1015がONになって、そして充放電回路の2N7000がONになるという流れになります。
もしもコンデンサの容量が小さい場合、値の保持に失敗してしまうのでは、との懸念を感じました。
そこでここだけはBS250を使うことにしました。
MOSFETは電圧動作ですから、ゲート抵抗によってコンデンサを充放電してしまうことはありません。

[第90回]でジャノ目基板を使った試作回路の写真をお見せしましたが、回路がかなり変わってしまいましたので、もう一枚新しく作り直しました。


新しく作った試作回路をテスト中の写真です。

NORとNOT回路もジャノ目基板に組んでしまえば、こんなにミノムシクリップだらけにならなくて済むのですが、せっかくHC02基板とHCU04基板があるのですから、この際それを利用しない手はありません。
それでこんなふうになってしまいました。
左がHC02で右上がHCU04です。
右側に半分見えているのはND80Z3.5の試作機です。
ND80Z3.5のバスコネクタに接続して、レジスタ試作基板を外部I/Oとしてデータの1と0を交互に書き込み、それを読み出すテストを行ないました。

もう少しズームアップしました。


データを保持している様子をオシロで観測しました。

上側(CH1)はWR_信号です。
下側(CH2)はLED表示回路の出力信号です。
交互に1と0を書き込んで、それが保持されていることがわかります。

時間軸を少し拡大しました。

WR_パルス幅は400nsです。
これはND80Z3.5のIOWR_のパルス幅です。
実際のランジスタ版MYCPU80では、これよりももっと幅のせまいパルスにするつもりですが、波形から見る限りでは、もっと狭いパルス幅にしても問題はなさそうです。

ところでお気付きでしょうか?
WR_信号によって1が書き込まれている期間は電圧値が4V程度になっていますが、WR_信号がOFFになると約5Vに上昇しています。
上のほうでお見せした回路図を見てください。
WR_による書き込み中は2SA1015のコレクタに入れたダイオードによる電圧降下が起きます。
WR_がOFFになるとすぐにフィードバック回路がONになってコンデンサが充電されるため、+5Vまで電圧が上昇します(シリコントランジスタのエミッタベース間電圧は普通のシリコンダイオードと同様に約0.8Vですが、エミッタコレクタ間電圧はほぼ0Vです)。

実は。
まだ書いていないことがあります。
とても重要な、肝心かなめのことなのです。
上のオシロの写真の書き込みテストなのですが、データ保持用のコンデンサの容量は一体どれほどだとお思いでしょうか?

なんと。
上のほうでお見せしましたジャノ目基板の写真のままでテストをしたのです。
もう一度お見せします。
こちらの写真です。

中ほどに見える丸ピンのシングルソケットがコンデンサを実装するためのソケットです。
でもこの写真ではコンデンサは実装されていません。
このままの状態でテストしたということは。

そうなのです。
回路のわずかな浮遊容量だけで安定動作しているのです!

自画自賛でありますけれど。
なんとも立派なものじゃありませんか。
これでこそ、ちょいと自慢もできようというものです。
ま。
実際の回路では、何もなしというわけにはいきませんから、56pFあたりを実装しようと思っています。

ところで。
上のほうで回路図をお見せしているところで、「とりあえずの」最終回路だと書きました。

実は。
これでやっとレジスタ回路が決りましたので、どのくらいの規模のものになるか、レジスタ1回路分の基板を作ってみようと思い、基板の設計に入りました。
回路図では便宜上NORとNOTのシンボルで表示してあるところもトランジスタに置き換えて考えていく中で、少しだけですが、トランジスタが削減できそうなところを見つけました。
回路図右上のスリーステート部分です。
下はその部分のトランジスタを省いた回路図です。

ジャノ目基板にも手を加えて、この図のように変更して動作テストを行い、正しく機能することを確認しました。
なおWR_回路もよく似ているところがありますので、こちらも同じように変更してテストしてみたのですが、WR_回路のほうは、もとの回路の通りでないと正しく書き込みができませんでした。
結局スリーステート回路の一部のみの削減にとどまってしまいましたので、わずかですがトランジスタを3個削減できました。
80個だったところが77個になりました。

トランジスタでCPUをつくろう![第92回]
2015.7.4upload

前へ
次へ
ホームページトップへ戻る