FC2カウンター FPGAの部屋 Vivado HLS 2019.2 で xfOpenCV を使用する6(resize 1)
fc2ブログ

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

FPGAの部屋

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

Vivado HLS 2019.2 で xfOpenCV を使用する6(resize 1)

Vivado HLS 2019.2 で xfOpenCV を使用する5(sobel filter 3)”の続き。

前回は、sobel_filter をやってみたが、今回は、resize をやってみよう。 xfOpenCV の examples/resize を使用しているが、sobel_filter と同様に、AXI4-Stream 入出力に変更するために xf_resize.cpp を追加してある。
xfOpenCV_52_200301.png

xf_resize.cpp を示す。

// xf_resize.cpp
// 2020/02/20 by marsee

// xfopencv/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_ip_accel_app.cpp のコードを引用している
// https://github.com/Xilinx/xfopencv/blob/master/HLS_Use_Model/Standalone_HLS_AXI_Example/xf_ip_accel_app.cpp

#include "xf_resize_config.h"
#include "common/xf_infra.h"

void resize_accel(xf::Mat<TYPE, HEIGHT, WIDTH, NPC1> &_src, xf::Mat<TYPE, NEWHEIGHT, NEWWIDTH, NPC1> &_dst);

void xf_resize(hls::stream< ap_axiu<8,1,1,1> >& _src,hls::stream< ap_axiu<8,1,1,1> >& _dst){
#pragma HLS INTERFACE axis register both  port=_src
#pragma HLS INTERFACE axis register both  port=_dst

     xf::Mat<TYPE, HEIGHT, WIDTH, NPC1> img_in(HEIGHT,WIDTH);
     xf::Mat<TYPE, NEWHEIGHT, NEWWIDTH, NPC1> img_out(NEWHEIGHT,NEWWIDTH);

#pragma HLS stream variable=img_in.data dim=1 depth=16
#pragma HLS stream variable=img_out.data dim=1 depth=16
#pragma HLS dataflow

    xf::AXIvideo2xfMat(_src, img_in);

    resize_accel(img_in, img_out);

    xf::xfMat2AXIvideo(img_out, _dst);
}


どのサイズに resize するか?だが、”Vivado HLS で画像のサイズを縮小して白黒変換(resize_gray)”でやったように 800 x 600 ピクセルの画像を 60 x 45 ピクセルに変更してみよう。
画像サイズを指定するのは、xf_config_param.h なので、編集する。
xfOpenCV_53_200301.png

Vivado HLS 2019.2 で resize プロジェクトを作成した。
Ultra96 用の xczu3eg-sbva484-1-e をPart に設定した。Clock Period は 5 ns とした。
xfOpenCV_54_200301.png

xfOpenCV を実行する際の設定を行った。
Project メニューから Project Settings... を選択して、Project Settings (resize) を表示させた。
Simulation をクリックした。
xf_resize_tb.cpp の CFLAGS に -D__SDSVHLS__ -I../../xfopencv/include --std=c++0x を入力した。
Input Arguments に straight0.bmp を入力した。
xfOpenCV_55_200301.png

Synthesis をクリックした。
xf_resize.cpp と xf_resize_accel.cpp の CFLAGS に -D__SDSVHLS__ -I../../xfopencv/include --std=c++0x を入力した。
Top Function に xf_resize を入力した。
xfOpenCV_56_200301.png

Solution メニューから Solution Settings... を選択した。
Solution Settings (solution1) ダイアログが表示された。
Cosimulation をクリックした。
Input Arguments に straight0.bmp を入力した。
xfOpenCV_57_200301.png
  1. 2020年03月01日 05:48 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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