FC2カウンター FPGAの部屋 ZYBO Z7-20 の PYNQ 2.7 上で Jupyter Notebook に画像を表示する8
fc2ブログ

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

FPGAの部屋

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

ZYBO Z7-20 の PYNQ 2.7 上で Jupyter Notebook に画像を表示する8

ZYBO Z7-20 の PYNQ 2.7 上で Jupyter Notebook に画像を表示する7”の続き。

Jupyter Notebook にカメラ画像を表示しようということで、前回は、デバッグをしたところ、axis2DMA4dwc IP のアドレスが 64 ビットアドレスだったため、AXI4 Master のアドレスの上 32 ビットだけアドレスを書き込んでいたので、DMA でアドレスが 0 番地になっていたのがバグの原因だった。今回は、axis2DMA4dwc IP のアドレスを 32 ビット・アドレスに変更し、Vivado で論理合成、インプリメンテーション、ビットストリームの生成を行った。その後 Jupyter Notebook で動作を確認したところ、Jupyter Notebook に画像を表示できたが、色が違っていた。

Vitis HLS 2021.2 の axis2DMA4dwc プロジェクトで Solution メニューから Solution Settings... を選択し、ダイアログを表示された。
config_interface を展開して、m_axi_addr64 のチェックを外して、AXI4-Master のアドレス幅を 32 ビットに変更した。

C コードの合成を行った。結果を示す。
ZYBO_Z7_PYNQ_237_220828.png

S_AXILITE Registgers の最後の out_r が 32 ビット幅 1 個のみになっている。これで問題ない。

Export RTL を行って、IP にした。

Vitis HLS 2021.2 の axis2DMA4dwc IP を Vivado 2022.1 の cam_disp プロジェクトのディレクトリにある axis2DMA4dwc ディレクトリのファイルを削除して、コピー&ペーストした。
現在のブロック・デザインを示す。
ZYBO_Z7_PYNQ_240_220829.png

Vivado で論理合成、インプリメンテーション、ビットストリームの生成を行った。

ホスト・パソコンのブラウザで http://192.168.3.35:9090/tree/my_project を表示した。

cam_disp.bit と cam_disp.hwh を削除した。

cam_disp/cam_disp.runs/impl_1/cam_disp_bd_wrapper.bit と cam_disp/cam_disp.gen/sources_1/bd/cam_disp_bd/hw_handoff/cam_disp_bd.hwh をアップロードした。

cam_disp_bd_wrapper.bit と cam_disp_bd.hwh の名前を cam_disp.bit と cam_disp.hwh に変更した。

cam_disp.ipynb を コピー & ペーストして、cam_disp_org.ipynb と名前を変更した。

Jupyte Notebook を実行していくと、カメラ画像を表示することはできた。
しかし、色がおかしい。左上のオレンジ色は私の T シャツなのだが、その色は水色だ。R と B が入れ替わっているのかな?
ZYBO_Z7_PYNQ_238_220828.png

axis2DMA4dwc の AXI4 Master トランザクション波形を見ても、0x16f00000 番地からアクセスしているようだ。
ZYBO_Z7_PYNQ_239_220828.png

ただし、画像を表示できるのは 1 回だけだった。再度、カメラ画像をキャプチャして、Jupyte Notebook に表示しようとしたらカーネルがリセットされてしまう。

axis2dma.register_map.CTRL = 0x1
sobel1.register_map.CTRL = 0x1
dma2axis31.register_map.CTRL = 0x1

cam_image = Image.fromarray(buffer3)
print("Image size: {}x{} pixels.".format(width, height))
plt.figure(figsize=(12, 10));
_ = plt.imshow(cam_image)

  1. 2022年08月30日 04:26 |
  2. PYNQ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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