ZUBoard 1CG

ZUBoard 1CG が来ました
金曜日に、ZUBoard 1CG が来ました。

”ZUBoard - Building the foundational designs”をやってみる1
”ZUBoard 1CG が来ました”で ZUBoard 1CG が今年の 4 月 2 日に届いたが、触っていなかった。そこで、そろそろ使ってみようということで、hackstar.io の”ZUBoard - Building the foundational designs”をやってみよう。
”ZUBoard - Building the foundational designs”をやってみる2
hackstar.io の”ZUBoard - Building the foundational designs”をやってみようということで、Avnet の Guthub リポジトリをクローンして、zub1cg_sbc_base を構築した。今回は、rootfs.wic を MicroSD カードに書き込んで、ZUBoard 1CG に挿入して、Petalinux をブートした。

ZUBoard 1CG の Petalinux の環境を整備しようとしたらインストールされてた
””ZUBoard - Building the foundational designs”をやってみる2”で ZUBoard 1CG で Petalinux 2022.2 が起動したので、環境を設定しようとしたが、pcmanfm も l3afpad もインストールされていた。

”ZUBoard - Building the foundational designs”をやってみる3
前回は、rootfs.wic を MicroSD カードに書き込んで、ZUBoard 1CG に挿入して、Petalinux をブートした。そして、”ZUBoard 1CG の Petalinux の環境を整備しようとしたらインストールされてた”でファイル・マネージャーやテキスト・エディタのインストールも確認した。今回は、ロジテックの HD Pro Webcam C920 カメラを USB ポートに接続して、動作環境を確認し、カメラを起動して、ウインドウにカメラ画像を表示した。
”ZUBoard - Building the foundational designs”をやってみる4
前回は、ロジテックの HD Pro Webcam C920 カメラを USB ポートに接続して、動作環境を確認し、カメラを起動して、ウインドウにカメラ画像を表示した。今回は、petalinux-image-minimal.bbappend ファイルに packagegroup-petalinux-jupyter を追加してビルドした。ビルドしたイメージ・ファイルを再度 MicroSD カードに書き込んだ。MicroSD カードを ZUBoard 1CG に挿入して Petalinux 2022.2 を起動して、Jupyter Notebook を起動した。Jupyter Notebook にファイルを作成し、それ上で、カメラ画像を表示した。
”ZUBoard - Building the foundational designs”をやってみる5
前回は、petalinux-image-minimal.bbappend ファイルに packagegroup-petalinux-jupyter を追加してビルドした。ビルドしたイメージ・ファイルを再度 MicroSD カードに書き込んだ。MicroSD カードを ZUBoard 1CG に挿入して Petalinux 2022.2 を起動して、Jupyter Notebook を起動した。Jupyter Notebook にファイルを作成し、それ上で、カメラ画像を表示した。今回は、Dual Camera モジュール用の zub1cg_sbc_dualcam デザインをビルドしたが、Dual Camera モジュールを持っていないので、ここまでとした。

”ZUBoard - Combining designs into a single platform”をやってみる1
”ZUBoard - Combining designs into a single platform”をやってみようということで、今回は、xmutil コマンドを確認した後で、Petalinux 2022.2 の zub1cg_sbc_2022_2 プロジェクトを作成し、設定を行ってビルドしたが、エラーになってしまった。
”ZUBoard - Combining designs into a single platform”をやってみる2
前回は、xmutil コマンドを確認した後で、Petalinux 2022.2 の zub1cg_sbc_2022_2 プロジェクトを作成し、設定を行ってビルドしたが、エラーになってしまった。今回は、デバイス・ツリーを消去して、もう一度、ビルドを行ったところ成功した。
”ZUBoard - Combining designs into a single platform”をやってみる3
前回は、デバイス・ツリーを消去して、もう一度、ビルドを行ったところ成功した。今回は、 ファームウェアオーバーレイの作成で、avnet_zub1cg_base と avnet_zub1cg_dualcam を合体させようとしたが、デバイス・ツリーのエラーでビルドが通らなかった。
”ZUBoard - Combining designs into a single platform”の真似をしてみる1
”ZUBoard - Combining designs into a single platform”をやってみようということで、前回は、ファームウェアオーバーレイの作成で、avnet_zub1cg_base と avnet_zub1cg_dualcam を合体させようとしたが、デバイス・ツリーのエラーでビルドが通らなかった。今回は、どうしてもデバイス・ツリーのエラーの原因が分からないので、”ZUBoard - Combining designs into a single platform”に沿ってやっていくのは諦めて、似たような事を独自にやっていこうと思う。具体的には、zub1cg_sbc_base_2022_2 だけの Petalinux プロジェクト zub1cg_sbc_2022_2 を作成しビルドした。
”ZUBoard - Combining designs into a single platform”の真似をしてみる2
デバイス・ツリーのエラーの原因が分からないので、”ZUBoard - Combining designs into a single platform”と似たような事を独自にやっていこうということで、前回は、、zub1cg_sbc_base_2022_2 だけの Petalinux プロジェクト zub1cg_sbc_2022_2 を作成しビルドして、成功した。できた wic ファイルを MicroSD カードに書いて、ZUBoard 1CG に挿入して、ブートしたところ Petalinux 起動した。今回は、Sysroot(SDK)をビルドし、できた sdk.sh を展開して、sysroot を生成した。xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi をコンパイルして pl.dtbo を生成した。
”ZUBoard - Combining designs into a single platform”の真似をしてみる3
前回は、Sysroot(SDK)をビルドし、できた sdk.sh を展開して、sysroot を生成した。xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi をコンパイルして pl.dtbo を生成した。今回は、Vitis 2022.2 を立ち上げて zub1cg_sbc_2022_2 プラットフォームを作成し、zub1cg_sbc_vadd アプリケーション・プロジェクトを作成し、ビルドを行って成功した。Vivado のプロジェクトの zub1cg_sbc_base ブロック・デザインを確認した。
”ZUBoard - Combining designs into a single platform”の真似をしてみる4
前回は、Vitis 2022.2 を立ち上げて zub1cg_sbc_2022_2 プラットフォームを作成し、zub1cg_sbc_vadd アプリケーション・プロジェクトを作成し、ビルドを行って成功した。Vivado のプロジェクトの zub1cg_sbc_base ブロック・デザインを確認した。今回は、ZUBoard 1CG に送るファイルを集めて、SFTP で転送し、xmutil で zub1cg_sbc_vadd をロードしたところエラーになった。

