FC2カウンター FPGAの部屋 AXI4-Stream Data Width Converter のバイト・レーン変換を確認する3
fc2ブログ

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

FPGAの部屋

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

AXI4-Stream Data Width Converter のバイト・レーン変換を確認する3

AXI4-Stream Data Width Converter のバイト・レーン変換を確認する2”の続き。

Pythonの画像処理ライブラリPillow(PIL)の Image.open でオープンした画像ファイルのフォーマットを確認するということで、前回は、PNG の画像ファイルを ZUBoard 1CG の PYNQ Linux にアップロードし、Jupter Notebook を書き換えて実行したところ、PNG の画像ファイルは 4 チャネルでエラーが出てしまった。今回は、blue.bmp、 green.bmp、 red.bmp を用意して、ZUBoard 1CG の PYNQ Linux にアップロードし、Jupter Notebook を書き換えて実行したところ、AXI4-Stream Data Width Converter で変換された 3 バイトの AXI4-Stream は上のバイトから RGB でなく BGR であることがわかった。

特殊な BMP ファイルを Pinta で作った。
青、緑、赤それぞれ、最初のピクセルから 4 個だけ、値を 0xff, 0xfe, 0xfd, 0xfc にした。他のピクセルは 0xff とした。
blue.bmp、 green.bmp、 red.bmp を作成した。
下の図は、red.bmp の 4 番めのピクセルを 0xfc (252) にしたところだ。
zub1cg_pynq_215_230830.png

プライマリー色を赤 252 にして、鉛筆ツールで 4 番めのピクセルを書き換えた。
zub1cg_pynq_216_230830.png

出来上がった blue.bmp、 green.bmp、 red.bmp の画像ファイルを ZUBoard 1CG の PYNQ Linux にアップロードした。
zub1cg_pynq_217_230830.png

blue.bmp、 green.bmp、 red.bmp の画像ファイルを ~/jupyter_notebooks/examples/i3filters ディレクトリにコピーした。
cd
sudo mv *.bmp ~/jupyter_notebooks/examples/i3filters/


~/jupyter_notebooks/examples/i3filters ディレクトリに blue.bmp、 green.bmp、 red.bmp の画像ファイルがコピーされた。
zub1cg_pynq_218_230830.png

blue.bmp を 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


i3filters.ipynb を実行して、bit ファイルをダウンロードする行を実行したら、Vivado で ILA ダッシュボードを表示する。
zub1cg_pynq_219_230830.png

Vivado 2023.1 で Project Navigator の PROGRAM AND DEBUG -> Open Hardware Manager -> Open Target をクリックして Auto Connect を選択すると、ILA ダッシュボードが表示された。
Trigger position in window を 512 から 100 に書き換えて、Run trigger for this ILA core の右向き三角ボタンをクリックして、トリガ待ちにした。

Jupyter Notebook で run_kernel() を実行すると、ILA ダッシュボードでトリガが掛かった。
zub1cg_pynq_220_230830.png

axis_dwidth_converter_1 (AXI4-Stream を 3 バイトから 4 バイトに変換する IP)の波形を示す。
slot2 が axis_dwidth_converter_1の出力(4 バイト)、slot3 が axis_dwidth_converter_1 の入力(3 バイト)となっている。
blue.bmp のときの波形を示す。
zub1cg_pynq_221_230830.png

green.bmp のときの波形を示す。
zub1cg_pynq_222_230830.png

red.bmp のときの波形を示す。
zub1cg_pynq_223_230830.png

見てお分かりの通りに、RGB だと思っていたのが、BGR だった。orz
  1. 2023年08月30日 05:05 |
  2. IP
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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