復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第322回]
●82C55A−2のRD対策
[第313回]で、82C55A−2のRD信号のアドレスセットアップタイム(tAR)が最低でも20nsは必要で、ところがZ8S18020をクロック20MHzで動かすと、その値が25nsしかないため、かなり厳しい、と書きました。
実際に[第316回]でCPUクロック20MHzのときの82C55A−2へのRD波形を観測してみましたら、CSからの遅れ時間はわずか10nsしかありませんでした。
これもまた仕方の無いことでありまして、そのあたりの回路は下のようになっております。
左下のIORDが82C55A−2のRD端子に入ります。
それに対してCS端子には、右上のF8−FB信号が入ります。
RDが74HC32ゲート一段なのに対し、CSは74HC00ゲート1段+74HC139を2段通して供給されます。
これではアドレス信号に対してIORQやRDが余裕をもってアクティブになったとしても、どうしてもタイミングがきつくなってしまう道理です。
そのような状態でも、その後に一昼夜をかけた連続テストを2回行なった結果、一回もエラーは発生しませんでした。
これはしかしたまたまといいますか、幸いにもといいますか、エラー無く動いてくれただけで、82C55A−2のスペックから外れていることには間違いありません。
たまたま82C55A−2に余裕があっただけで、カタログ値からすればエラーがおきても当たり前のところです。
しかし、まあ、余程いい加減なメーカーでもない限り、規格ぎりぎりの製品を供給することはまず有り得ないことだと思います。
このあたりのところが某国の製品になりますとちょっと信用ができないところがあったりするのでありますが。
「規格内ならぎりぎりでも問題ないね。えっ?規格外があった?それ、交換します。それでノープロブレムね」
うむむ。
そーいう問題ではないと思うのでありますが。
ま。それはともかくとしまして。
まともなメーカーの製品ならば品質管理も徹底しているはずで、おそらく規格に対して何割かの余裕をもたせているはずだと思います。
そこに注目してマニアはたとえばパソコンのオーバークロックに挑戦したりします。
そういうことでありますから、20MHzでの82C55A−2へのアクセステストも、おそらくは82C55A−2の余裕のおかげで、幸い事無きを得たわけでありますが、そうしますとそれをもって、そのまま20MHzでも動作OKとすることにはちょいと心苦しいものを感じます。
もともとY様との当初の打ち合わせで、CPUクロックは10MHzまで、ということで合意した経緯があります。
それを20MHzで動かしてみましたのは、単に私の好奇心および技術的探究心からでありました。
そこでY様には、「スペックを満足していませんから、20MHzはあくまで隠し機能で、動作保証をするものではない、との但し書きを取扱説明書に明記してください」と申し上げて、了承していただきました。
ああ。しかし…。
Y様にはそのように申し上げたのですけれど。
それにもともと10MHz動作ができればそれでよいのでありますけれど、しかし、できるものでしたならば、何とかしたい、と思うのが人情でありまして…。
やっぱり、せっかくここまでやってきたのですから。
なんとか20MHzをしっかりクリアしておきたいものであります。
とにかく、メモリについては20MHzでも問題はありませんでしょう。
82C55A−2については、WR信号は20MHzでは25ns不足しますが、ここは1WAITクロックを挿入すればクリアできます。
問題はCS信号の立下りからRD信号の立下りまでの時間が不足していることです。
これはWAITクロックを挿入してもクリアできません。
ここを何とか最低20ns確保できればよいのですが…。
うう。
何とかしたい…。
おお。
何とかなるじゃあありませんか。
どうしてこんな簡単なことに気がつかなかったのか。
歳を取って、ヤキが回ってしまっておりますですねえ。
RD信号を遅延させればよいだけのことでありました。
さっそく下図のようにいたしました。
74HC00を使ったことに特別の意味はありません。
たまたま74HC00のゲートが2つ余っていたからです。
上記回路は設計変更中の試作基板に組み込んだ回路です(実際の動作テストには74HC04を使いました)。
オシロで信号波形を観測してみました。
CH1が「IORD」でCH2が「82C55RD」です。
実は最初はコンデンサとして56pFを使ったところ50nsの遅延時間になりました。
それではちょいと大きいだろうということで、22pFに交換したところ、上の画像の結果になりました。
だいたい20〜25nsくらいの遅延時間が得られています。
このくらいの値になりますと、ゲート自体の遅れや、浮遊容量なども関係してきますから、なかなか計算通りにはいきません。
カットアンドトライで適当な値を決めることになりますが、多分このあたりの値でよいのでは、と思います。
これにて一件落着、です。
ワンボードマイコンでCP/Mを![第322回]
2013.2.18upload
前へ
次へ
ホームページトップへ戻る