”ZUBoard - Adding support for Vitis-AI 3.0”をやってみる1
”ZUBoard - Adding support for Vitis-AI 3.0”をやって見ようということで、今回は、”kria-vitis プラットフォームを理解する”と”zub1cg_sbc_base プラットフォームの構築”、”ベンチマークオーバーレイの構築”をやってみた。
”ZUBoard - Adding support for Vitis-AI 3.0”をやってみる2
前回は、、”kria-vitis プラットフォームを理解する”と”zub1cg_sbc_base プラットフォームの構築”、”ベンチマークオーバーレイの構築”をやってみた。今回は、”avnet-zub1cg-benchmark アプリの作成”と”Vitis-AI 3.0 yocto レシピの追加”をやってみた。petalinux-build を行ったところエラーになったが、User layer を追加すると petalinux-build が成功した。

ZUBoard 1CG で Vitis-AI 3.0 をやってみる1
”ZUBoard - Adding support for Vitis-AI 3.0”をやっていたが、どうもうまく行かないので、そのBSP を使って”KV260向けにVitisプラットフォームを作成してDPUを動かす その1 (Vitis 2022.1 + Vitis-AI v2.5)”の手順でやってみようと思う。今回は、Petalinux のプロジェクトを zub1cg_sbc_base_2022_2_jupyter.bsp を使って作成し、Vitis-AI を使う環境を整えて、ビルドしたところ成功した。
ZUBoard 1CG で Vitis-AI 3.0 をやってみる2
”ZUBoard - Adding support for Vitis-AI 3.0”をやっていたが、どうもうまく行かないので、そのBSP を使って”KV260向けにVitisプラットフォームを作成してDPUを動かす その1 (Vitis 2022.1 + Vitis-AI v2.5)”の手順でやってみようということで、前回は、Petalinux のプロジェクトを zub1cg_sbc_base_2022_2_jupyter.bsp を使って作成し、Vitis-AI を使う環境を整えて、ビルドしたところ成功した。今回は、Sysroot(SDK)をビルドし、できた sdk.sh を展開して、sysroot を生成した。xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi をコンパイルして pl.dtbo を生成した。
ZUBoard 1CG で Vitis-AI 3.0 をやってみる3
前回は、Sysroot(SDK)をビルドし、できた sdk.sh を展開して、sysroot を生成した。xsct を使用したデバイスツリー・オーバレイを作成し、pl.dtsi をコンパイルして pl.dtbo を生成した。今回は、petalinux-package --boot で BOOT.BIN を生成し、petalinux-package --wic で SD カード・イメージを作成し、MicroSD カードに書いて、ZUBoard 1CG に挿入して、電源 ON したが、ブートしなかった。そこで、ブート・パーティションに書くファイルを変更して、もう一度、ZUBoard 1CG に挿入して、電源 ON したところ、Petalinux のブートが途中で止まってしまった。petalinux-build で作成された rootfs.wic を MicroSD カードに書いて、ZUBoard 1CG に挿入して、電源 ON したところ、Petalinux 2022.2 が起動した。
ZUBoard 1CG で Vitis-AI 3.0 をやってみる4
前回は、petalinux-package --boot で BOOT.BIN を生成し、petalinux-package --wic で SD カード・イメージを作成し、MicroSD カードに書いて、ZUBoard 1CG に挿入して、電源 ON したが、ブートしなかった。そこで、ブート・パーティションに書くファイルを変更して、もう一度、ZUBoard 1CG に挿入して、電源 ON したところ、Petalinux のブートが途中で止まってしまった。petalinux-build で作成された rootfs.wic を MicroSD カードに書いて、ZUBoard 1CG に挿入して、電源 ON したところ、Petalinux 2022.2 が起動した。今回は、Vitis 2022.2 を立ち上げて zub1cg_sbc_2022_2 プラットフォームを作成し、dpuprj アプリケーション・プロジェクトを作成し、ビルドを行ったところ失敗した。しかし、これで良いそうだ。
ZUBoard 1CG で Vitis-AI 3.0 をやってみる5
前回は、Vitis 2022.2 を立ち上げて zub1cg_sbc_2022_2 プラットフォームを作成し、dpuprj アプリケーション・プロジェクトを作成し、ビルドを行ったところ失敗した。しかし、これで良いそうだ。今回は、 dpuprj_system_hw_link/Hardware/dpu-link.cfg を修正して、make を行ったところ、Vivado プロジェクトが生成され、論理合成、インプリメンテーション、ビットストリームの生成が実行された。
ZUBoard 1CG で Vitis-AI 3.0 をやってみる6
前回は、dpuprj_system_hw_link/Hardware/dpu- link.cfg を修正して、make を行ったところ、Vivado プロジェクトが生成され、論理合成、インプリメンテーション、ビットストリームの生成が実行された。今回は、必要なファイルを集めて、ZUBoard 1CG の Petalinux 2022.2 に転送し、環境を整備して、xmutil でロードしたとしたところエラーになってしまった。また pl.dtbi の firmware-name を変更して、同様に xmutil でロードしたところエラーになった。

petalinux-upgrade を行って、xmutil をやってみたがエラーになった
petalinux-upgrade を行って、xmutil までの手順をもう一度、全部やり直してみたが、やはり、xmutil でロード・エラーになった。
XSA ファイル名と Petalinux のプロジェクト名を同じにしてみたが、xmutil をやってみたがエラーになった
今回は、Vitis アクセラレーション・プラットフォームを作成する時に、ハードウェアの XSA ファイル名とソフトウェアの Petalinux プロジェクト名を揃えて、Vitis アクセラレーション・プラットフォームを作成し、Vector Addition サンプル・デザインを作成した。そのデザインを ZUBoard 1CG で実行しようと、zub1cg_sbc_base を xmutil でロードしようとしたらエラーになった。
AVNET からダウンロードした BSP を使って、Petalinux プロジェクトを作成して、xmutil をやってみたがやはりエラーだった
AVNET からダウンロードした zub1cg_sbc_2022_2.bsp を使用して、Petalinux プロジェクトを作成し、環境を整え、ビルドした。sysroot を作成し、pl.dtbo を作成して、Vitis を起動し、プラットフォーム・プロジェクトと Vector Addition アプリケーション・プロジェクトを作成した。ファイルを ZUBoard 1CG の Petalinux 2022.2 に転送し、xmutil でロードしようとしたところ、今までと同様にエラーになってしまった。

