”
Vitis HLS 2020.2 で Vitis Vision Library を使用する3(sobelfilter 編)”の続き。
今まで、Vitis Vision Library の例としてやってきた dilation や sobelfilter は画像ファイルを読み込み時にグレイスケールとして読み込んでいた。今回の medianblur はカラーとして読み込んで、メディアン・フィルタ処理するので、どのようなスループットになるか?楽しみだ。今回は、AXI4 Master のビット幅をデフォルトの 128 ビット幅から 32 ビット幅に減らしてやってみようと思う。
(注) Solution Settings (solution1) の m_axi_addr_64 のチェックを外すのを忘れてしまいました。よって、 AXI4 Master アクセスが 64 ビット幅アクセスをするように実装されています。
Vitis 2020.2 で ZYBO Z7-20 の medianblur プロジェクトを作成した。
Vitis_Libraries/vision/L1/examples/medianblur ディレクトリの 3 つのファイル
xf_median_blur_accel.cpp
xf_median_blur_config.h
xf_median_blur_tb.cpp
を Vitis HLS の medianblur プロジェクトのディレクトリにコピーした。
Vitis_Libraries/vision/L1/examples/medianblur/build ディレクトリの
xf_config_params.h
も Vitis HLS の medianblur プロジェクトのディレクトリにコピーした。
Vitis HLS プロジェクトの Explorer の Source には、 xf_median_blur_accesll.cpp 、 Test Bench には xf_median_blur_tb.cpp を設定した。

それらの Source , Test Bench に設定する CFLAGS や Linker Flags や Input Arguments は”
Vitis Vision Library を使用する時の Vitis HLS 2020.2 の設定方法(dilation 編 1)”に書いたとおりに指定した。画像ファイルも同じ物を使用した。
void median_blur_accel() 関数の引数のテンプレートの設定値は PTR_WIDTH なので、 PTR_WIDTH を 128 から 32 に変更する。
そのためには、 xf_median_blur_config.h の
#define PTR_WIDTH 128
をコメントアウトして、
#define PTR_WIDTH 32
を追加した。

修正後に C シミュレーションを行った。結果を示す。

medianblur/solution1/csim/build ディレクトリの hls_out.jpg と ref_img.ipg は同じに見える。良さそうだ。

C コードの合成を行った。結果を示す。


C/RTL 協調シミュレーションを行った。結果を示す。

Latency は 18220 クロックだった。これを総ピクセル数 128 x 128 = 16384 ピクセルで割ると、
18220 / 16384 ≒ 1.11 クロック/ピクセル
となる。
C/RTL 協調シミュレーションの波形を見てみよう。
まずは、入力(Read)の全体波形から見てみよう。

拡大してみる。

RVALID の見えている波形の周期は 210 ns で 1 の幅が 155 ns だった。
今度は出力(Write)の全体波形を見てみよう。

拡大してみる。

WVALID の周期 40 ns の内の 1 の間は 30 ns となっていた。
最後に Export RTL の結果を示す。
- 2020年12月30日 16:36 |
- Vitis_Vision
-
| トラックバック:0
-
| コメント:0