2011年10月11日

CPU周りの設計(7)

 とりあえずCPU周りの雑多な回路から実装してみようと思いました。

 まず、WAIT の生成。

 回路から読み取った、WAIT の発生条件は次の通り。

・M1ステートの読み出しは、全て1WAIT。
・A15 = L の時(つまりROM領域にアクセス時)、メモリのリード、ライト時に1WAIT。
・AY-3-8910(I/Oポートアドレス 0xA0〜0xAF)に対するリード、ライト時に1WAIT。

 少ないので簡単だと思ったんですが...

 使っている T80 のパルスが、Z80 と違うー。

 ほとんど問題はないんですが、ライト時のWAIT の入れ方が異常!
 MREQ/IORQ と WR が L になる前に、WAIT 信号を要求する仕様になっています。


 このために、I/O を含むライト時に WAIT は入れられませんでした。WAIT を入れる必要があるデバイスかどうかは、アドレスで区別するのですが、メモリか I/O かの区別をするためのIORQ の前に WAIT を入れる必要があるので、どうしようもありません。


 ライト時の WAIT が問題になりそうなのは、

 ・ROM 領域に書き込みを行った時、CPU の動きがちょっとだけ速くなる。
  →多分問題にならない(というかROM領域に書き込みしない)

 ・AY-3-8910 に書き込みを行った時、CPU の動きがちょっとだけ速くなる。
  →あまり問題にならない(速度に多少影響をするかも、程度)


 なので、WAIT 発生条件を以下のようにして実装することにしました。

・M1ステートの読み出しは、全て1WAIT。
・A15 = L の時(つまりROM領域にアクセス時)、メモリのリード時に1WAIT。
・AY-3-8910(I/Oポートアドレス 0xA0〜0xAF)に対するリード時に1WAIT。
・ライト時は、全てWAITなし。


 ついでに、2ms タイマと割り込みの優先回路も実装しました。


 ただ、8255 と 8049 を実装しないと、全然動かないんですけどね。

posted by えすび at 23:07| Comment(0) | FPGA化:その他 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。