トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第123回]
●[HC373]でまた問題が
とりあえずダイオードを8本も追加して、やっと問題が解決したと思い、半日かけて基板アートワークを変更したのでしたが、念のためにということで、さらなる動作テストをしたところ、またもや新たな問題が発生してしまいました。
今までは[HC373]の全ビットにオール1(FF)およびオール0(00)を書き込むテストしかしていませんでした。
01とかFEとかも書いてみればよかったのですが、多分大丈夫だろうということで、試していませんでした。
大丈夫ではありませんでした。
01を書き込んだところ、なんとFFになってしまいました。
01だけではなくて、どれかの1ビットを1にするだけで全ビットが1になってしまいました。
もっとはっきり言いますと、ビットが0になるのは全ビット0(つまり00)を書き込んだときだけで、それ以外は全てFFになってしまいました。
とんでもないことがおきていました。
やっぱりテストは手を抜いてはいけません。
どうしてこんなばかなことが…。
回路図を眺めていて、やっと気が付きました。
前回のトラブルはミラー容量が原因ではなかったのでした。
原因は2N7000の寄生ダイオードでした。
MOSFETの寄生ダイオードについては[第4回]で書いています。
自分で書いておいて、まさかこんなところではまってしまうとは思ってもみませんでした。
[HC373]の1ビット分の回路図は[第121回]でもお見せしましたが、今回はそこに寄生ダイオードを描き加えました。
図の右端の円で囲んだ2N7000が前回ソースにダイオードを追加したトランジスタです。
対策前は寄生トランジスタによって、たとえばデータバスのどこかのビットが1で(テストのためDoutはND80Z3.5のデータバスに接続されています)、こちらのビットが0のときに、図の寄生ダイオードによってデータバスがショートしてしまいます。
それがND80Z3.5が暴走してしまった本当の原因でした。
そしてそれはたまたま本当の原因はわかっていないまま、この2N7000のソースにダイオードを(下向きに)追加したことで、寄生ダイオードの影響を排除することができました。
ところが同じ問題は他の箇所でもおきていました。
上の回路図の中央でもうひとつ円で囲んだ2N7000です。
ここはCS_とWR_がともにアクティブになるとき以外はソースがハイインピーダンスになるはずだったのですが、やはり寄生ダイオードによって、ほかのビットのコンデンサが充電されていて、このビットのコンデンサが放電されていると、そちらのコンデンサからこちらの回路に電流が流れてしまいます。
実はこちらの回路のコンデンサが放電されているときは、フィードバックを構成する左下の2N7000がONになっているため、他のビットから流入する電流は全て最終的にはGNDに流れてしまいます。
ですからここにもそれを防ぐためのダイオードが必要だったのでした。
説明の途中ですが時間がなくなってしまいました。
続きは次回にいたします。
トランジスタでCPUをつくろう![第123回]
2015.9.3upload
前へ
次へ
ホームページトップへ戻る