”Vivado HLS 2015.4 で OpenCV を使ってみた4(Sobelフィルタを試した2)”の続き。
前回は、X 軸方向のSobel フィルタをやっていたのだが、今回は Y 軸方向のSobel フィルタをテストしてみる。
ソースコードの opencv_ex_ug.cpp の変更部分を示す。
hls::Sobel<0,1,3>(img_1g, img_2g);
とした。X 軸方向の時は、
hls::Sobel<1,0,3>(img_1g, img_2g);
だった。
テストベンチの opencv_ex_ug_tb.cpp の変更部分を示す。同様に、
Sobel(gray, img0g, IPL_DEPTH_16S, 0, 1, 3);
とした。X 軸方向の時は
、Sobel(gray, img0g, IPL_DEPTH_16S, 1, 0, 3);
だった。
C シミュレーションを行った。X 軸方向の時よりもエラーが 2 個増えた。

C シミュレーション後の Sobel フィルタ結果を示す。
まずは元画像の test.jpg から。

ソースの方の test_result.jpg を示す。

テストベンチの出力の test_result_cv.jpg を示す。

C ソースコードからの合成を行った。

Estimated も Latency も前回の X 軸方向の Sobel フィルタと同じなので、同じライブラリのようだ。Estimated は 11.12 (ns) で制約を満たしていない。
リソース使用量を示す。左に今回の Y 軸方向、右に前回の X 軸方向の Sobel フィルタの場合の結果を示す。


Estimated と Latency が前回と違っていないのに、リソース使用量はX 軸方向の Sobel フィルタの方が FF と LUT で多くなっている。
Analysis 表示を示す。

次々にライブラリをコールしているのが分かった。
C/RTL コシミュレーションを行った。

Latency は 29319 クロックかかった。前回の X 軸方向のC/RTL コシミュレーション結果はクロックのTarget が 5 (ns) の時の結果で、クロック数/ピクセル数は 1.09 だった。今回の Y 軸方向の場合は、クロックのTarget が 10 (ns) の時の結果で、クロック数/ピクセル数は 29319 / (189 x 146) ≒ 1.06 倍となって、こちらのほうが倍率が少ない。
C/RTL コシミュレーションの波形を示す。

拡大してみた。

INPUT_STREAM_TVALID と OUTPUT_STREAM_TREADY の波形はX 軸方向の場合と同様のようだ。
最後に、RTL シミュレーション結果の test_result.jpg を示す。
- 2016年04月06日 05:09 |
- Vivado HLS
-
| トラックバック:0
-
| コメント:0