低遅延リアルタイムGPUをジャイロと接続
前回作成したZybo(XILINX XC7Z010-1CLG400)上のGPUですが、まずはシンプルなグーローシェーディングのみの段階で、一旦9軸ジャイロセンサー(MPU-9250)と接続してみました。
とりあえずまだ1軸のみの実験ですが、動き始めたようです。
LCDモニタが普通のモニタなのでイマイチですが、ゲーミングモニタとか使えばもっと改善すると思います。
ビデオ出力のタイミングジェネレーターとVGA出力の間に挟みこむだけで、ほぼゼロレイテンシーで描画を追加できますので、非常にレスポンス性が良く、リアルタイムで描画が可能です。
構成上、既にある映像にCGを重畳するOSD(On Screen Display)的な使い方にも適しています。
VRやAR向への応用ができそうな雰囲気を感じますね。
(というか、HoloLens とかの描画アーキテクチャどうなってるんでしょうね?)
コマ落ちという概念がないので、ある意味「ハードリアルタイム処理」が出来ています。
例えば、自動車のバックモニタのガイド表示なんかも「ハードリアルタイム」に属するクラスの描画処理ですが、リアルタイムできればリアル空間に対していろんなことができます。
引き続き、Zソートの実装とか、テクスチャキャッシュとの組み合わせなど考えたいと思います。
ちなみに今ピクセルクロック200MHzでGPUコア動かせています。HDMIが150MHzだせれば1080@60pも可能な計算なのですが、ZyboのHDMIが150MHz無理なのと、もろもろ手抜きで今は最後にFIFO入れて昔作った回路でVGAで出してます。(^^;;
はじめて Xilinx SDK まじめに使いましたが、standaloneでもC++11で書いていても普通に動いてくれました。
3Dの行列演算と頂点バッファだらけなので、クラスとstd::vectorが使えるとかなり楽ですね。とりあえず256KBのOCMだけでも結構なことが出来そうなので、OpenCVとか使わなければ、Linuxまで入れなくともある程度リッチな開発は出来そうです。
(追記) アナログVGA端子だと問題なく Full HD(1920x1080@60p) 出力できることに気がつきました。
« 低遅延リアルタイムGPUのFPGA実装 | トップページ | テクスチャキャッシュ追加考察 »
「FPGA」カテゴリの記事
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
- MNIST認識のリアルタイム動作環境更新(2019.09.02)
この記事へのコメントは終了しました。
コメント