RGBTest: サインカーブを描いてみる

Pocket

SynthesijerでAXIたたいてみたよ,なサンプルです

hdmi_test

DSForum2014やESS2014で紹介させていただいた,InreviumのZynqボードTD-7Z-020-EMCを使って,HDMIディスプレイにサインカーブの出力をしてみたサンプルです.サインカーブを描くというのがやりたいことではなくて,”AXI-HP経由でDDRメモリにアクセスするモジュール”を”Synthesijerを使ってJavaで書いた”というのをご覧いただければ,と思っています.

生成したVHDLを含むVivadoプロジェクトのアーカイブをhttp://www.wasa-labo.com/zynq_test_20141023.zipにまとめています.

簡単にデモの内容説明

サインカーブを描いているメインのソースコードはRGBTest.javaです.実際の描画は,点を打つpsetと四角を描くfill_rectというメソッドを実装したTestFrame.javaが担当しています.

その下では,SimpleAXIMemIface32RTLTestのread/writeメソッド,さらに,その下でAXIリード/ライトを行うモジュールSimpleAXIMemIface32RTLメモリアクセスを行っています.SimpleAXIMemIface32RTLは残念ながらJavaでは書いていなくて,Synthesijerの下位ライブラリを使ってHDLを組み立てることで記述しています.

ユーザアプリを書く人(このケースではTestFrame以上のレイヤのコードを書く人)は,AXIを意識することなく,SimpleAXIMemIface32RTLTestのリード/ライトメソッドを使ってメモリアクセスができます.

ちなみに,HDMI信号(HSYNCやVSYNCとデータ)を作るモジュールは,SyncGenerator.scalaで記述しています.これは,Synthesijerの下位ライブラリを簡単に組み立てられるScalaによるDSL(Synthesijer.scalaと読んでいます)を使って記述しているコードです.