FC2カウンター FPGAの部屋 Vitis HLS 2020.2 で Vitis Vision Library を使用する2(dilation 編 2)
fc2ブログ

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

FPGAの部屋

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

Vitis HLS 2020.2 で Vitis Vision Library を使用する2(dilation 編 2)

Vitis Vision Library を使用する時の Vitis HLS 2020.2 の設定方法(dilation 編 1)”の続き。

前回は、Vitis Vision Library User Guide の Getting Started with HLS に従って、 Vitis HLS 2020.2 の dilation プロジェクトを作成し、Vitis Vision を使用する上での設定を行った。今回は、Vitis Vision Library の dilation プロジェクトの C シミュレーション、 C コードの合成などを行っていこう。

前回、書いていなかったが、 dilation の合成される関数 dilation_accel() の動作を説明する。

1. xf::cv::Array2xfMat() で配列から DMA したピクセルデータを xf::cv::Mat 形式の画像に変換する。
2. その xf::cv::Mat 形式の画像に対して xf::cv::dilate() で 膨張フィルタ処理を行う。
3. 膨張フィルタ処理された xf::cv::Mat の画像を DMA して配列に書く。


つまり、メモリベースで画像をやり取りしている。後で、 xf::cv::AXIvideo2xfMat() と xf::cv::xfMat2AXIVideo() を使用する AXI4-Stream ベースの Vitis Vision Library を使用した関数を書いてみよう。

それでは、 C シミュレーションを行った。
Project メニューから Run C Simulation を選択し、 C シミュレーションを実行した。
C Simulation Dialog が表示された。Input Arguments に 128x128.png がフルパスで入っている。
Vitis_Vision_Library4Vitis_HLS_9_201227.png

C シミュレーションが終了した。成功のようだ。
Vitis_Vision_Library4Vitis_HLS_10_201227.png

しかし、 dilation/solution1/csim/build ディレクトリの hw_out.jpg を見ると出力がおかしいようだ?
ソフトウェアの OpenCV の結果である out_ocv.jpg と同じ結果であるはず?
out_error.jpg は違いが見えないのだが?
Vitis_Vision_Library4Vitis_HLS_11_201227.png

C シミュレーション結果はおかしいと思うのだが、 C コードの合成をやってみた。
まずは合成の Top Function を設定する必要があるので、Project メニューから Project Settings... をクリックする。
Project Settings (dilation) ダイアログが開く。
Synthesis をクリックして、 Top Function に dilation_accel を設定した。

Solution メニューから Run C Synthesis -> C Synthesis を選択し、 C Synthesis を実行した。
Vitis_Vision_Library4Vitis_HLS_12_201227.png
Vitis_Vision_Library4Vitis_HLS_13_201227.png
Vitis_Vision_Library4Vitis_HLS_14_201227.png

次に C/RTL 協調シミュレーションを行った。
Solution メニューから Run C/RTL Cosimulation を選択した。
Co-simulation Dialog が表示された。
Input Arguments に 128x128.png をフルパスで指定した。
Dump Trace を all に設定した。
Vitis_Vision_Library4Vitis_HLS_15_201227.png

C/RTL 協調シミュレーションが終了した。
Vitis_Vision_Library4Vitis_HLS_16_201227.png

Latency は 17967 クロックだった。 128 x 128 ピクセルの画像なので、総画像数は 16384 ピクセルだった。
17967 クロック / 16384 ピクセル ≒ 1.10 クロック/ピクセルの性能だった。まずまずだろうと思う。

dilation/solution1/sim/wrapc ディレクトリの hw_out.jpg も C シミュレーションと同様の結果だった。
Vitis_Vision_Library4Vitis_HLS_17_201227.png

RTL シミュレーション結果の dilation/solution1/sim/wrapc_pc ディレクトリの hw_out.jpg も C シミュレーションと同様の結果だった。
Vitis_Vision_Library4Vitis_HLS_18_201227.png

いよいよ、 dilation がおかしい気がする。

最後に Export RTL をやってみよう。
Solution メニューから Export RTL を選択した。
Export RTL ダイアログが開く。
Vivado synthsis, place and route にチェックを入れる。こうすると IP 単体ではあるが、 Vivado を起動し、配置配線を行って、レポートを作成させよう。
Vitis_Vision_Library4Vitis_HLS_19_201227.png

Export RTL の結果を示す。
Vitis_Vision_Library4Vitis_HLS_20_201227.png
  1. 2020年12月28日 04:22 |
  2. Vitis_Vision
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5102-eaf8307d
この記事にトラックバックする(FC2ブログユーザー)