ZUBoard 1CG で PYNQ v3.0.1 をやってみる1
pynq.io には ZUBoard 1CG 用の PYNQ v3.0.1 があるので、やってみようと思う。
ZUBoard 1CG で PYNQ v3.0.1 をやってみる2
pynq.io には ZUBoard 1CG 用の PYNQ v3.0.1 があるので、やってみようと思うということで、前回は、PYNQ の Development Boards から ZUBoard 1CG 用の PYNQ v3.0.1 のイメージをダウンロードし、MicroSD カードに書いて、Ubuntu 22.04 を ZUBoard 1CG で起動した。今回は、ZUBoard 1CG の PYNQ の Jupyter Notebook を使ってみた。

ZUBoard 1CG で DPU-PYNQ をやってみる1
ZUBoard 1CG で PYNQ v3.0.1 を動作させたが、そこにDPU-PYNQ をインストールした。
ZUBoard 1CG で DPU-PYNQ をやってみる2
前回は、ZUBoard 1CG で PYNQ v3.0.1 を動作させたが、そこにDPU-PYNQ をインストールした。そして、ノートブックの内の dpu_mnist_classifier.ipynb をやってみたところ、成功した。今回は、dpu_resnet50.ipynb と dpu_resnet50_pybind11.ipynb をやってみた。
ZUBoard 1CG で DPU-PYNQ をやってみる3
ZUBoard 1CG の PYNQ v3.0.1 上に DPU-PYNQ をインストールして、ノートブックを実行している。前回は、dpu_resnet50.ipynb と dpu_resnet50_pybind11.ipynb をやってみた。今回は、dpu_tf_inceptionv1.ipynb と dpu_yolov3.ipynb をやってみた。

”Getting Started with PYNQ and the ZUBoard”をやってみる1
Adam Taylor さんの”Getting Started with PYNQ and the ZUBoard”をやってみよう。
”Getting Started with PYNQ and the ZUBoard”をやってみる2
Adam Taylor さんの”Getting Started with PYNQ and the ZUBoard”をやってみようということで、前回は、PYNQ の github リポジトリを git clone して、PYNQ リポジトリの下の boards/ip/hls ディレクトリに行って、build_ip.sh を実行して、Vitis HLS の IP を生成した。Vivado 2023.1 で test_pattarn_gen プロジェクトを作成し、生成した IP を IP Catlog に登録した。今回は、前回、生成した IP を使用してテスト・パターン・ジェネレーターのブロック・デザインを作成した。次に、Video Test Pattern Generator と AXI Video Direct Memory Access を Add IP して、自動配線を行った。
”Getting Started with PYNQ and the ZUBoard”をやってみる3
前回は、生成した IP を使用してテスト・パターン・ジェネレーターのブロック・デザインを作成した。次に、Video Test Pattern Generator と AXI Video Direct Memory Access を Add IP して、自動配線を行った。今回は、Color Convert (2ppc) IP と Pixel Pack (2 ppc) IP、 AXI Interrupt Controller IP を追加して、自動配線を行った。Validate Desgin を行ったところ、成功した。よって、ブロック・デザインが完成した。
”Getting Started with PYNQ and the ZUBoard”をやってみる4
前回は、Color Convert (2ppc) IP と Pixel Pack (2 ppc) IP、 AXI Interrupt Controller IP を追加して、自動配線を行った。Validate Desgin を行ったところ、成功した。よって、ブロック・デザインが完成した。今回は、ブロック・デザインの HDL Wrapper ファイルを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。bit ファイルと hwh ファイルが生成された。
”Getting Started with PYNQ and the ZUBoard”をやってみる5
前回は、ブロック・デザインの HDL Wrapper ファイルを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。bit ファイルと hwh ファイルが生成された。今回は、前回生成した bit ファイルと hwh ファイルを ZUBoard 1CG の PYNQ v3.0.1 に転送し、”Getting Started with PYNQ and the ZUBoard”の Python3 のソフトウェアを動作せたところ、成功した。

RGB 24 ビットの AXI4-Stream データ入出力対応のソーベル・フィルタを Vitis HLS 2023.1 で作成する
ソーベル・フィルタを ZUBoard 1CG の PYNQ v3.0.1 で使用するために Vitis HLS 2023.1 で RGB 24 ビットの AXI4-Stream データ入出力対応のソーベル・フィルタを Vitis HLS 2023.1 で作成した。
ZUBoard 1CG の PYNQ v3.0.1 で自作のソーベル・フィルタを動作させる1
”RGB 24 ビットの AXI4-Stream データ入出力対応のソーベル・フィルタを Vitis HLS 2023.1 で作成する”で Vitis HLS 2023.1 を使用して、ソーベル・フィルタ IP の sobel_axis_RGB24 を作成した。今回は、Vivado 2023.1 の sobel_pynq プロジェクトを作成し、sobel_axis_RGB24 を使用して、sobel ブロック・デザインを作成した。論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。hwh ファイルと bit ファイルが生成された。
ZUBoard 1CG の PYNQ v3.0.1 で自作のソーベル・フィルタを動作させる2
前回は、Vivado 2023.1 の sobel_pynq プロジェクトを作成し、sobel_axis_RGB24 を使用して、sobel ブロック・デザインを作成した。論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。hwh ファイルと bit ファイルが生成された。今回は、hwh ファイルと bit ファイル、画像ファイルを ZUBoard 1CG に転送し、Jupyter Notebook を作成し、ソーベル・フィルタの動作を確認した。

