以前に作製した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がキャラクタを描画するは負荷が重いと思われるので、キャラクタを生成するキャラクタ生成コントローラを付加することにする。
メモリアクセス・データパスのブロック図を下に示す。

上図でビットマップVGAコントローラからのメモリアクセス要求、キャラクタ生成コントローラからのアクセス要求、CPUからのメモリアクセス要求はアービタで優先順位付けされる。ビットマップVGAコントローラからのメモリアクセス要求が最優先でサービスされることになる。
最初の実装では、キャラクタ生成コントローラを実装せずに、ビットマップVGAコントローラとCPUだけを実装することにする。
- 2010年01月05日 05:42 |
- VGAコントローラ
-
| トラックバック:0
-
| コメント:4
おぉ!VGAコントローラですか!
キャラクタ生成コントローラは自分も欲しいなぁと思っていたので,参考にさせていただくと思います.
- 2010/01/05(火) 13:08:44 |
- URL |
- いえなが #-
- [ 編集 ]
キャラクタ生成コントローラは、少し先になると思います。グラフィック関係を勉強してからと考えています。期待しないで待っていて下さい。
- 2010/01/05(火) 21:56:31 |
- URL |
- marsee #f1oWVgn2
- [ 編集 ]
LCD用グラフィックコントローラは入手も難しく、製品寿命も短いのでFPGAの活躍場所ですね。
私も参考にさせていただきますのでよろしくお願いします。
- 2010/01/05(火) 21:59:02 |
- URL |
- hazezi #-
- [ 編集 ]
一応、VGAポート用のグラフィックコントローラを考えています。グラフィックコントローラができれば良いなと思っています。ただいま勉強中です。昔のグラフィックコントローラのデータシートを見たりして勉強しようと思っています。どなたか良い本かデータシートがありましたら、譲って下さい。
- 2010/01/06(水) 04:53:27 |
- URL |
- marsee #f1oWVgn2
- [ 編集 ]