FC2カウンター FPGAの部屋 Vivado HLS 2019.2 の HLS Video Library を使用して resize() を実装する4
fc2ブログ

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

FPGAの部屋

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

Vivado HLS 2019.2 の HLS Video Library を使用して resize() を実装する4

Vivado HLS 2019.2 の HLS Video Library を使用して resize() を実装する3”の続き。

前回は、HLS Video Library の resize を使用して、800 x 600 ピクセルの画像を 60 x 45 ピクセル、100 x 75 ピクセル、200 x 150 ピクセルに縮小できるかどうか?を C シミュレーションですべてできることを確認した。今回は、60 x 45 ピクセル、200 x 150 ピクセルに縮小した時の C コードの合成、 C/RTL 協調シミュレーション、 Export RTL を行った。

800 x 600 ピクセルの画像を 60 x 45 ピクセルに縮小した場合
C コードの合成を行った。
HLS_Video_Library_32_200306.png

Latency は 503450 クロックだった。これは、 503450 クロック / 480000 ピクセル数 ≒ 1.05 クロック / ピクセルだ。
リソース使用量もそこそこだ。

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

Latency は 498437 クロックで、合成レポートよりも小さくなっている。

C/RTL 協調シミュレーションの全体波形を示す。
HLS_Video_Library_34_200307.png

outs_TVALID が櫛形になっているのが分かる。

もう少し拡大してみた。
HLS_Video_Library_35_200307.png

outs_TVALID の櫛形の部分が細かいデータ転送が集まっていることが分かる。この塊が画像の 1 行に相当する。

outs_TVALID のデータ転送部分を拡大してみた。
HLS_Video_Library_36_200307.png

やはり、outs_TVALID が櫛形になっているのが分かる。これは、60 / 800 ピクセルで 1 / 13.3333 であるはずだ。

Export RTL の結果を示す。
HLS_Video_Library_37_200307.png

CP achieved post-implementation が 4.085 ns で問題ない。

800 x 600 ピクセルの画像を 200 x 150 ピクセルに縮小した場合
C コードの合成を行った。左が200 x 150 ピクセルに縮小した場合のレポートで、右が 60 x 45 ピクセルに縮小した場合のレポートだ。
HLS_Video_Library_38_200307.pngHLS_Video_Library_32_200306.png

200 x 150 ピクセルに縮小した場合の方が FF と LUT の使用量が僅かに増えている。
Latency は同じだった。

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

Latency は 502637 クロックで、 60 x 45 ピクセルのときよりも多い。

C/RTL 協調シミュレーションの波形を示す。
HLS_Video_Library_40_200307.png

1 / 13.33333 から 1 / 4 の縮小率になったので、 outs_TVALID の櫛形の間隔が狭い。

拡大してみよう。
HLS_Video_Library_41_200307.png

やはり、outs_TVALID の櫛形の部分が細かいデータ転送が集まっていることが分かる。

outs_TVALID のデータ転送部分を拡大してみた。
HLS_Video_Library_42_200307.png

データ転送は 4 クロックに 1 回であることが分かる。

Export RTL を行った。
HLS_Video_Library_43_200307.png

Export RTL の結果は、 60 x 45 ピクセルに縮小した場合と全く同じだ。。。興味深い。

800 x 600 ピクセルの画像を 200 x 150 ピクセルに縮小した場合で、C コードの合成結果を HLS Video Library と xfOpenCV とで比較してみよう。左が HLS Video Library で、右が xfOpenCV での結果だ。
HLS_Video_Library_38_200307.pngxfOpenCV_73_200302.png

Latency は HLS Video Library が 503450 クロックで、 xfOpenCV が 487696 クロックだった。
リソース使用量の差を表にする。
HLS_Video_Library_44_200307.png

xfOpenCV の方が BRAM_18K を除くと HLS Video Library よりもリソース使用量は少ない。

xfOpenCV と HLS Video Library は適材適所で良いかもしれない。
  1. 2020年03月07日 05:14 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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