RGB 24 ビットの AXI4-Stream データ入出力対応のメディアン・フィルタを Vitis HLS 2023.1 で作成する1
メディアン・フィルタを ZUBoard 1CG の PYNQ v3.0.1 で使用するために Vitis HLS 2023.1 で RGB 24 ビットの AXI4-Stream データ入出力対応のメディアン・フィルタを Vitis HLS 2023.1 で作成した。
RGB 24 ビットの AXI4-Stream データ入出力対応のメディアン・フィルタを Vitis HLS 2023.1 で作成する2
メディアン・フィルタを ZUBoard 1CG の PYNQ v3.0.1 で使用するために Vitis HLS 2023.1 で RGB 24 ビットの AXI4-Stream データ入出力対応のメディアン・フィルタを Vitis HLS 2023.1 で作成するということで、前回は、Vitis HLS 2023.1 で median_axis_RGB24 プロジェクトを作成し、C シミュレーションを行った。今回は、C コードの合成、C/RTL 協調シミュレーション、Export RTL、Implementation を行った。
ZUBoard 1CG の PYNQ v3.0.1 で自作のメディアン・フィルタとソーベル・フィルタを動作させる1
”RGB 24 ビットの AXI4-Stream データ入出力対応のメディアン・フィルタを Vitis HLS 2023.1 で作成する2”でメディアン・フィルタが作成できた。その medain_axis_RGB24 IP を”ZUBoard 1CG の PYNQ v3.0.1 で自作のソーベル・フィルタを動作させる1”で作成したブロック・デザインに追加した。
ZUBoard 1CG の PYNQ v3.0.1 で自作のメディアン・フィルタとソーベル・フィルタを動作させる2
”RGB 24 ビットの AXI4-Stream データ入出力対応のメディアン・フィルタを Vitis HLS 2023.1 で作成する2”で作成したメディアン・フィルタを使ってみようということで、前回は、medain_axis_RGB24 IP を”ZUBoard 1CG の PYNQ v3.0.1 で自作のソーベル・フィルタを動作させる1”で作成したブロック・デザインに追加した。今回は、作成したブロック・デザインの HDL Wrapper ファイルを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。hwh ファイルと bit ファイルが生成された。
ZUBoard 1CG の PYNQ v3.0.1 で自作のメディアン・フィルタとソーベル・フィルタを動作させる3
前回は、作成したブロック・デザインの HDL Wrapper ファイルを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。hwh ファイルと bit ファイルが生成された。今回は、生成されたビット・ファイルと hwh ファイルを ZUBoard 1CG 上の Jupyter Notebook にアップロードし、median_sobel.ipynb ファイルを作成して、メディアン・フィルタとソーベル・フィルタの動作を確認したところ動作した。

AVNET からダウンロードした BSP を使って、Petalinux プロジェクトを作成して、xmutil をやってみたがやはりエラーだった(Ver. 2022.1)
”AVNET からダウンロードした BSP を使って、Petalinux プロジェクトを作成して、xmutil をやってみたがやはりエラーだった”で Ver. 2022.2 の BSP をダウンロードして、Petalinux 2022.2 でやってみたが、エラーだった。今回は、Ver. 2022.1 の BSP をダウンロードして、Petalinux 2022.1 でやってみたが、エラーだった。

RGB 24 ビットの AXI4-Stream データ入出力対応のガウシアン・フィルタを Vitis HLS 2023.1 で作成する1
RGB 24 ビットの AXI4-Stream データ入出力対応のソーベル・フィルタを Vitis HLS 2023.1 で作成した。
RGB 24 ビットの AXI4-Stream データ入出力対応のガウシアン・フィルタを Vitis HLS 2023.1 で作成する2
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 を行った。

ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる1
”RGB 24 ビットの AXI4-Stream データ入出力対応のガウシアン・フィルタを Vitis HLS 2023.1 で作成する2”でガウシアン・フィルタ IP が生成できた。その gaussian_axis_RGB24 IP を”ZUBoard 1CG の PYNQ v3.0.1 で自作のメディアン・フィルタとソーベル・フィルタを動作させる1”のソーベル・フィルタとメディアン・フィルタの回路に追加した。
ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる2
前回は、”RGB 24 ビットの AXI4-Stream データ入出力対応のガウシアン・フィルタを Vitis HLS 2023.1 で作成する2”でガウシアン・フィルタ IP が生成できた。その gaussian_axis_RGB24 IP を”ZUBoard 1CG の PYNQ v3.0.1 で自作のメディアン・フィルタとソーベル・フィルタを動作させる1”のソーベル・フィルタとメディアン・フィルタの回路に追加した。今回は、i3filters ブロック・デザインの axis_dwidth_converter_0 と axis_dwidth_converter_1 に System ILA を追加して、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。hwh ファイルと bit ファイルが生成された。
ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる3
前回は、i3filters ブロック・デザインの axis_dwidth_converter_0 と axis_dwidth_converter_1 に System ILA を追加して、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。hwh ファイルと bit ファイルが生成された。今回は、生成されたビット・ファイルと hwh ファイルを ZUBoard 1CG 上の Jupyter Notebook にアップロードし、i3filters.ipynb ファイルを作成して、メディアン・フィルタとソーベル・フィルタの動作を確認したところ動作した。
ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる4
前回は、生成されたビット・ファイルと hwh ファイルを ZUBoard 1CG 上の Jupyter Notebook にアップロードし、i3filters.ipynb ファイルを作成して、メディアン・フィルタとソーベル・フィルタの動作を確認したところ動作した。
しかし、”AXI4-Stream Data Width Converter のバイト・レーン変換を確認する4”で、3 バイト幅の AXI4-Stream インターフェースの色のフィールドが MSB から BGR であることがわかった。今までは RGB のつもりで各フィルタの IP を作成していた。今回は、色のフィールドの修正のため AXI4-Stream Subset Converter を 2 個、i3filters ブロック・デザインに追加して、バイト・レーンの変換を行った。その後、論理合成、インプリメンテーション、ビットストリームの生成を行って、ZUBoard 1CG の PYNQ Linux にアップロードして、動作を確認したところ問題なく動作した。

