Tech と Culture

テクノロジーとカルチャー

YCbCr-RGB変換モジュールRTL ハードウェアテスト

FPGAへのマッピングができたので、YCbCr-RGB変換モジュールのハードウェアテストを行います。
GHDLによるシステム検証時に、Bare-C compilerを用いてソフトウェアをコンパイルして、SDRAMの中身を示すsdram.srecファイルを生成しました。このファイル生成の流れは、
systest.c -> systest.exe -> sdram.srec
の順に生成されます(Makefile参照)。
そして当然ながら、systest.exeはハードウェア上で実行可能なファイルです。

という訳で、いつものごとく、小さな画像からC言語で生成した入力パターンを用いてハードウェアにデータを送り込み画像を表示させるというテストプログラムを作成します。

まずは、事前調査で自作モジュールを使用しないLinuxをブートさせて、Grmonからsuspendさせます。そして、Grmonのメモリ領域表示コマンドを用いてGrlibのSVGAcontrollerの設定レジスタの値をメモします。そしてコーディング開始です。

単純に80x80の画像の入力パターンを配列に埋め込みます(perlを使用しました)。

hard-test1.png

そして、先ほどメモしたレジスタ値をSVGAcontrollerのレジスタに書き込む部分を作成。

hard-test2.png

SVGAcontrollerを有効にしてから、YCbCb-RGB変換モジュールのアドレスに順次書き込みます。

hard-test3.png

systest.c を、この関数を呼ぶだけのものにしてmake softで、データを送る実行ファイル systest.exe ができました。

その実行結果は、
http://www.youtube.com/watch?v=oCoRNkBvwRo



画面の左上に80x80の小さな画像が出力されました!
\(^O^)/ バンザーイ
どうやら、YCbCr-RGB変換モジュールは正しく動作してくれているようです。

最初にLinuxの画面が出ているのは、この実験の前に表示したフレームバッファが残っているためです。この実験はOS無しでデータを直接モジュールに送り込んでいます。
また、画面全体にノイズがあるのは、フレームバッファの領域をクリアしていないためです。

P.S. いつの間にか、youtube画面の埋め込みがFC2のメニューから消えている、、、、、