VGAへの出力のため、CycloneIII の内蔵RAMを使っていますが、そのため、PC-6001 のRAMを外付けのRAMにする必要が出ました(容量が足らない)。
また、キャラクタROMのアクセスに関しても、複数からアクセスがあるため、いろいろ考えた結果、メモリアクセスを以下のようにしました。
○メモリのアクセス
・RAS、CASでのアクセスは廃止する。ただし、RASをSDRAMのリフレッシュに使うかも知れない。
・アクセスは、アドレス、リードイネーブル(負論理)、ライトイネーブル(負論理)で制御する。
・アドレスは、リードイネーブル、ライトイネーブルの立ち下がりで取り込む。そのため、リードイネーブル、ライトイネーブルの立ち下がりの前後1クロックは、アドレスを安定させる。
・データ出力は、アドレス取り込み後、RAM側のクロックで数クロック後に出力する。このデータ出力は、次のアクセスまで安定させておく。
現在、VDG周りの回路の中に入っているキャラクタROMは、トップレベルの階層に移動させる事にします。
また、クロック系、リセット系も、以下のようにします。
○クロック系
・クロックは1つのブロックにする。シミュレーション時にダミーを呼んだりして便利。
・各クロックは、外部50MHzからPLLを用いて生成する。また、各PLLは、ロック信号を出力させる。
・生成するクロックは以下の通り。
50MHz × 63/220 = 14.318MHz(VDG周りのクロック)
50MHz × 23/ 72 = 15.972MHz(CPUのクロック)
50MHz × 1/ 2 = 25MHz (VGA出力のクロック)
50MHz × 1/ 1 = 50MHz (キャラクタROMのクロック)
50MHz × 2/ 1 =100MHz (SDRAMのクロック)
キャラクタROM、SDRAMのクロックは、変更する可能性あり。
・CPU のクロックは、15.972MHz のカウンタで1/4分周して入力する。これは、クロックの関係性が必要性のため。
・AY-3-8910 のクロックは、本来 2MHz だが、15.972MHz を入力して、8回に1回動作させる。
・8049 のクロックは、本来 8MHz だが、15.972MHz を入力して、2回に1回動作させる。
○リセット系
・リセット系は1つのブロックにする。
・リセットは、CPU、「それ以外」に分けてリセットする。
・リセット部も含む「それ以外」のブロックは、外部からのリセットをそのまま使用する。
・PLLが安定して、ロック信号が全て出力された後に、SDRAM部へ初期設定パルスを出力する。
・SDRAM部の初期設定が完了したら、完了パルスを出力する。
・SDRAM部の完了パルスが入力されたら、CPUのリセットを解除する。
・リセット信号は、CPUクロックの立ち下がり(相当)で叩いて出力する。
2011年10月02日
この記事へのコメント
コメントを書く