MicroZed Chronicles: UIO をやってみる1
”MicroZed Chronicles: UIO Part One - Introduction and Set Up”と”MicroZed Chronicles: UIO Part Two - Creating Software Applications”をやってみよう。なお、関連する MicroZed Chronicles のブログの”MicroZed Chronicles: IOCTL SPI, I2C and PetaLinux”も参考にしている。
今回は、Vivado 2022.2 で ZUBoard 1CG 用の myproj プロジェクトを作成した。
MicroZed Chronicles: UIO をやってみる2
前回は、Vivado 2022.2 で ZUBoard 1CG 用の myproj プロジェクトを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行った。しかし、ビットストリームの生成で、出力ピンの成約がないということで、エ ラーになった。今回は、出力ピンの成約が無い SPI を削除して、論理合成、インプリメンテーション、ビットストリームの生成を行ったところ成功した。ハードウェアをエクスポートして、XSA ファイルを生成した。
MicroZed Chronicles: UIO をやってみる3
前回は、出力ピンの成約が無い SPI を削除して、論理合成、インプリメンテーション、ビットストリームの生成を行ったところ成功した。ハードウェアをエクスポートして、XSA ファイルを生成した。今回は、Petalinux 2022.2 を使用して、プロジェクトを作成し、設定を行ってからビルドをして成功した。BOOT.BIN を作成した。
MicroZed Chronicles: UIO をやってみる4
前回は、Petalinux 2022.2 を使用して、プロジェクトを作成し、設定を行ってからビルドをして成功した。BOOT.BIN を作成した。今回は、生成された BOOT.BIN, boot.scr, image.ub を FAT32 でフォーマットされた MicroSD カードに書いて、ZUBoard 1CG に挿入し電源ONした。Petalinux 2022.2 が立ち上がって、I2C と UIO を確認することができた。
MicroZed Chronicles: UIO をやってみる5
前回は、生成された BOOT.BIN, boot.scr, image.ub を FAT32 でフォーマットされた MicroSD カードに書いて、ZUBoard 1CG に挿入し電源ONした。Petalinux 2022.2 が立ち上がって、I2C と UIO を確認することができた。今回は、uio にマップされた物理アドレスを確認してから、gpio_0 の GPIO の接続されている PL ボタンの割り込みを確認した。更に、gpio_0 の GPIO2 に接続された D4 の RGB LED の動作を確認した。
MicroZed Chronicles: UIO をやってみる6
前回は、”MicroZed Chronicles: UIO Part One - Introduction and Set Up”に沿って、devmem コマンドを使用して、SW3 の PL ボタンを使用した割り込みと D4 の RGB LED の動作を確認した。今回は、”MicroZed Chronicles: IOCTL SPI, I2C and PetaLinux” を参考に Vitis プロジェクトを作成し、C ファイルを作成して、ビルドを行って成功した。
MicroZed Chronicles: UIO をやってみる7
前回は、”MicroZed Chronicles: IOCTL SPI, I2C and PetaLinux” を参考に Vitis プロジェクトを作成し、C ファイルを作成して、ビルドを行って成功した。今回は、”MicroZed Chronicles: IOCTL SPI, I2C and PetaLinux” を参考に、前回作成した Vitis のアプリケーション・プロジェクトをデバッグ・モードで実行してみたが、エラーになって実行できなかった。
MicroZed Chronicles: UIO をやってみる8
前回は、”MicroZed Chronicles: IOCTL SPI, I2C and PetaLinux” を参考に、前回作成した Vitis のアプリケーション・プロジェクトをデバッグ・モードで実行してみたが、エラーになって実行できなかった。今回は、root で Vitis を起動してやってみたが同様のエラーだった。次に、通常に Vitis を起動して、Remote Working Directory を /home/petalinux にしてみたところ、デバッグができて、ソフトウェアの動作がうまくいった。
MicroZed Chronicles: UIO をやってみる9
前回は、root で Vitis を起動してやってみたが同様のエラーだった。次に、通常に Vitis を起動して、Remote Working Directory を /home/petalinux にしてみたところ、デバッグができて、ソフトウェアの動作がうまくいった。今回は、RAM ディスクでやっているのが煩わしいので、Rootfs を MicroSD カードの第 2 パーティションにしようとしたが、Petalinux が起動途中で Kernel panic で落ちてしまった。

