FC2カウンター FPGAの部屋 2023年08月20日
fc2ブログ

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

FPGAの部屋

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

RGB 24 ビットの AXI4-Stream データ入出力対応のガウシアン・フィルタを Vitis HLS 2023.1 で作成する2

RGB 24 ビットの AXI4-Stream データ入出力対応のガウシアン・フィルタを Vitis HLS 2023.1 で作成する1”の続き。

RGB 24 ビットの AXI4-Stream データ入出力対応のソーベル・フィルタを Vitis HLS 2023.1 で作成するということで、前回は、ソースコードとテストベンチコードを貼って、Vitis HLS 2023.1 で gaussian_axis_RGB24 プロジェクトを作成した。今回は、gaussian_axis_RGB24 プロジェクトで、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTL、Implementation を行った。

C シミュレーションを行った。結果を示す。
zub1cg_pynq_174_230820.png

gaussian_axis_RGB24/solution1/csim/build ディレクトリを示す。
gaussian.jpg と org.jpg が生成されている。
zub1cg_pynq_175_230820.png

org.jpg は gaussian_axis_RGB24 の col_size 変数に ORG_IMGwAxiDma を指定した時の出力となる。つまり元画像と同じ画像ファイルであるはずだ。
org.jpg を示す。ノイズが拡散されているのが分かると思う。
zub1cg_pynq_176_230820.jpg

ノイズが拡散された元画像に 3 x 3 のガウシアン・フィルタをかけた画像が gaussian.jpg となる。
gaussian.jpg を示す。拡散されたノイズがメディアン・フィルタほどではないがある程度取れて、綺麗な画像になっていることが分かる。
zub1cg_pynq_177_230820.jpg

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

gaussian_axis_RGB24_Pipeline_LOOP_Y_LOOP_X の LOOP_Y_LOOP_X の Interval が 1 クロックとなっていて、メディアン・フィルタの出力が 1 クロック毎に 1 出力がでるようだ。問題無さそうだ。

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

Avg II が 480057 クロックだった。画像サイズは 800 x 600 = 480000 ピクセルなので、ほぼ 1 ピクセル / クロックとなっているようだ。

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

outs_TVALID もほぼ 1 でスループットが高いことが分かる。

最初の波形を拡大する。
zub1cg_pynq_182_230820.png

ins_TREADY を見ると、最初はディアサートされている期間があることが分かるが、それが過ぎたら、1 のままになっている。

Export RTL を行った。

Implementation を行って、Vivado で実装した時の性能を確認した。
結果を示す。
zub1cg_pynq_183_230820.png

CP achieved post-implementaion は 4.957 ns で動作周波数の 10 ns よりも小さく、2 倍のクロックで動作しそうだ。
ガウシアン・フィルタの演算は 2 の n 乗の計算で、演算器が楽に組めるのだと思う。
  1. 2023年08月20日 04:37 |
  2. ZUBoard
  3. | トラックバック:0
  4. | コメント:0