超小型Z80マイコン(その2)Boot ROM機能の実験 [Z80]
前回の記事では今回目指している小型 Z80 ボード( Z80PicCompact )でのピンアサイン案まで書きましたが、今回は PIC 側で実現する機能の一つである boot ROM の機能に関する実験についての状況を書いてみます( PIC のもう一つの機能は シリアル通信と SD カードインターフェースとしての I/O 機能)。
結果から先に書いてしまうと最初のステップとして PIC からの "JP 0000H"( 0C3H,00H,00H )のコードを受けて、Z80 のループ動作を実現できました。
上図の動作概要としては
Z80 の "JP xxxx" 命令は 10 クロック必要なので 12MHz の Z80 がウェイト無しで実行した場合、 0.83 us の実行時間になります。上図ではウェイトが入っているので 2us 程かかっています(上図のカーソル区間が一つの JP 命令の実行区間)。これはノーウェイト時の 2.4 倍で 5MHz 相当の速度と言うことになります。
boot の実行は起動直後の1回だけなので多少遅くとも許容範囲内だと思っています(最終的な boot 機能はもう少し遅くなると思う)。
twitter では 48MHz 動作の PIC で CLC( Configurable Logic Cell )機能無しでは WAIT/ のタイミングを適切に取るのは難しいというようなコメントも頂きました。
しかし、WAIT/ をアクティブにするタイミングを取るつもりはそもそも無く、Z80 を掌の上で転がすように好きなタイミングで Z80 を動かす・・という発想なのです :)
因みに Z80 の WAIT/ のチェックタイミングは T2 の立ち下がりです。
PIC が分担するもう一つの機能である I/O 機能についても PIC 側で慌てる必要が無いような仕掛けも既に考えています。
次は boot 機能実験の次のステップとして hello 表示の実現かなぁ
[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]
結果から先に書いてしまうと最初のステップとして PIC からの "JP 0000H"( 0C3H,00H,00H )のコードを受けて、Z80 のループ動作を実現できました。
"JP 0000H" の繰り返し時のロジアナ波形(サンプリング:25MHz) |
|
上図の動作概要としては
- WAIT/ を アクティブの状態にして RESET/ を解除
- Z80 の M1 サイクル(フェッチサイクル)のリード中のウェイト状態を検出して、データバス上に 0xc3 を出力(この時アドレスは 0000H なので A0,A1 共に low )
- WAIT/ を一瞬解除して Z80 のフェッチサイクルを完了させる
- 次のオペランドの読込み中のウェイト状態を検出したらデータバス上に 0x00 を出力してWAIT/ を一瞬解除する( この動作を2 回実施する)
- 上記の 2 番に戻る
Z80 の "JP xxxx" 命令は 10 クロック必要なので 12MHz の Z80 がウェイト無しで実行した場合、 0.83 us の実行時間になります。上図ではウェイトが入っているので 2us 程かかっています(上図のカーソル区間が一つの JP 命令の実行区間)。これはノーウェイト時の 2.4 倍で 5MHz 相当の速度と言うことになります。
boot の実行は起動直後の1回だけなので多少遅くとも許容範囲内だと思っています(最終的な boot 機能はもう少し遅くなると思う)。
twitter では 48MHz 動作の PIC で CLC( Configurable Logic Cell )機能無しでは WAIT/ のタイミングを適切に取るのは難しいというようなコメントも頂きました。
しかし、WAIT/ をアクティブにするタイミングを取るつもりはそもそも無く、Z80 を掌の上で転がすように好きなタイミングで Z80 を動かす・・という発想なのです :)
因みに Z80 の WAIT/ のチェックタイミングは T2 の立ち下がりです。
PIC が分担するもう一つの機能である I/O 機能についても PIC 側で慌てる必要が無いような仕掛けも既に考えています。
次は boot 機能実験の次のステップとして hello 表示の実現かなぁ
[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]
コメント 0