以前、xfOpenCV のサンプルとして Vivado HLS 2019.2 で medianblur を実装したが、それを ZYBO Z7-20 に実装してみようということで、前回は、Vivado HLS 2019.2 で medianblur を再度 IP にした。今回は、その IP を使用して、Vivado 2019.2 でプロジェクトを作成して、ブロックデザインを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行う。 XSA ファイルを生成して、Vitis 2019.2 を立ち上げて、プラットフォームとアプリケーション・プロジェクトを作成し、ZYBO Z7-20 で実機検証を行う。
Vivado 2019.2 で median_filter_axis プロジェクトを作成した。
BMDispCaL , DMA2axis2st , axis2DMA2st , xf_median_blur(これは、Vivado HLS 2019.2 で作成した medianblur IP)をコピーした。
IP Catalog に先程の IP を登録した。
ブロックデザインを作成して、IP を追加して、配線を行った。
Address Editor を示す。
ブロックデザインの HDL Wrapper を作成した。
制約ファイルの median_filter_axis.xdc を作成した。
論理合成、インプリメンテーション、ビットストリームの生成を行った。結果を示す。
XSA ファイルをエクスポートした。
Vivado から Vitis 2019.2 を立ち上げて、プラットフォームとアプリケーション・プロジェクトを作成した。
アプリケーション・ソフトウェアを作成した。
画像のピクセルをヘッダファイルの配列に書いてある bmp_data.h と、その配列を読み込んで、RGB のデータに変換する median_filter_axis.c をプロジェクトに入れた。この RGB の配置については、”xfOpenCV の cvMat2AXIvideoxf() の AXI4-Stream の RGB バイト割当”を参照した。
Ubuntu 18.04 LTS から gtkterm を起動して、設定を行った。
Vitis からアプリケーション・ソフトウェアを Run すると Zynq をコンフィギュレーションして、アプリケーションを起動した。
gtkterm にプロンプトが表示された。
デフォルトでは、ノイズの乗った画像が ZYBO Z7-20 の HDMI OUT から出力されている。
1 をキーボードから入力するとメディアン・フィルタ処理されて、ノイズが除かれた画像が表示された。
”FPGAの部屋 プレゼンツ 「 Zynq&HLSハンズオンセミナー応用編」”では、前回の記事と今回の記事の内容を私と一緒に実装していきます。皆さんもよろしければご参加ください。オンラインなので、全国何処からでもご参加いただけます。
もし、Vivado HLS や Zynq に慣れていないとう方は”FPGAの部屋 プレゼンツ 「 Zynq&HLSハンズオンセミナー基礎編」”からご参加ください。(ステマです。。。)