4-02 カメラエミュレータROMのHDL生成(続き)

●テスト画像をFPGAで処理する

 カメラエミュレータはシミュレーションだけではなく
FPGA実機でも使用します。

 エミュレーションモード(図4‐03でEMUMODE=1)とすると、先ほど生成したROM_CAM_00〜29.vhdが選択され、VGAモニタは図4‐11のようになります。これは図4‐02
20枚の画像が横一行に並んだもので、それが縦に16行繰り返されます。


4‐11 カメラ動画の代わりにGTSRBテスト画像がVGAに

●VGA 640×480 のエリアいっぱいに20枚の画像

 画像はそれぞれ30×30ですが、このように2画素ぶん「隙間」があるので、横一ラインは32×20 =
640、RGB565(計16ビット)を8ビットづづに分離していることを鑑みて×2=1280個のデータになります。
 ROM_CAM_00.vhdには横一ラインぶんのデータが1280個あり、アドレス数はキリの良い2048になります。

 HDLファイルはROM_CAM_00〜29の30個(
30ラインぶん、画像の縦方向が30画素なので)あります。縦方向には隙間がなく、この30ラインが繰り返し16回表示されて 30 x 16 = 480が縦一ラインの画素数になります。

 図4‐11は画像をスルーでVGAに映していますが、推論結果を上書きすると図4‐12のようになります。



図4‐12 各推論クラス割り当てられた数字を表示


●テスト画像20枚の推論結果

 推論結果が
緑色で書かれています(背景にうっすらと元画像が見える)。左端は26なので、これを見ると(26.png) 正解していることが分かります。

 その隣は9, 16, 38... と正解していますが、右の方に一つ数字が抜けています。これは6層目(最終層)の出力が閾値を超えなかったため、判定できなかったということです。


●FPGA内部でPython/Excelと同じことが起こることを確認

 また実機でカメラエミュレータを使用すると、
FPGA内部信号(図4-13)とPython/Excelとの一致を見ることもできます。

図4‐13 ロジックアナライザでFPGA内部信号を見る

最初のページへ

目次へ戻る