FC2カウンター FPGAの部屋 2023年08月10日
fc2ブログ

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

FPGAの部屋

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

ZUBoard 1CG の PYNQ v3.0.1 で自作のソーベル・フィルタを動作させる1

RGB 24 ビットの AXI4-Stream データ入出力対応のソーベル・フィルタを Vitis HLS 2023.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 用の Vivado 2023.1 の sobel_pynq プロジェクトを作成した。
zub1cg_pynq_122_230809.png

sobel_pynq ディレクトリの下に sobel_axis_RGB24 ディレクトリを作成し、”RGB 24 ビットの AXI4-Stream データ入出力対応のソーベル・フィルタを Vitis HLS 2023.1 で作成する”で生成された sobel_axis_RGB24/solution1/impl/export.zip を展開して sobel_axis_RGB24 ディレクトリにコピーした。
zub1cg_pynq_123_230809.png

IP Catalog に sobel_axis_RGB24 IP を追加した。
zub1cg_pynq_124_230809.png

sobel ブロック・デザインを作成し、完成させた。
axi dma を使用して、DMA したデータを AXI4-Stream で流して、sobel_axis_RGB24 に入力して、ソーベル・フィルタを掛ける。DMA するデータが OpenCV の MAT 形式なので、RGB のピクセルが 32 ビット幅(4 バイト)のデータバスに散らばっている。それを 3 バイト幅の RGB に戻すのが axis_dwidth_converter_0 の役割だ。その後、ソーベル・フィルタを掛けた 3 バイト幅のデータは axis_dwidth_converter_1 で 4 バイト幅(32 ビット幅)に変換される。つまり、OpenCV の MAT 形式に変換されて、PYNQ の Jupyter Notebook でその画像を表示することができるようになる。
zub1cg_pynq_125_230809.png

zynq_ultra_ps_e_0 は、Re-customize IP ダイアログの PS-PL Configuration で PS-PL Interface の AXI HPM0 FPD と AXI HPC0 FPD のみにチェックを入れた。(ちなみに、Re-customize IP ダイアログを表示させるには、IP をダブル・クリックする)
zub1cg_pynq_126_230809.png

axi_dma_0 は Re-customize IP ダイアログで Enable Scatter Gather Engine のチェックを外した。
更に、800 x 600 ピクセルの画像を一度に DMA するために Width of Buffer Length Resiger を 26 bits に変更した。
zub1cg_pynq_127_230809.png

axis_dwidth_converter_0 の Master interface TDATA width (bytes) を 3 に設定した。
OpenCV の MAT 形式から RGB 3 バイト幅に変換する。
zub1cg_pynq_128_230809.png

axis_dwidth_converter_1 の Master interface TDATA width (bytes) を 4 に設定した。
RGB 3 バイト幅から Open CV の MAT 形式に変換する。
zub1cg_pynq_129_230809.png

Address Editor 画面を示す。
zub1cg_pynq_130_230809.png

sobel ブロック・デザインの HDL Wrapper を作成した。
zub1cg_pynq_131_230809.png

Vivado の Flow Navigator から Generate Bitstream をクリックし、論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。
Project Summary を示す。
zub1cg_pynq_132_230809.png

HDL/2023.1/zub1cg/sobel_pynq/sobel_pynq.gen/sources_1/bd/sobel/hw_handoff ディレクトリに sobel.hwh ファイルが生成された。

HDL/2023.1/zub1cg/sobel_pynq/sobel_pynq.runs/impl_1 ディレクトリに sobel_wrapper.bit ファイルが生成された。
  1. 2023年08月10日 04:20 |
  2. ZUBoard
  3. | トラックバック:0
  4. | コメント:0