”
ZUBoard 1CG の PYNQ v3.0.1 で自作のガウシアン・フィルタ、メディアン・フィルタとソーベル・フィルタを動作させる3”の続き。
前回は、生成されたビット・ファイルと 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 にアップロードして、動作を確認したところ問題なく動作した。
Vivado 2023.1 の i3fliters プロジェクトで、i3filters ブロック・デザインに AXI4-Stream Subset Converter を 2 個追加した。
XI4-Stream Subset Converter の設定は共通で、Slave Interface と Master Interface の TDATA width (bytes) を 3 に設定した。
TDATA Remap String を tdata[7:0], tdata[15:8], tdata[23:16] に設定した。つまり 1番めのバイト・レーンと 3 番めのバイト・レーンを入れ替えた。

完成した i3filters ブロック・デザインを示す。

Address Editor 画面を示す。

論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。
Project Summary を示す。

ZUBoard 1CG の PYNQ LInux の ~/jupter_notebooks/example/i3filters ディレクトリの i3filters.bit と i3filters.hwh ファイルを Jupyter Notebook 画面から消去した。
以下のファイルを FileZilla を使って、ZUBoard 1CG の PYNQ Linux のホーム・ディレクトリにアップロードした。
HDL/2023.1/zub1cg/i3filters/i3filters.runs/impl_1/i3filters_wrapper.bit
HDL/2023.1/zub1cg/i3filters/i3filters.gen/sources_1/bd/i3filters/hw_handoff/i3filters.hwh
ファイルをホーム・ディレクトリから ~/jupyter_notebooks/examples/i3filters ディレクトリにコピーした。
cd
sudo mv i3filters.hwh jupyter_notebooks/examples/i3filters
mv i3filters_wrapper.bit jupyter_notebooks/examples/i3filters/i3filters.bit現在の ~/jupyter_notebooks/examples/i3filters ディレクトリを示す。

test2.jpg を Image.open() でオープンするように i3filters.ipynb を書き換えた。
image_path = "./test2.jpg"
#image_path = "./blue.bmp"
#image_path = "./green.bmp"
#image_path = "./red.bmp"
original_image = Image.open(image_path)
ガウシアン・フィルタはスルー、メディアン・フィルタとソーベル・フィルタは有効に設定した。
gaussian.register_map.row_size = height
gaussian.register_map.col_size = width
gaussian.register_map.function_r = 2 # ORG_IMGwAxiDma
#gaussian.register_map.function_r = 3 # GAUSSIANwAxiDma
median.register_map.row_size = height
median.register_map.col_size = width
#median.register_map.function_r = 2 # ORG_IMGwAxiDma
median.register_map.function_r = 3 # MEDIANwAxiDma
sobel.register_map.row_size = height
sobel.register_map.col_size = width
#sobel.register_map.function_r = 2 # ORG_IMGwAxiDma
sobel.register_map.function_r = 3 # SOBELwAxiDma
実行結果を示す。

”
ZUBoard 1CG の PYNQ v3.0.1 で自作のメディアン・フィルタとソーベル・フィルタを動作させる3”の実行結果と比べてみたが、見た目には変わらないな。。。
- 2023年09月02日 12:19 |
- ZUBoard
-
| トラックバック:0
-
| コメント:0