FC2カウンター FPGAの部屋 2010年01月05日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Spartan3A Starter KitのビットマップVGAコントローラの仕様1

以前に作製したSartan3A Starter KitのDDR2 SDRAMコントローラを使ってみるために、グラフィック・コントローラを作って、プロセッサを実装し文字やグラフィックを描画してみようと思う。今のところプロセッサはOpencoresのSH2プロセッサ、Aquariusを考えている。
VGA Video Outputで見てみたが、1024x768, 60Hzで行ってみたい。
1024x768, 60Hzの規格を下に示す。

Pixel Clock 65MHz
Active Video      1024ピクセル
Horizontal Front Porch   24ピクセル
Horizontal Sync Pulse   136ピクセル
Horizontal Back Porch   160ピクセル
Vertical Active Video   768ライン
Vertical Front Porch    3ライン
Vertical Sync Pulse     6ライン
Vertical Back Porch    29ライン


ピクセルクロックは65MHzだ。50MHzのクロックをDCMで13/10倍すると65MHzになるので、これを使用する。
DDR2 SDRAMがCPUとグラフィック・コントローラで共有されるUMA(Uniform Memory Access)アーキテクチャとする。Spartan3A Starter Kit のVGAポートのRGBのビット数は4ビットずつなので、合計12ビット。これを2バイトに割り当てると、メモリは約1.6Mバイト必要となる。このデータを1秒間に60フレーム必要とするので、ビットマップVGAコントローラに必要なメモリ帯域は約100Mバイト/秒となる。16ビット幅、DDR2-300の帯域は600Mバイト/秒であるため、メモリ帯域の1/6をビットマップVGAコントローラで使用する。もちろん、リフレッシュやその他無駄な時間があるため、メモリ帯域の占有時間はもっと長くなることが予想されるが、CPUの動作周波数はOpencoresによると、せいぜい50MHzだろうと思うので、メモリ帯域は足りると思われる。(あくまで予想)
DDR2 SDRAMは512Mビットなので、バイトに直すと64Mバイト。そのうちの約1.6Mバイトをグラフィックメモリとして使用する。さらに、CPUがキャラクタを描画するは負荷が重いと思われるので、キャラクタを生成するキャラクタ生成コントローラを付加することにする。
メモリアクセス・データパスのブロック図を下に示す。
BitMaped_VGA_Controller_1_090105.png

上図でビットマップVGAコントローラからのメモリアクセス要求、キャラクタ生成コントローラからのアクセス要求、CPUからのメモリアクセス要求はアービタで優先順位付けされる。ビットマップVGAコントローラからのメモリアクセス要求が最優先でサービスされることになる。
最初の実装では、キャラクタ生成コントローラを実装せずに、ビットマップVGAコントローラとCPUだけを実装することにする。
  1. 2010年01月05日 05:42 |
  2. VGAコントローラ
  3. | トラックバック:0
  4. | コメント:4