2021年4月19日月曜日

Z280のクロック

 Z280のクロックは少し複雑です。チップからは、XTALI, XTALO, CLK の3本もクロック関係のピンが出ています。

Z280は内部にクロックオシレータを持っており、水晶振動子をXTALIとXTALOにつなぐか、XTALIに外部からクロック信号を入れると動作することになっています。内蔵オシレータからのクロックは1/2に分周され、CPUクロックになります。今手持ちのCPUは12MHz品なので、クロックは24MHzまで入れることができます。

外部バスのクロックは、CPUクロックを更に1/2, 1/4分周にすることができ、CLKピンから出力されます。デフォルトでリセット後は1/2にセットされるのですが、この分周比は、データシートによるとソフトウェアからでは変更できません。

これは、アクセススピードが遅いメモリやI/Oを接続することを考慮したものなのでしょうが、Z280を最速で動かすには、バスクロックをCPUクロックと同一にする必要があります。厄介なことに、この分周比を変更できるのは、リセット時にデータバス経由で値を渡す方法だけのようです。

2021年4月10日土曜日

Z280のZ80-Bus

 

Z280のZ80 Busですが、その名前と違い、メモリやI/Oと接続するための信号やタイミングはZ80とは完全に同じではありません。8-bitバスという点では同じなのですが。


データD0-D7とアドレスA0-A7は、AD0-AD7としてマルチプレクスされているので、アドレスを保持するためにZ8000と同じようにアドレスラッチが必要です。/ASは、AD0-AD7がアドレスを出していることを示す信号です。
/OEと/IEは、ADが出力か入力を示す信号で、ちょっと使いみちが思いつきませんが使わなくても大丈夫そうです。

Z80と違い、命令のフェッチでもデータのリードライトでも同じタイミングで行われます。

メモリリードでは、/MREQがLになり、続いて/RDがLになります。データはT3の立ち下がりで読み取られます。

メモリライトでは、/MREQがLになり、AD0-AD7にデータが出力され、続いて/WRがLになります。

よくある非同期バスなので、スタティックメモリをつなぐだけなら大して難しくはなさそうです。

I/Oアクセスは、タイミングは違えどメモリとほぼ同じようです。Z280には主要な周辺I/Oが組み込まれているので、I/Oアクセスの事はしばらく忘れておきます。


参考文献 
 Z280 PRELIMINARY Technical Manual
 Z280 Product Specification

2021年4月3日土曜日

Z280のリセット

Z280の資料を読み始めました。まずはリセットあたりから。

Z280のリセットは少々複雑です。 ハードウェアリセットは、/RESETピンを128クロックサイクルの間、Lにすることでかかります。 
外部バスをZ-BUSかZ80 Busにするかは、このリセット時にOPTピンで決定します。

 Z80 Bus --- opt = L 
 Z-BUS ----- opt = H or NC

/RESETピンをHに戻すときに、/WAITピンがLになっているとAD0-AD7ピンからデータを読み込んでBus Timing and Initialization Register を初期化できます。AD6をHにしておくとブートストラップモードになり、リセット後にUARTから256バイト読み込んで実行します。ROMレスなシステムを作るの使う機能で面白そうですが、スタンドアロンで動作できなくなってしまうので、今回は使わないつもりです。
他にも、メモリアクセス時のウエイト数を設定したり、外部バスクロックの設定ができたりするのですが、初期化に余分な回路が増えるため、この初期化方法は使わないことにします。

/RESETがLになっている間は、AD0 - AD15, A16 - A23 はHi-Z で、他の制御出力ピンはHになります。

参考文献 
 Z280 PRELIMINARY Technical Manual
 Z280 Product Specification