”Vivado HLS で xfOpenCV を使用する3(Harris コーナー検出)”の続き。
前回は、examples ディレクトリの harris をVivado HLS GUI でやってみた。今回は、StereoBM をVivado HLS GUI でやってみたい。
まずは、examples ディレクトリの stereolbm ディレクトリを ~/xfopencv/HLS_Use_Model/examples ディレクトリの下にコピーした。
stereolbm/data ディレクトリには、left.png と right.png があった。
Vivado HLS 2018.3 で stereolbm_project プロジェクトを作っていこう。
ソースを登録する。
xf_stereoBM_accel.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
次にテストベンチを登録する。
xf_stereoBM_tb.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
left.png と right.png を追加した。
Ultra96 の使用を仮定して、 xczu3eg-sbva484-1-e を選択して、Finish をクリックした。
stereolbm_project が生成された。
Project メニューから Project Settings... を選択した。
Project Settings ダイアログが表示された。左のペインから Simulation を選択した。
右のペインで、Options のClear Build にチェックを入れて、Input Arguments に "left.png right.png" を入力した。
C シミュレーションを行った。
C シミュレーションの結果を示す。
stereolbm/stereolbm_project/solution1/csim/build の内容を示す。
hls_out.jpg がステレオカメラの深度情報になっているようだ。
left.png を引用する。
right.png と合わせて深度を測定した結果の hls_out.jpg を示す。奥のほうがグレーが濃くなっているようだ。
合成を行った。
この結果からは、Ultra96 では、LUT のリソースが 101 % で足りないようだ。
Latency は 100 MHz クロックで、最大で約 41.8 ms となっている。
C/RTL 協調シミュレーションは例によってエラーになってしまった。
Export RTL を行った。ただし、Vivado synthesis, place and route にチェックを入れてある。
結果を示す。
LUT 使用量が 26286 個になった。LUT としては SRL を含める必要があると思うので、含めると、27299 個となった。
Ultra96 の全LUT 数が 70560 個なので、約 38.7 % となった。これならばUltra96 に十分入る。
Vivado HLS で合成時に出すレポートは当てならないので、Vivado に解析を頼んで、リソースの使用状況を確認したほうが良い。
前回は、examples ディレクトリの harris をVivado HLS GUI でやってみた。今回は、StereoBM をVivado HLS GUI でやってみたい。
まずは、examples ディレクトリの stereolbm ディレクトリを ~/xfopencv/HLS_Use_Model/examples ディレクトリの下にコピーした。
stereolbm/data ディレクトリには、left.png と right.png があった。
Vivado HLS 2018.3 で stereolbm_project プロジェクトを作っていこう。
ソースを登録する。
xf_stereoBM_accel.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
次にテストベンチを登録する。
xf_stereoBM_tb.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
left.png と right.png を追加した。
Ultra96 の使用を仮定して、 xczu3eg-sbva484-1-e を選択して、Finish をクリックした。
stereolbm_project が生成された。
Project メニューから Project Settings... を選択した。
Project Settings ダイアログが表示された。左のペインから Simulation を選択した。
右のペインで、Options のClear Build にチェックを入れて、Input Arguments に "left.png right.png" を入力した。
C シミュレーションを行った。
C シミュレーションの結果を示す。
stereolbm/stereolbm_project/solution1/csim/build の内容を示す。
hls_out.jpg がステレオカメラの深度情報になっているようだ。
left.png を引用する。
right.png と合わせて深度を測定した結果の hls_out.jpg を示す。奥のほうがグレーが濃くなっているようだ。
合成を行った。
この結果からは、Ultra96 では、LUT のリソースが 101 % で足りないようだ。
Latency は 100 MHz クロックで、最大で約 41.8 ms となっている。
C/RTL 協調シミュレーションは例によってエラーになってしまった。
Export RTL を行った。ただし、Vivado synthesis, place and route にチェックを入れてある。
結果を示す。
LUT 使用量が 26286 個になった。LUT としては SRL を含める必要があると思うので、含めると、27299 個となった。
Ultra96 の全LUT 数が 70560 個なので、約 38.7 % となった。これならばUltra96 に十分入る。
Vivado HLS で合成時に出すレポートは当てならないので、Vivado に解析を頼んで、リソースの使用状況を確認したほうが良い。
コメント