以前にZ80高速版を手に入れておいたので、SBCZ80を製作してみました。せっかく製作するので、ついでに下記の改造をしてみました。
①DRAM容量アップ(48KB)
②クロック高速化(8MHz)
③シリアル速度自動設定(9.6kbps~115kbps)
それぞれの内容については、順次紹介していく予定ですが、例のごとく必要な基板の箔カットを行った後、配布されているROMイメージを使って基本動作確認を行ったところ、立ち上げメッセージが出てきませんでした。
CPU周りの波形解析すると、CPUリセット後、SIOの初期設定が行われていましたが、RTSがアクティブになりませんでした。プログラムとしては、正常な動作をしているため、回路図、CPU・SIOデーターシートを確認しましたが、特に問題は発見できませんでした。
各部の波形を確認するとCPUのRESET信号が徐々に電圧が上がっていくのが気になり、再度データシートを確認すると、RESET入力は、基本的なTTLレベルの入力信号となっていました。リセット回路は、CPUリとSIOに接続されているので、徐々に立ち上がる入力信号の場合、動作が閾値電圧に左右されることが予想されます。
SBCZ80のリセット回路は、時定数470mSのCRで構成されているので、仮に10mVの閾値電圧の差があると、簡易計算で0.01V/5V*470mS=0.94mS程度の遅延差が発生します。このことは、SIOの閾値電圧が、CPUの閾値電圧に比べ10mV高いと、CPUがSIOを約1mS以内にSIOの初期設定をすると、SIOはリセット中で、初期設定ができないことになります。
確認のため、C15を0.01uFに交換すると、正常にSIOが動き始めました。CPUとSIOはZilog製ですが、たまたま相性が悪かったようです。
相性が悪いCPUとSIOの対策案:
①相性が良いCPUとSIOに交換する(SIOのリセット閾値電圧が、CPUのそれに比べ低い)
②C15を小容量に変更する(0.01uF程度、但し電源SWでのリセットに問題が残ることがある)
③モステックの資料のようにCR回路の後にシュミットトリガー回路を使用する
④CPUリセット後、十分待ってからSIOの初期設定を行う
もし、SBCZ80が動かない場合、②でリセットボタンを押して切り分けをしてはいかがでしょうか。恒久的には、③が良いかもしれません。
下記は、モステックの資料からの転載です。
今回の改造では、PIC12F822で、CPUクロック、CPUリセット、NMI信号、SIOクロックを発生させることにしました。
(再クロール更新:2022/12/22)