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

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第267回]


●40MHz発振回路

前回からの続きです。
現在進行中のE−80プロジェクトに使用するCPUはZilogのZ8S180です。
Z8S180は日立の64180のセカンドソースです。
64180はもうとうの昔に生産中止になっていますがZilogはまだ生産を続けています。
64180は8MHzだったのですがE−80ボードに搭載するZ8S180は20MHzです。
Y様との打ち合わせにより、E−80ボードでは10MHz、4MHz、2MHzで動作させる仕様になっています。
その後の予期せぬ仕様変更によって、派生的に5MHzが加わりました。

さてしかし。
最高速20MHzのCPUを10MHzで動作させるというのはなんとももったいない気がいたします。
どうせなら20MHzで動かしてみたいもの。
もっともZ8S180(64180も同じ)は動作周波数の倍のクロックを必要とします。
ということは20MHzで動かすには40MHzのクロックが必要です。
それはいかにもやばい。
恥ずかしながらそんな高い周波数は扱ったことがありませぬ。
これはちょっと、どころかそうとうにこわい。
せめて小さな基板ならばともかく、今回の基板はメイン基板だけでも310mm×180mmもあります。
おまけに前回お見せしましたように追加配線でもうぐちゃぐちゃの状態です。
あの。
一口に40MHzといいますけれど。
どのくらいのものだかおわかりになります?
なんとHLの1クロックがたったの25ns!なのです。
ええ。
Hが12.5ns、Lが12.5nsです。

だいいち40MHzなどというクリスタルは入手できるのかどうか。
ネットで調べますとどうやら受信機用に使われているようですねえ。
しかし高い!
それに40MHzのクリスタルなんてHCMOSで発振できるかどうかわかりません。

さらに調べてみましたら、セラミック発振子に40MHzがあることがわかりました。
これなら安い。
しかもどうやら74HCU04でも発振できるらしい。
そこまでわかれば、やってみるしかないじゃありませんか。
誤動作するかもというのは承知の上であります。
やってみなけりゃわからない。
だめでもともとです。

さっそく入手して、やってしまいましたよ。

右下のジャノ目基板が40MHz発振回路です。

その部分の拡大写真です。

74HCU04の左下に見える茶色の物体が40MHzのセラミック発振子です。
ショートピンを使って40MHzと20MHzを切り換えています。

40MHzを追加した回路図です。

一段とすごいことになってきました。
大丈夫でしょうかねえ。

案ずるより産むが易しです。
ちゃんと発振してくれましたよ。
なかなかきれいな波形じゃありませんか。

これは回路図の右上の74HC00のpin6からの出力信号です。
74HC153と74HC00を経由してもまだ40MHzは健在でした。
信じられん!
もっともこれはデジタルというよりはもはやアナログに近い波形です。
わがZ8S180君は動いてくれますでしょうか?

なんとか。
動いているようです。
動いたとなりますと。
その実行速度を測ってみたいと思うのが人情であります。

なにかてごろなものはないものか。
おお。確か、あれがありました。

              ;
80AE F5       T1MS:PUSH AF		;CK=11....11+7+10+10+10=48/6(8microsec)
80AF 3E5F     	LD A,5F		;=99  CK=7
80B1 E5       T1MS2:PUSH HL;DUMMY CLK=11-----------------
80B2 E5       	PUSH HL;DUMMY CLK=11               |
80B3 E1       	POP HL;DUMMY CLK=10                |CK=60/6(10microsec)
80B4 E1       	POP HL;DUMMY CLK=10                |
80B5 00       	NOP ;CLK=4                         |
80B6 3D       	DEC A		;CK=4        |10x99=990microsec
80B7 C2B180   	JP NZ,T1MS2	;CK=10---
80BA F1       	POP AF		;CK=10
80BB C9       	RET		;CK=10 + CALL CK=10
              ;

これはND80ZV(ND80Z3.5)組立キットの付属CDROMに入っておりますサンプルプログラムMUSIC(電子オルゴールプログラム)の一部です。
ここにちょうど1msのサブルーチンがあります。
命令の実行速度を計算して1ms(正確には0.998ms)を作り出しています。
これはZ80(クロック6MHz)での値です。
これと同じルーチンをコールして、そのたびに82C55からHLを交互に出力してそれをオシロで観測すればZ8S180の実行速度が求められるはずです。

これが実行結果です。


CPUクロック20MHz(供給クロックは40MHz)のときの82C55からの出力波形です。
E−80ボードに搭載するRAM61C5128はアクセスタイム25nsです。
いまどきはこれでもそれほど高速ではありませんが、その昔のRAMと比較すれば優に10倍を超えています。
なので、メモリアクセス時はノンウェイトにしました。
82C55A−2も高速ですがさすがにノンウェイトはやばいのでI/Oアクセスには1ウェイトを入れてあります。
さてその結果なのですが、上の写真にあります通り、6MHzのZ80では1msだったものが0.26msになっています。
約4倍です。
Z8S180(64180)はZ80に比べて命令の実行クロック数がおおむね1クロック短縮されているとのことですが、確かに上の結果からはそのことが読み取れます。

さて。
最初は大丈夫かなあ、と少し心配だったのですけれど、その後も最高速20MHzのままでいろいろデバッグをしておりますが、特に誤動作することなく、しっかりと安定して動作しております。
本来の仕様の倍の周波数で安定動作するということになれば、これはもう製品の信頼性のなによりの証明でありますので、当分このままの状態でデバッグを続けるつもりです。

いや。
これはY様と打ち合わせした仕様ではありませんけれど。
いっそのこと。
隠し機能としてこの40MHzものっけてしまうというのも遊び心があって面白いかもしれません。
むむ。
そういうことにしてしまいましょう。

ワンボードマイコンでCP/Mを![第267回]
2012.12.13upload

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