Qsysを使ってDE0でVGA表示

Quartus II (12.0sp2) で使えるQsysの勉強をしてみました。
例題は、NiosII にVGA(640x480)表示機能を持たせるというものです。
FPGAボードにはDE0を使いました。

Qsysの構成は以下の通り:
Qsys構成

SDRAMはフレームバッファ用、onchip_memoryにNiosIIのプログラムを置きます。
一番下のVGA_CLKというモジュールはVGA用自作クロックジェネレータです。


sgdma_0の設定は以下の通り:
sgdma_0

Read burstcount signal widthが8ビットになってますが6ビットで充分かも。

vga_sync_generator_0の設定は以下の通り:
vga_sync_generator_0

フロントポーチなどの数値は、適当なので、モニタによっては表示がズレるかもしれません。



で、VGA表示させるためには、NiosIIからsgdmaへDMA転送命令を送る必要があるわけですが
そのプログラムは以下の通り:

NiosII側プログラム

IRQを使ってDMA命令を発行しています。



参考にさせていただいたサイト:
https://sites.google.com/site/fpgaandco/de0-nano-niosii-lcd-driver