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

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


[第390回]



●4MHzでJMP命令が実行できるようになりました

前回書きました4MHzではPCWRLが出力されない原因について考えました。
ロジアナのサンプリングクロックは100MHz(サンプリングタイムは10ns)と超高速なのですが、それでも4MHzでの出力波形を正確に捉えるのには不十分です。
前回のロジアナの波形だけではちょっと判断が難しいのですが、どうやら4MHzのときにはPROBE03(前回の回路図で[5]のNAND回路からの出力)のパルス幅が2MHz、1MHzのときに比べて狭いようです。
4MHzではそれを受けて出力されるPCWRH(PROBE04)の出力幅は20nsほどになっています。
それに続く[1−4]のインバータの遅延時間は10nsぐらいと考えられるためインバータから出力されるPCWRLのパルス幅はおそらく10ns以下になってしまっていると考えられます。
それに対して2MHz、1MHzの場合にはPCWRHが30nsでPCWRLは20nsあります。
この値もぎりぎりの値ですが、ともかくPCWRHとPCWRLがともに出力されるために2MHz、1MHzではJMP命令が正しく実行されるのに対して、4MHzではPCWRLが出力されないか十分なパルス幅にならないため、JMP命令が正しく実行されないと考えられます。

さて、するとその理由は?
ということなのですが、理屈はよくわかりません。
この回路(前回の回路図を参照)は[1]と[2]のインバータの間に置いたRC回路(およびインバータの遅延時間)によって幅の狭いパルスを発生させています。
Rは1KΩですがCは実装していません。
この回路を決定する前に行なったテストでCがなくてもそこそこのパルス幅が得られたためにCについてはとりあえず実装しないこととしました。
クロックが1MHz、2MHzではそれでよかったのですが、4MHzではそれではCが不足するのではないかと考えました。
本当のところはよくはわかりませんが周波数が低いと容量の小さいコンデンサでは通り抜けることができませんが、周波数が高くなるとコンデンサ容量が小さくても楽に通り抜けてしまうことと何か関係があるのかも知れません。
考えていても始まりません。
思いついたらとにかくやってみることです。
未実装だったPC0(A0)回路のCに56pFのセラミックコンデンサを実装してみました。
RC回路はPC0(アドレスA0)の回路のほかにPC1(A1)〜PC3(A3)にもありますが、A0回路はMCLKそのものの立ち上がり、立ち下りのときにパルスを発生させるのに対して、A1〜A3回路ではその下位のアドレス信号の立ち上がり、立ち下りのときにパルスを発生させます。
A0〜A3の出力はMCLKに比べて低い周波数になりますから4MHzの場合でも今までと同じでそこには1KΩだけでCは実装しないままにしました。
下はPC0回路のCに56pFのセラミックコンデンサを取り付けた写真です。

左側の○で囲んだところに56pFのセラミックコンデンサを実装しました。
その右側のPC1(A1)〜PC3(A3)の回路にはコンデンサは実装していません。

56pFのセラミックコンデンサを実装したところを拡大しました。

56pFのセラミックコンデンサの左下の抵抗が1KΩです。

そのようにしてみたところ4MHzでもJMP命令が正しく実行されるようになりました。
たかが56pFのコンデンサ1個ですがその威力は絶大です。

前回と同じようにしてカメレオンロジアナで信号を観測してみました。

前回と同じで上から4MHz、2MHz、1MHzです。
PROBE03〜PROBE05の信号幅が前回よりも大きくなりました。
4MHzでもPROBE05(PCWRL)が出力されるようになりました。

今回はPCWR信号が問題になりましたが同じパルス回路を使ってCKdnL、CKdnH、CKupL、CKupHの各信号も出力しています。
参考までに各信号のパルス幅も確認してみました。

PROBE06がCKdnL、PROBE07がCKdnH、PROBE08がCKupL、PROBE09がCKupHです。
1MHzはCKdnL、CKdnHのみの表示ですが、1MHzについては問題はありませんでしょう。
4MHzと2MHzのCKdnL、CLdnHはちょっと幅が狭いのが気になりますが今のところ問題なく動作していますのでこのまま様子を見ることにします。
もし誤動作するようなことがあればCを100pFにすることで多分解決できると思います。

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

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