ZUBoard 1CG の PYNQ v3.0.1 で自作の 4 個のフィルタを動作させる1
”Vitis HLS 2023.1 で RGB の各色を n 倍する color_converter_RGB24 IP を作成する2”で作成した color_converter_RGB24 IP を”ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる4”の回路に追加してみよう。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 4 個のフィルタを動作させる2
”Vitis HLS 2023.1 で RGB の各色を n 倍する color_converter_RGB24 IP を作成する2”で作成した color_converter_RGB24 IP を”ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる4”の回路に追加してみようということで、前回は、最初に Vivado 2023.1 の i4filters プロジェクトを新規作成した。また、i3filters プロジェクトでエクスポートしたブロック・デザイン作成 tcl ファイルを元に i4filters ブロック・デザインを作成し、color_converter_RGB24 IP を挿入した。今回は、i4flilters ブロック・デザインのラッパーファイルを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。PYNQ で使用する hwh ファイルと、bit ファイルが生成された。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 4 個のフィルタを動作させる3
”Vitis HLS 2023.1 で RGB の各色を n 倍する color_converter_RGB24 IP を作成する2”で作成した color_converter_RGB24 IP を”ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる4”の回路に追加してみようということで、前回は、i4flilters ブロック・デザインのラッパーファイルを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。PYNQ で使用する hwh ファイルと、bit ファイルが生成された。今回は、”メディアン・フィルタとガウシアン・フィルタが RBG 出力でバグっていた”で、median_axis_RGB24 IP と gaussian_axis_RGB24 IP がバグっているのがわかった。Vitis HLS 2023.1 を起動して、median_axis_RGB24 IP と gaussian_axis_RGB24 IP をバグを修正してから、C シミュレーション、C コードの合成、Export RTL を行った。できた IP を Vivado 2023.1 の i4filters プロジェクトの median_axis_RGB24 IP と gaussian_axis_RGB24 IP と入れ替えて、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 4 個のフィルタを動作させる4
前回は、”メディアン・フィルタとガウシアン・フィルタが RBG 出力でバグっていた”で、median_axis_RGB24 IP と gaussian_axis_RGB24 IP がバグっているのがわかった。Vitis HLS 2023.1 を起動して、median_axis_RGB24 IP と gaussian_axis_RGB24 IP をバグを修正してから、C シミュレーション、C コードの合成、Export RTL を行った。できた IP を Vivado 2023.1 の i4filters プロジェクトの median_axis_RGB24 IP と gaussian_axis_RGB24 IP と入れ替えて、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。今回は、hwh ファイルと bit ファイルを ZUBoard 1CG の PYNQ Linux にアップロードし、i4filters.ipynb を作成した。i4filters.ipynb を実行したところ、無事に”Vitis HLS 2023.1 で RGB の各色を n 倍する color_converter_RGB24 IP を作成する2”で作成した color_converter_RGB24 IP を動作させることができた。

ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる1
今まで ZUBoard 1CG の PYNQ Linux で動作させてきた i4filters プロジェクトの回路を Petalinux で動作させてみよう。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる2
今まで ZUBoard 1CG の PYNQ Linux で動作させてきた i4filters プロジェクトの回路を Petalinux で動作させてみようということで、前回は、Petalinux 2022.2 で zub1cg_i4flilters プロジェクトを作成し、i4filters プロジェクトのハードウェアをインポートした。RootFS に sudo, dnf, OpenCV の設定を行ってから、ビルドを行って成功した。ファイルを MicroSD カードに書いて、ZUBoard 1CG でブートしたところ、ブートの途中でエラーで停止した。今回は、異なるハードウェアだが、うまく行った”MicroZed Chronicles: UIO をやってみる3”の設定を使用してやってみたところ、ビルドが成功して、Micro SD カードに書いて ZUBoard 1CG でブートしたところ、Petalinux 2022.2 が起動した。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる3
前回は、異なるハードウェアだが、うまく行った”MicroZed Chronicles: UIO をやってみる3”の設定を使用してやってみたところ、ビルドが成功して、Micro SD カードに書いて ZUBoard 1CG でブートしたところ、Petalinux 2022.2 が起動した。今回は、ZUBoard 1CG で起動した Petalinux 2022.2 で uio を確認した。sftp を試したところ、ZUBoard 1CG の Petalinux 2022.2 にログインできなかった。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる4
前回は、ZUBoard 1CG で起動した Petalinux 2022.2 で uio を確認した。sftp を試したところ、ZUBoard 1CG の Petalinux 2022.2 にログインできなかった。今回は、sftp で ZUBoard 1CG で起動した Petalinux 2022.2 にログインできるように openssh-sftp-server パッケージをインストールしたら sftp でログインすることができた。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる5
前回は、sftp で ZUBoard 1CG で起動した Petalinux 2022.2 にログインできるように openssh-sftp-server パッケージをインストールしたら sftp でログインすることができた。pcmanfm を動作させることができた。今回は、Vitis 2022.2 を起動して、 zub1cg_i4filters_pf プラットフォーム・プロジェクトと zub1cg_i4filters_system アプリケーション・プロジェクトを作成した。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6
前回は、Vitis 2022.2 を起動して、 zub1cg_i4filters_pf プラットフォーム・プロジェクトと zub1cg_i4filters_system アプリケーション・プロジェクトを作成した。今回は、アプリケーション・プロジェクトでソフトウェアを書きながら OpenCV のインストールを試していたのだが、やはりインストールできなかった。仕方がないので、bmp_header.h を使用して、BMP ファイルをロードしてやることにしたが、そのためにはハードウェアを変更する必要がある。ということで、ハードウェアを変更することにした。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる7
前回は、アプリケーション・プロジェクトでソフトウェアを書きながら OpenCV のインストールを試していたのだが、やはりインストールできなかった。仕方がないので、bmp_header.h を使用して、BMP ファイルをロードしてやることにしたが、そのためにはハードウェアを変更する必要がある。ということで、ハードウェアを変更することにした。今回は、そのハードウェアに合 わせて、Petalinux プロジェクトを作成し、ビルドした。BOOT.BIN を作成し、Micro SD カードにファイルをコピーして、Petalinux 2022.2 を起動した。

u-dma-buf を ZUBoard 1CG 用の Petalinux 2022.2 でビルドする
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”の AXI DMA IP を動作させるために u-dma-buf が必要となるので、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる7”の Petalinux 2022.2 で u-dma-buf をビルドした。

ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる8
前回は、そのハードウェアに合わせて、Petalinux プロジェクトを作成し、ビルドした。BOOT.BIN を作成し、Micro SD カードにファイルをコピーして、Petalinux 2022.2 を起動した。今回は、”u-dma-buf を ZUBoard 1CG 用の Petalinux 2022.2 でビルドする”でビルドした u-dma-buf.ko を SFTP で ZUBoard 1CG の Petalinux 2022.2 にアップロードして、動作を確認した。UIO の状態も確認できた。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる9
前回は、”u-dma-buf を ZUBoard 1CG 用の Petalinux 2022.2 でビルドする”でビルドした u-dma-buf.ko を SFTP で ZUBoard 1CG の Petalinux 2022.2 にアップロードして、動作を確認した。UIO の状態も確認できた。今回は、Vits 2022.2 を起動して、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”の XSA ファイルを使用して、zub1cg_i4filters_peta_pf プラットフォーム・プロジェクトと zub1cg_i4filters_peta_system アプリケーション・プロジェクトを作成した。zub1cg_i4filters_peta.c と bmp_header.h を追加して、ビルドし成功した。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる10
前回は、Vits 2022.2 を起動して、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”の XSA ファイルを使用して、zub1cg_i4filters_peta_pf プラットフォーム・プロジェクトと zub1cg_i4filters_peta_system アプリケーション・プロジェクトを作成した。zub1cg_i4filters_peta.c と bmp_header.h を追加して、ビルドし成功した。今回は、前回作成した zub1cg_i4filters_peta.elf をデバック・モードで起動したが、u-dma-buf のメモリを使用するところで、Segmentation violation でエラーになった。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる11
前回は、zub1cg_i4filters_peta.elf をデバック・モードで起動したが、u-dma-buf のメモリを使用するところで、Segmentation violation でエラーになった。今回は、エラーの原因がわかったので、修正して、もう一度試してみたところ、ソーベル・フィルタ処理後の画像ファイルが生成された。成功だ。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる12
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる11”でガウシアン・フィルタ、メディアン・フィルタ、ソーベル・フィルタの回路を C 言語のソースコードで動作させることができた。
しかし、それは、PYNQ で使用している回路ではなく、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる6”で作成した回路だった。
FPGAの部屋の過去の記事を見返してみると、”kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる24”が見つかって、その記事での C ソースコードは、Python の PIL ライブラリの image() で読み込める形にできるようなので、これを元に、”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる11”を書き換えようと思う。
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる5”で Vitis 2022.2 のプラットフォームとアプリケーション・プロジェクトは作成済みなので、そこにソースコードを追加しよう。
ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる13
”ZUBoard 1CG の i4filters プロジェクトの回路を Petalinux で動作させる5”で作成した Vitis 2022.2 のアプリケーション・プロジェクトに C 言語のソースコードを書いて、PYNQ で動作させている回路で、動かしたところ、成功した。

