Posts Issued on July 23, 2019

グラフィックメモリの設計

posted by sakurai on July 23, 2019 #133

ある目的があり、グラフィックメモリシステムの設計を再度行います。前回設計しているので、パラメータを少々変更するだけで簡単にできそうな気がします。

さて、設計仕様は、昔の8bit PCのVGAをエミュレートするものです。640dotx200dotのRGB各1bitの8色という仕様ですが、横に対して縦のドット数が小さいですね。VGAタイミングのサイトだと640x400というものはあっても、640x200というサイズはありません。

画面が横長に歪であることには理由があり、アドレス空間が16bitであることが関係していると思われます。640x400にすると、RGB各1bit(2^3=8色)だと、メモリに対して8bitアクセスの場合、96,000アドレスとなり、アドレスラインは17bit必要となり、通常の8bitマイコンの16bitアドレス空間として1bit足りません。しかたなく解像度を半分の640x200にすれば、3原色で48,000アドレスとなり、アドレスラインは16bit空間に入ります。

先のFIFOを用いたデザインを再利用して、タイミングだけを変更しようとしたのですが、再検討ついでにFIFOが削除できたので、そのデザインを再利用します。これだと計算が簡単で、dual port memoryで分離されている非同期クロックドメインであるため、ビデオ系のタイミングしか検討する必要がありません。

図%%.1
図133.1 グラフィックタイミング設計用ブロック図

画面構成が640x200なので、それに基づき前回と同じSVGA(800x600)のタイミングで設計することにします。

Space Invadersの画面設計を示します。左が論理画面、右が物理画面です。SVGAの物理画面の中央に論理画面を配置し、適宜拡大します。論理画面が256x256と小さいので、縦横2倍の拡大表示を行います。

図%%.2
図133.2 Space Invadersグラフィックタイミング設計図
次に今回の画面設計を示します。SVGAの物理画面のタイミングは同じで、論理画面のサイズが異なり、縦のみ2倍の拡大表示を行います。
図%%.3
図133.3 今回のグラフィックタイミング設計図

左矢前のブログ 次のブログ右矢