FC2カウンター FPGAの部屋 2020年02月26日
FC2ブログ

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

FPGAの部屋

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

Vivado HLS 2019.2 で HLS Video Library を使用した Sobel フィルタを作る2

Vivado HLS 2019.2 で HLS Video Library を使用した Sobel フィルタを作る1”の続き。

前回は、 HLS Video Library で実装した Sobel フィルタのソースコードを貼って、Vivado HLS 2019.2 の sobel_filter プロジェクトを示した。今回は、 sobel_filter プロジェクトで、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行う。

C シミュレーションの結果を示す。
HLS_Video_Library_2_200225.png

7 個ほど OpenCV の結果を合わないとエラーがでているが偏差も 1 または 2 の範囲に収まっている。

sobel_filter/solution1/csim/build ディレクトリを見ると元画像の test2.jpg と HLS Video Library による Sobel フィルタ結果の test2_result.jpg と OpenCV による Sobel フィルタ結果の test2_result_cv.jpg がある。
HLS_Video_Library_3_200225.png

元画像の test2.jpg
HLS_Video_Library_4_200225.jpg

HLS Video Library による Sobel フィルタ結果の test2_result.jpg
HLS_Video_Library_5_200225.jpg

OpenCV による Sobel フィルタ結果の test2_result_cv.jpg
HLS_Video_Library_6_200225.jpg

画像を見る限りでは、 test2_result.jpg も test2_result_cv.jpg も同じようである。

C コードの合成を行った。
HLS_Video_Library_7_200225.png

Latency は 485824 クロックで 485824 クロック / 480000 ピクセル 約 1.01 クロック / ピクセルだった。問題無さそうだ。
BRAM_18K の使用量も 3 個で、その他のリソースも使用量が xfOpenCV よりも圧倒的に少ない。

HLS Video Library では Sobel フィルタの実装を Filter2D でやっているようだ。その合成レポートを示す。
HLS_Video_Library_8_200225.png

Analysis 画面を示す。
HLS_Video_Library_9_200225.png

C/RTL 協調シミュレーションを行った。
HLS_Video_Library_10_200225.png

Latency は 485860 クロックだった。

C/RTL 協調シミュレーションの波形を見てみよう。
HLS_Video_Library_11_200225.png

拡大してみた。
HLS_Video_Library_12_200225.png

OUTPUT_STREAM_TVALID が 0 に落ちているところの周期は 4.035 us だった。800 クロックで 4 us なので 1 行分のようだ。

OUTPUT_STREAM_TVALID が 0 に落ちているところを拡大した。
HLS_Video_Library_13_200225.png

OUTPUT_STREAM_TVALID が 0 に落ちている時間は 35 ns 、つまり 7 クロック分だった。
xfOpenCV に比べて優秀だ。

Export RTL を行った。
HLS_Video_Library_14_200225.png

リソース使用量も少ないし、CP achieved post-implementation も 3.433 ns と問題ない。
  1. 2020年02月26日 05:01 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0