So-net無料ブログ作成
English Version

レトロマイコンZ80ボードの構想(その11)CP/M80 BIOS検討3 [Z80]

 前回の記事「レトロマイコンZ80ボードの構想(その10)CP/M80 BIOS検討2」で書いたようにPIC側で使用するI/O数を節約するため BUSACK/ のチェックを省略できるか確認してみました。

 まずは Z80 の仕様を確認するため、本棚から「保存版・Z80の徹底研究」の特集記事が掲載されているトラ技を引っ張り出してきました ^^

トラ技 Z80保存版


 このトラ技には「サッポロシティ・スタンダードのすべて」の特別企画も掲載されていて思わず読みふけってしまいましたw
 広告付きで保存しているので MZ-80C の広告も載っています ^^

 「応用CP/M」等の本もずっと持っていたのですが数年前に捨ててしまったので今はありません ^^;(CP/Mを動かそうとする日が来るとは思ってもいなかった・・)

 BUSREQ/の話に戻るとBUSREQ/は各マシンサイクルの最後のステート(ここでいうステートはクロック1周期分)の立上りでサンプリングされ次のマシンサイクルでbusを開放すると記載されています。

 今回は HALT 状態の時にBUSREQ/をアクティブにするので最悪ケースはサンプリング直後にBUSREQ/を出した場合で5ステート分待てば問題ないはずです(HALT命令は4ステート)。

 但し、前回の実験でHALT状態では次の命令のフェッチを繰り返しているのでHALTの次にはNOP(これも4ステート)を置いておくことにします。

★2018/03/02 追記 {
 気になったのでHALTの次のコードの影響を確認してみました。具体的には

076h HALT ; 1 マシンサイクル、4 ステート
0f9h LD SP,HL ; 1 マシンサイクル、6 ステート

HALT命令を実行しHALT状態になった後、「LD SP,HL」のフェッチを行いますが、4 ステートでマシンサイクルを完了していました。マニュアルに書いてあった「HALT状態では内部でNOPを実行している」とはこのこと(M1サイクルもNOPと同じ)のようです。
 従ってHALTの後にNOPは不要ということになります。HALTの次のコードを実行していないのだから当然といえば当然ですね。
}

 Z80は16MHzで動かしているので5クロックは0.3125usになります。

 実際にBUSREQ/からBUSACK/までの時間を10回程、測定した結果が下表です。(ロジアナは100MHzサンプリングなので解像度は10ns)
 また、測定時のロジアナ画面のサンプルも貼っておきます。

表 BUSREQ/ -> BUSACK 応答時間測定結果
No. 1 2 3 4 5 6 7 8 9 10 Max
Time[us] 0.20 0.14 0.20 0.26 0.27 0.14 0.26 0.21 0.21 0.21 0.27


BUSREQ/ -> BUSACK/ 応答波形サンプル


 PIC24FJ64GA004のピンアサインも数ヶ所見直しました。
  • SDカード状態信号読込み
    BUSACK/の入力が不要になったのでSDカードの装着状態の入力に変更

  • SDカード用SDI
    SDカードからの出力信号なのでアドレス線とぶつかるのはまずい。抵抗を入れたりして調整可能だと思うけど不安定要素は少なくしたいのでNMI出力を廃止してSDカード用に変更

  • OneBitLoader
     PMD6と兼用にしていたが、データ線はZ80が出力状態にもなるのでローダー動作が不安定。とりあえずUARTのTXと兼用にした。ブートローダーを1線式ではなく、2線式にすればそのままUARTの通信を利用したローダーに変更可能(でも作業としては後回し)

ピンアサイン表(変更版)

★2018/05/05 変更 ピンアサイン表をアップデート
★2018/07/01 変更 ピンアサイン表をアップデート(OBL部更新)

 あれ・・BIOS検討という副題なのにBIOS検討まで進まなかった・・・^^;


[TOP] [ 前へ ] 連載記事 [ 次へ ]
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。