ZUBoard 1CG の PYNQ v3.0.1 で自作の 5 個のフィルタを動作させる1
ZUBoard 1CG の PYNQ v3.0.1 で自作の 4 個のフィルタは動作させることができているので、次は RGB24toHSV - HSVConverter - HSVtoRGB24 の各 IP を加えた 5 個のフィルタを動作させたい。今回は、Vivado 2023.2 で i5filters プロジェクトを作成し、i4filters プロジェクトでブロック・デザインを出力した i4filters.tcl を i5filters.tcl に改名し、少々手直したあとで、i5filters プロジェクトで動作させてブロック・デザインを作成した。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 5 個のフィルタを動作させる2
RGB24toHSV - HSVConverter - HSVtoRGB24 の各 IP を加えた 5 個のフィルタを動作させたいということで、前回は、Vivado 2023.2 で i5filters プロジェクトを作成し、i4filters プロジェクトでブロック・デザインを出力した i4filters.tcl を i5filters.tcl に改名し、少々手直したあとで、i5filters プロジェクトで動作させてブロック・デザインを作成した。今回は、RGB24toHSV - HSVConverter - HSVtoRGB24 の各 IP を加えたところ、HSVtoRGB24 IP に col_size の入力ポートが付いていたが、これはバグだ。正しくは、AXI4-Liteインターフェースのレジスタになるはずだった。そこで、Vitis HLS 2023.1 を起動して、バグを修正し、もう一度、HSVtoRGB24 IP をブロック・デザインに追加した。論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 5 個のフィルタを動作させる3
前回は、RGB24toHSV - HSVConverter - HSVtoRGB24 の各 IP を加えたところ、HSVtoRGB24 IP に col_size の入力ポートが付いていたが、これはバグだ。正しくは、AXI4-Liteインターフェースのレジスタになるはずだった。そこで、Vitis HLS 2023.1 を起動して、バグを修正し、もう一度、HSVtoRGB24 IP をブロック・デザインに追加した。論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。今回は、ZUBoard 1CG の PYNQ を立ち上げて、upyter Notebook 上で i5filters フォルダを作成し、Jupyter Notebook で前回作成したビット・ファイルと hwh ファイルをアップグレードした。画像ファイルを用意して、i5filters.ipynb ファイルを作成し、実行したところ、真っ黒な画像が得られた。デバッグの必要がある。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 5 個のフィルタを動作させる4
前回は、ZUBoard 1CG の PYNQ を立ち上げて、upyter Notebook 上で i5filters フォルダを作成し、Jupyter Notebook で前回作成したビット・ファイルと hwh ファイルをアップグレードした。画像ファイルを用意して、i5filters.ipynb ファイルを作成し、実行したところ、真っ黒な画像が得られた。デバッグの必要がある。今回は、System ILA を追加して、論理合成、インプリメンテーション、ビットストリームの生成を行って、再度、bit ファイルと hwh ファイルを ZUBoard 1CG の PYNQ にアップロードして、ILA ダッシュボードを起動して、波形を確認したところ、問題ないことがわかった。画像も正常に表示されていた。結局、昨日の 1 回のみバグっただけで、今日は何回やっても画像が表示された。なんだったんだろうか?
ZUBoard 1CG の PYNQ v3.0.1 で自作の 5 個のフィルタを動作させる5
前回は、System ILA を追加して、論理合成、インプリメンテーション、ビットストリームの生成を行って、再度、bit ファイルと hwh ファイルを ZUBoard 1CG の PYNQ にアップロードして、ILA ダッシュボードを起動して、波形を確認したところ、問題ないことがわかった。画像も正常に表示されていた。結局、昨日の 1 回のみバグっただけで、今日は何回やっても画像が表示された。今回は、バグが無かったので、正常に HSVConverter を PYNQ 上で試したところ、うまく行った。

