2013年04月07日

FPGAボードDE0とKYANITEを使ってHDMIモニターに画像を表示して遊んでみた

4月になり、ここ関西エリアの気候もどんどん暖かく、過ごしやすくなって来ました。今はまさに、桜満開といった感じですが、今週末は雨風きつくて、多少散ってしまうかもしれませんね。

さて、先日、NT京都という、ニコニコ技術部展示会イベントが京都市は西院にあります、春日幼稚園・春日神社境内で開催されてまして、今回僕は初めて見学させていただきました。
(去年もほぼ同じ時期にあったんですよね。都合が付かなくて参加できなかったのですが)

きっと、普通の神社なので会場としてはそれほど広くないんでしょーと勝手に予想してたのですがそれは間違いで、かなり広い面積に幅広い展示物が並んでまして、Make: meeting(Makers faire)っぽい感じ
もしました。すごく楽しかったです。



さて、このイベントではクリエイターの方々の作品も買うことが出来るようで、僕は長船氏(@s_osafune)作のDE0及びDE0-nanoボード用の拡張基板 KYANITE(カイヤナイト、でいいんですよね)を買ってみました。イベントでは、完成品もありましたが、自分で作ってみたいと思ってキット品を購入しました。

DE0及びDE0-nanoは、ALTERAのCycloneIII(-nanoはCycloneIV) FPGAと周辺回路を搭載したリーズナブルな(1万円前後?)ボードです。台湾Terasic社の製品です。(写真はDE0の端子側)
IMG_20130407_125837.jpg

僕はDE0は購入したのが1年4ヶ月くらい前で、作ったのはDE0ラジコンだけです。
http://projectc3.seesaa.net/article/248752693.html
この記事が2012年1月27日で、それくらいの時期からずーーーーっと戸棚に入ったままになってました。(反省。。。)
(今年は積み基板削減を目指しています!。笑)
※僕はFPGAでは上記ラジコンを作ったことがある程度ですので、記事中に間違ったことがあれば是非ご指摘下さいマセ。



さてさて、KYANITEは、DE0ボードに、HDMI出力、アナログ音声出力、USBホストポート、マイクロSDカードスロット、LANを提供してくれるボードです。
KYANITEボード自体は受動部品で構成され、制御は全てFPGA側に作りこむということのようで、HDMIやDVI出力の無い、本DE0(-nano)ハードに長船氏の手によりHDMI出力回路をFPGA上に作りこまれ、デモプロジェクトとして公開されています。
凄いですね〜!!

鈴木氏(@kskue)のブログで、DE0-nanoとKYANITEとの組み合わせで動作させる記事を書かれています。
[FPGA][DE0] DE0/DE0-nano拡張基板で.bmpファイルをHDMI出力 http://d.hatena.ne.jp/ksksue/20130403/1364984675

さて、KYANITE基板に部品を実装してみました。

IMG_20130406_205822resized.jpg
部品のほとんどは1608(ミリ表記)のチップ部品なので、チップ部品慣れしてない方は予めいらない基板で練習してからやると良いでしょう。

こんな感じで完成しました。LANポートはWIZnetのもの(別売)を搭載させるのですが、手持ちが無いので今は実装していません。
IMG_20130407_122704resized.jpgIMG_20130407_122757resized.jpg

デモプロジェクト関連は長船氏が公開されています。URLは鈴木氏のブログ記事にも記載ありますが、引用すると、以下です。
DE0用デモプロジェクト https://t.co/uz4mRicSzm
DE0-nano用デモプロジェクト https://t.co/JcZD4q8mBc

まずはQuartusIIにプロジェクトを読み込みます。僕は、QuartusII 32bit Version 12.1 Build 243 01/31/2013 SJ Web Editionを使用しました。そしたら、Fitter (Place & Route)で「Internal Error: Sub-system: VPR20KMAIN」なんてのを吐くので、Google先生に お伺いして、以下のALTERAのサポートページにあるような、quartus.iniをプロジェクトのトップディレクトリに置いたら回避出来ました。
http://www.altera.co.jp/support/kdb/solutions/rd12222009_898.html

NiosII側ではSDカードにbmpファイルを置いて展開させたいと思います。サンプルのbmp_testは、RGB555のベタのイメージをSDカードの/de0/test_vga.binに用意し、それを展開するようになってるようです。
一方、DE0-nanoのデモプロジェクトにはBMP形式をオープンしてビットマップに貼り付けるloadbmp関数というのがあったので、そのまま貰ってきて利用し、DE0側のbmp_test側で使用するようにしました。
以下はbmp_testのmain関数内のファイルをメモリーに読み出す箇所で、★部のようにしました。
#if 0
		if((fp = fopen("mmcfs:/de0/test_vga.bin","rb"))!= NULL) {
			fread(pFrameBuffer, 1, 1024*480*2, fp);
			fclose(fp);

			alt_dcache_flush(pFrameBuffer, 1024*480*2);
		} else {
			printf("[!] File not found.\n");
		}
#else // ★★以下が追加部分
		loadbmp("mmcfs:/de0/sample.bmp",pFrameBuffer);
#endif
SDカードは、本デモプロジェクトではKYANITE側ではなく、DE0側のフルサイズのSDカードスロットを使用します。

春なのに非常に秋らしい写真を表示してみました。笑 IMG_20130407_104549resized.jpg

ビットマップを表示する以外にも、本デモプロジェクトには、長船氏によるプリミティブな描画ライブラリ関数がたっぷり入っていて(nd_egl.h参照)、綺麗なGUIをFPGAからいろいろ描画することも出来そうです。
また是非試してみたいです。


というわけでこのKYANITEボードを使えば楽しくDE0と共に遊べそうです。Androidとも繋いでみたりしたいな。。と思いますが、また次回・・・


一年前に鈴木氏に教えてもらった本の紹介です。
QuartusIIでNiosIIを使用したプロジェクトをいじるのには、以下の本「FPGA ボードで学ぶ組込みシステム開発入門」が役立つと思います。
もしQuartusII初めて使うなら是非見てみてはいかがでしょうか!
FPGA ボードで学ぶ組込みシステム開発入門 〜Altera編〜
小林 優
技術評論社
売り上げランキング: 39,623

WIZ820io
WIZ820io
posted with amazlet at 13.04.07
スイッチサイエンス
売り上げランキング: 101,278

Terasic USB Blaster(1-TB1) ALTERA USB Blaster互換品
HuMANDATA LTD.
売り上げランキング: 41,593
ラベル:DE0 FPGA KYANITE
posted by いしいっち at 13:33| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック