高位合成する環境を構築する。HLSのセットアップ方法を解説する。Vitisビジョンライブラリは、Xilinx社が提供しているVitisライブラリのうち、画像処理に特化したライブラリを指します。Sourceのライブラリで、線形代数やソルバー、画像処理など、各機能に特化したAPI関数が含まれる開発ツールです。このツールを使って、ソフトウェアで記述したプログラムをFPGAのロジックに合成して、処理を高速化(アクセラレーション)することが可能です。ライブラリが多数含まれています。アルゴリズムをゼロから再実装する必要がなく、ザイリンクスの適応性に優れた演算機能を活用できます。japan.xilinx.com実際に、ビジョンライブラリから高位合成する方法は以下の記事をご覧ください。Csim】Vitisビジョンライブラリでテストベンチ関数を使ったCシミュレーションの方法を解説。HLSにOpenCVライブラリをインクルードして環境を構築するのはひと手間かかります。私も何度かエラーが発生するなか、やっとテストベンチシミュレーションと高位合成を行うことができました。HLSのテストベンチ関数で使用するためのOpenCVの環境を、Windows上で構築する方法を紹介しました。HLSにビジョンライブラリとOpenCVをインクルードして、画像処理関数を高位合成する環境を構築しました。本記事では前準備として環境構築に必要なセットアップのうちOpenCVのインストール方法を解説しています。HLS上でビジョンライブラリとOpenCVをそれぞれインクルードする方法を解説します。dll)をリンクし、実行ファイルを作成する一連の流れを理解するのに有用な書籍です。プログラムのビルドに詰まったときに、状況を整理するのに役立ちました。RinkerKindleAmazon楽天市場YahooショッピングVitisライブラリのダウンロード前回の記事で実施したOpenCVのビルドを待っている間に、Vitisライブラリをダウンロードしましょう。次のXilinxのページからVitisライブラリをダウンロードします。[Vitisビジョンライブラリのみ]と[Vitisライブラリすべて]のどちらかを選択します。Zip]と選択します。MasterというZipファイルがダウンロードされるので、それを解凍します。解凍したフォルダは好きなディレクトリ(LIBRARY_ROOT)に移しておきます。C:\Xilinx\Vitis_Libraries-master以上で、Vitisライブラリのダウンロードは完了です。HLSを設定しましょう。HLSのプロジェクトを作成します。以前投稿した以下の記事で解説した方法と同様に、まずはソースコードは指定せずにプロジェクトを立ち上げました。-掛け算IPをZyboに実装-本記事では、掛け算を行う関数をハードウェアIPに高位合成し、さらに高位合成の結果を実感するためにLED点滅回路に実装しました。回路実装では、スイッチからの入力を掛け算してLEDに出力して、掛け算IPの動作を確認しています。phys-higashi.com2021.04.18プロジェクトが作成出来たら、Vitisビジョンライブラリのexampleディレクトリから、テストベンチ関数と高位合成の対象となる関数をそれぞれインポートします。今回はガウシアンフィルタを例に説明します。File...]から選択します。File...]から選択します。次に、先ほどインストールしたOpenCVライブラリとビジョンライブラリへのリンクを設定します。Settings...]を選択します。新しく立ち上がったウィンドウでは以下の通り設定します。-Wno-unknown-pragmas]を入力します。-Wno-unknown-pragmasと入力しました。-std=の後は、Xilinxのドキュメンテーションではc++14ではなくc++0xが指定されています。stdオプションはC++のコンパイラを利用するときに、明示的にどのバージョンのC++の機能を使うのかを示すものです。c++0xは09年以前のリリースをめざしていた名残で0xとつけられています。Cシミュレーションを進めると大量にWarningが出てしまったので、c++14に変更しました。-lopencv_imgproc440]を入力します。-lopencv_imgproc440と入力します。Argument]に入力画像のパスを入力します。先ほどプロジェクトのディレクトリに移動した画像128×128.pngへのパスを指定します。Functionsに、右の[Browse...]をクリックし、高位合成の対象となる関数名を選択します。今回は、”gaussian_filter_accel”となります。-std=c++14]を入力します。-std=c++14と入力しました。Synthesisの方にはOpenCVのパスを含めないように注意しましょう。HLSの設定は完了です。Cシミュレーションでの実行処理の確認では、無事にビルドが通るかを確認しましょう。Simulation]を実行します。エラーが発生したときのために、デバッグモードで立ち上げます。Debugger]にチェックを入れ、[OK]をクリックします。Argumentsの指定が、“¥”で区切られていますが、”/”に直さないとCシミュレーションでエラーが発生します。Debugger]で立ち上がるデバッグモードはうまく実行できますが、通常のCシミュレーションでは区切りを直さないと次のエラーが発生します。原因が非常にわかりにくいエラーですので、細かいところですが、慎重にパスを指定しましょう。$argv"デバッグモードが次の画面のように立ち上がれば成功です。左上の実行マークをクリックしましょう。すると、コンソールに処理結果が出力されます。OpenCVとビジョンライブラリの出力結果の間に誤差がないことを示しています。画像処理後の画像と差分処理後の画像はプロジェクトフォルダ内に格納されています。[/solution1/csim/build]というフォルダの中にそれぞれの画像があります。処理後の画像error.png(差分画像)が真っ黒(すべてゼロ)に表示されていれば、シミュレーションに成功しています。HLSでビジョンライブラリを使えるようになったと思います。試行錯誤しながら進めたので、参考にしていただければと思います。実際にビジョンライブラリでアプリケーションを構築するのは、また別の機会に。引き続き、高位合成や協調Sim、IP生成がうまくできるかを試してみます。HLSにビジョンライブラリとOpenCVをインクルードして、画像処理関数を高位合成する環境を構築しました。本記事では前準備として環境構築に必要なセットアップのうちOpenCVのインストール方法を解説しています。ビジョンライブラリビジョンライブラリの画像処理結果をディスプレイ表示【(1)構成】Vitisビジョンライブラリのcustomconvに含まれるFilter2D_accelを例にラプラシアンフィルタを行うIPを高位合成。本記事ではラプラシアンフィルタリング処理した画像をディスプレイ表示するブロックデザインの構築方法を紹介。Csim】Vitisビジョンライブラリでテストベンチ関数を使ったCシミュレーションの方法を解説。用例のcustomconvに含まれるFilter2D_accelを例にラプラシアンフィルタの高位合成と実装をめざす(本記事はCシミュレーションのみを行う)ビジョンライブラリビジョンライブラリの画像処理結果をディスプレイ表示【(2)実装】Vitisビジョンライブラリのcustomconvに含まれるFilter2D_accelを例にラプラシアンフィルタを行うIPを高位合成。本記事ではラプラシアンフィルタリング処理した画像をディスプレイ表示するアプリケーションプロジェクトを紹介。Synthesis】Vitisビジョンライブラリでテストベンチ関数を使った高位合成の方法を紹介。用例のcustomconvに含まれるFilter2D_accelを例にラプラシアンフィルタの高位合成と実装をめざす(本記事は高位合成まで)ビジョンライブラリVitisビジョンライブラリのxf::cv::MatクラスについてVitisビジョンライブラリで画像を取り扱うためのクラスxf::cv::Matの宣言の仕方とテンプレート引数、メンバについてまとめました。OpenCVのcv::Matクラスとの相違点を中心に解説しています。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。-掛け算IPをZyboに実装-2021.04.182022.02.13Rustupをインストールするときに発生したエラーの回避方法2021.08.102021.11.07。