ZUBoard 1CG の PYNQ v3.0.1 で自作の 10 個のフィルタを動作させる1
ZUBoard 1CG の PYNQ v3.0.1 で自作の今まで作成してきた 10 個のフィルタを動作させよう。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 10 個のフィルタを動作させる2
今まで Vitis HLS で作成したすべてのフィルタを実装したいということで、前回は、Vivado 2023.2 で i10filters プロジェクトを作成し、i5filters プロジェクトでブロック・デザインを出力した i5filters.tcl を i10filters.tcl に改名し、少々手直したあとで、i10filters プロジェクトで動作させてブロック・デザインを作成した。今回は、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 ディレクトリを作成し、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 の各 IP をブロック・デザインに追加してブロック・デザインを完成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 10 個のフィルタを動作させる3
前回は、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 ディレクトリを作成し、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 の各 IP をブロック・デザインに追加してブロック・デザインを完成し、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。今回は、ZUBoard 1CG の Pynq Linux を起動して、Jupyter Notebook の i5filters ディレクトリのファイルを Jupyter Notebook 経由でコピーしようとしたら、 エラーになったので、ターミナルのコマンドでコピーを行った。次に i10filters_wrapper.bit と i10filters.hwh ファイルをアップロードし、i10filters_wrapper.bit は i10filters.bit に名前を変更した。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 10 個のフィルタを動作させる4
前回は、ZUBoard 1CG の Pynq Linux を起動して、Jupyter Notebook の i5filters ディレクトリのファイルを Jupyter Notebook 経由でコピーしようとしたら、 エラーになったので、ターミナルのコマンドでコピーを行った。次に i10filters_wrapper.bit と i10filters.hwh ファイルをアップロードし、i10filters_wrapper.bit は i10filters.bit に名前を変更した。今回は、Jupyter Notebook のファイル i10filters.ipynb を編集して、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 ディレクトリを作成し、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 の各 IP の Python コードを追加した。平均化フィルタ(average_axis_RGB24)のみをアクティブにした。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 10 個のフィルタを動作させる5
前回は、Jupyter Notebook のファイル i10filters.ipynb を編集して、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 ディレクトリを作成し、average_axis_RGB24, edge_enhancement_axis_RGB24, laplacian_axis_RGB24, min_max_axis_RGB24, unsharp_masking_axis_RGB24 の各 IP の Python コードを追加した。平均化フィルタ(average_axis_RGB24)のみをアクティブにした。今回は、平均化フィルタを掛けた画像にラプラシアン・フィルタを掛け た。また、原画像、メディアン・フィルタ、最小値フィルタのラプラシアン・フィルタ処理結果を示した。
ZUBoard 1CG の PYNQ v3.0.1 で自作の 10 個のフィルタを動作させる6
前回は、平均化フィルタを掛けた画像にラプラシアン・フィルタを掛けた。また、原画像、メディ アン・フィルタ、最小値フィルタのラプラシアン・フィルタ処理結果を示した。今回は、アンシャープ・マスキング・フィルタとエッジ強調フィルタを使用した。

Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみる1
Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみたい。
Vivado 2023.2 で ZUBoard 1CG 用の bambu_median プロジェクトを作成し、Bambu で高位合成した median_hlsst_RGB24 を使った bambu_median ブロック・デザインを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行ってビット・ファイルを作成する。
今回は、Vivado 2023.2 で ZUBoard 1CG 用の bambu_median プロジェクトを作成し、ブロック・デザインを作成する前の準備を行って、bambu_median ブロック・デザインを作成し、median_hlsst_RGB24.v をブロック・デザインに追加した。
Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみる2
Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみたいということで、前回は、Vivado 2023.2 で ZUBoard 1CG 用の bambu_median プロジェクトを作成し、ブロック・デザインを作成する前の準備を行って、bambu_median ブロック・デザインを作成し、median_hlsst_RGB24.v をブロック・デザインに追加した。今回は、bambu_median ブロック・デザインを完成させた。
Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみる3
前回は、bambu_median ブロック・デザインを完成させた。今回は、HDL ラッパー・ファイルを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って、bit ファイルと hwh ファイルを生成した。
Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみる4
前回は、HDL ラッパー・ファイルを生成し、論理合成、インプリメンテーション、ビットストリームの生成を行って、bit ファイルと hwh ファイルを生成した。今回は、System ILA を追加するのを忘れていたので、System ILA を追加して、もう一度、論理合成、インプリメンテーション、ビットストリームの生成を行って、bit ファイルと hwh ファイルを生成した。
Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみる5
前回は、System ILA を追加するのを忘れていたので、System ILA を追加して、もう一度、論理合成、インプリメンテーション、ビットストリームの生成を行って、bit ファイルと hwh ファイルを生成した。今回は、前回作成した bit ファイルと hwh ファイルを ZUBoard 1CG の PYNQ Linux の Jupyter Notebook 上にアップロードして動作を確認したが、dma.recvchannel.wait() でエラーになった。
Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみる6
前回は、bit ファイルと hwh ファイルを ZUBoard 1CG の PYNQ Linux の Jupyter Notebook 上にアップロードして動作を確認したが、dma.recvchannel.wait() でエラーになった。今回は、ILA ダッシュボードで波形を観測したところ、問題なく各モジュールが動作していたので、そ~ベル・フィルタの出力画像を確認したところ、問題なく画像が表示された。多分、 Bambu で作成したメディアン・フィルタ IP からTLAST が出力されないのが問題のようだ?

Bambu で実装した hls stream インターフェースのメディアン・フィルタに tlast を追加する1
”Bambu で高位合成した median_hlsst_RGB24 を ZUBoard 1CG の PYNQ で試してみる6”で AXI DMA を正常に動作させるためには AXI4-Stream インターフェースの tlast が必要ということが分かった。よって、”Bambu で hls stream インターフェースのメディアン・フィルタを高位合成する1”で実装した median_hlsst_RGB24 に tlast を追加する。
Bambu で実装した hls stream インターフェースのメディアン・フィルタに tlast を追加する2
median_hlsst_RGB24 に tlast を追加するということで、前回は、median_hlsst_RGB24.cpp を変更し、outs 出力ストリームのデータ・ビット幅を 1 ビット増やして、そこに tlast の機能を割り当てた。そして、g++ コンパイラでコンパイルし動作を確認した。今回は、median_hlsst_RGB24.cpp を Bambu で高位合成して、median_hlsst_RGB24.v を生成した。
Bambu で実装した hls stream インターフェースのメディアン・フィルタに tlast を追加する3
前回は、median_hlsst_RGB24.cpp を Bambu で高位合成して、median_hlsst_RGB24.v を生成した。今回は、Cocotb でシミュレーションを行って、tlast が正常に出力できているのが確認できた。
Bambu で実装した hls stream インターフェースのメディアン・フィルタに tlast を追加する4
前回は、Cocotb でシミュレーションを行って、tlast が正常に出力できているのが確認できた。今回は、Bambu で生成された median_hlsst_RGB24.v を Vivado 2023.2 の bambu_median プロジェクトの median_hlsst_RGB24.v と入れ替えて、tdata と tlast を出力できるように Slice を追加した。その後、論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。
Bambu で実装した hls stream インターフェースのメディアン・フィルタに tlast を追加する5
前回は、Bambu で生成された median_hlsst_RGB24.v を Vivado 2023.2 の bambu_median プロジェクトの median_hlsst_RGB24.v と入れ替えて、tdata と tlast を出力できるように Slice を追加した。その後、論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。今回は、前回作成した bit ファイルと hwh ファイルを ZUBoard 1CG の PYNQ Linux の Jupyter Notebook 上にアップロードして動作を確認したところ、問題なく動作した。



inserted by FC2 system