FC2カウンター FPGAの部屋 Vivado HLS を使用した車の白線検出8(Canny フィルタ2)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado HLS を使用した車の白線検出8(Canny フィルタ2)

Vivado HLS を使用した車の白線検出7(Canny フィルタ1)”の続き。

前回は、ZYBOのリソース使用量をオーバーしてしまった。今回は、その一番大きな原因であるガウシアンフィルタを 5x5 から 3x3 にしてみよう。

まずは、5x5 のガウシアンフィルタを 3x3 に変更した。
Lane-Detecting_43_160521.png

C シミュレーションを行った。 5x5 のガウシアンフィルタよりも 3x3 の方がノイズが増えてしまった。左に 3x3 のガウシアンフィルタ結果、右に 5x5 のガウシアンフィルタ結果を示す。
Lane-Detecting_44_160522.jpgLane-Detecting_38_160522.jpg

これでも大丈夫かもしれないということで、 3x3 のガウシアンフィルタで行ってみることにした。

次にC コードの合成を行った。
Lane-Detecting_45_160521.png
Lane-Detecting_46_160521.png
これでやっとZYBO のリソースで足りるようになった。

次に性能を向上させたいのだが、あまりリソースが増えるとまた入らなくなってしまう。とりあえず、DATAFLOW ディレクティブを入れてみた。
Lane-Detecting_47_160521.png

C コードを合成した結果を示す。
Lane-Detecting_48_160521.png
Lane-Detecting_49_160521.png

DSPが 3 個ほど増えたが許容範囲内だ。Latency の max が 4353075 から 487634 に約 1/9 になった。

C/RTL コシミュレーションを行った。ちなみにテストベンチを書き換えて、エラーは出ないようにしないとシミュレーションがエラーになってしまった。
Lane-Detecting_50_160522.png

Latency は 315960 クロックだった。これで、640 ピクセル x 480 ラインの画像を処理しているので、315960 / (640 x 480) ≒ 1.03
よって、1ピクセルを大体 1 クロックで処理できている。

シミュレーション波形を示す。
Lane-Detecting_51_160522.png

拡大して見ると、input_r_TVALID, input_r_TREADY, output_r_TVALID, output_r_TREADY がほとんど 1 になっているのが分かる。
Lane-Detecting_52_160522.png
  1. 2016年05月22日 04:49 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3473-b3e85ca7
この記事にトラックバックする(FC2ブログユーザー)