DE0でVGA出力(VRAMを実装)

前回作成したVGAコントローラーにVRAMを実装した.taltalp.hatenablog.jp

前回までに作成したVGA表示回路は表示画像を回路で作成していたため特定の画像以外は表示することができなかった.

今回はVRAMとNIOS2を実装してソフトウェアから画像を変えられるようにした.


1.仕様
・画面サイズ・・・640×480
・描画可能領域・・・150×150
・256色カラーパレット


2.ブロック図
f:id:taltalp:20150713040228p:plain


3.VRAM
今回作成したVRAMはFPGA内のロジックセルを用いた.
MegaWizardの「ROM:2-PORT」を用いれば書き込みと読み出しが別々に行えた.

f:id:taltalp:20150713033848p:plain

VRAMにはそれぞれのドットごとに1byteのカラーパレット番号を記憶できるようにして,150×150ピクセルのデータを保持するために22500byte以上のデータが必要である.今回は32768byteを確保した.


4.カラーパレット
色はそれぞれのドットごとに12bitのデータを保存して8192色を使えるようにしたかったが,それだとオンチップのVRAMではロジックセル不足になってしまうため,カラーパレットを用いて最大で256色を表現できるようにした.

f:id:taltalp:20150713034351p:plain

今回は書き換えすることができないカラーパレットでとりあえず作成した.

5.描画領域
f:id:taltalp:20150713040631p:plain
図のようにカウンタが原点座標に来たら描画をスタートして,それ以外の領域ではパレット番号0(黒)を指定して等倍で表示をした.

6.動作の様子
f:id:taltalp:20150713041045j:plain
Nios2でパターンを描画させた.
(画像だと見えにくいが,青,緑,黄,赤の順に1ピクセルごとに描画した)