FC2カウンター FPGAの部屋 Ultra96-V2 のカメラ入力、ディスプレイ出力付き Vitis アクセラレーション・プラットフォームの作成2(ハードウェア・コンポーネント編)
FC2ブログ

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

FPGAの部屋

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

Ultra96-V2 のカメラ入力、ディスプレイ出力付き Vitis アクセラレーション・プラットフォームの作成2(ハードウェア・コンポーネント編)

Ultra96-V2 のカメラ入力、ディスプレイ出力付き Vitis アクセラレーション・プラットフォームの作成1(構想編)”の続き。

前回は、カメラ入力とディスプレイ出力がある Vitis アクセラレーション・プラットフォームを作ってみることにしたという構想を書いた。今回は、Vitis アクセラレーション・プラットフォームのハードウェア・コンポーネントを作成しよう。

ブロックデザインは、”カメラ画像をDisplayPortに出力する7(ブロックデザインの変更)”を Vivado 2019.2 に変換したプロジェクト(cam_dp_192_platform)を使用する。
Vitis アクセラレーション・プラットフォームのハードウェア・コンポーネントの作り方は”Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方1(ハードウェア・コンポーネント編)”を参考にする。引用文献もそのまま引き継ぐこととする。

Vivado 2019.2 のプロジェクトを開いた。
ultra96v2_cam_dp_1_200423.png

現在のブロックデザインを示す。
ultra96v2_cam_dp_2_200423.png

Zynq UltraScale+ を拡大する。
M_AXI_HPM0_FPD は使用している。 pl_clk0, pl_clk1 も使用している。
ultra96v2_cam_dp_3_200423.png

display モジュールを示す。
ultra96v2_cam_dp_4_200423.png

camera モジュールを示す。
ultra96v2_cam_dp_5_200423.png

さて、Vitis アクセラレーション・プラットフォームのハードウェア・コンポーネント作成に向けて、使用するPS のクロックを設定していこう。
pl_clk2 を使用するため zynq_ultra_ps_e_0 をダブルクリックして pl_clk2 を 100 MHz に指定した。
ultra96v2_cam_dp_6_200423.png

PL to PS の IRQ1[0-7] をイネーブルした。
ultra96v2_cam_dp_7_200423.png

設定後の zynq_ultra_ps_e_0 を示す。
pl_ps_irq1[0:0] と pl_clk2 が増えている。
ultra96v2_cam_dp_8_200423.png

次に Clocking Wizard を Add IP して clk_out2, clk_out3, clk_out4 を追加した。
clk_out1 -> 100 MHz
clk_out2 -> 200 MHz
clk_out3 -> 300 MHz
clk_ou4 -> 400 MHz
に設定した。デフォルトのクロックは、clk_out2 にする。
ultra96v2_cam_dp_9_200423.png

Processor System Reset を 4 個、 Concat を 2 個追加して、設定し配線した。
ultra96v2_cam_dp_10_200423.png

Address Editor を示す。
ultra96v2_cam_dp_11_200423.png

Vivado 2019.2 の Window メニューからPlatform Interfaces を選択する。
platform interfaces が開く。
ultra96v2_cam_dp_12_200423.png

Enable platform interfaces をクリックした。
すると、Vitis で使用できるインターフェースの一覧が表示される。

最初に Platform Properites を編集する。
Platform Interface ウインドウで、Platform をクリックし、Platform Properties の Name: に ultra96v2_cam_dp 、 Board: に Ultra96V2 と入力する。
ultra96v2_cam_dp_65_200427.png 

ultra96v2_cam_dp_64_200427.png 

clk_wiz_0 の clk_out2 をダブルクリックしてイネーブルにした。
ultra96v2_cam_dp_13_200423.png

clk_out2 のプロパティを id を 0 に設定して、 is_default のチェックを入れた。
ultra96v2_cam_dp_14_200423.png

clk_out1 をイネーブルにして、 id を 1 に設定した。
ultra96v2_cam_dp_15_200423.png

clk_out3 をイネーブルにして、 id を 2 に設定した。
ultra96v2_cam_dp_16_200423.png

clk_out4 をイネーブルにして、 id を 3 に設定した。
ultra96v2_cam_dp_17_200423.png

zynq_ultra_ps_e_0 のポートを下図のようにイネーブルにした。 M_AXI_HPM0_FPD は使用しているので、イネーブルにするのはやめにした。
pl_ps_irq_0 は in0 〜 in7 までイネーブルとした。
ultra96v2_cam_dp_18_200423.png

pl_ps_irq_1 は in0 〜 in7 までイネーブルとした。
ultra96v2_cam_dp_19_200423.png

Tcl Console で output type properties を設定した。

set_property platform.design_intent.embedded true [current_project]
set_property platform.design_intent.server_managed false [current_project]
set_property platform.design_intent.external_host false [current_project]
set_property platform.design_intent.datacenter false [current_project]
set_property platform.default_output_type "sd_card" [current_project]


ultra96v2_cam_dp_20_200423.png

Flow Navigator 上でGenerate Bitstream をクリックしてビットストリームの生成を行って、成功した。
Project Summary を示す。
ultra96v2_cam_dp_21_200423.png

Tcl Console で、XSA ファイルを出力する。
(注:XSAファイルの名前が重要です。ハードウェア・コンポーネント(XSAファイル)とソフトウェア・コンポーネント(SPFMファイル)の名前を一致させる必要があります)(アクセレーション・プラットフォームとVitisに認識させるにはハードとソフトの名前の一致が重要な要件のようです)
cd /home/masaaki/HDL/Ultra96/Ultra96V2/cam_dp_V2_192_cam_dp/
write_hw_platform -include_bit ultra96v2_cam_dp.xsa

ultra96v2_cam_dp_22_200423.png

ultra96v2_cam_dp.xsa が生成された。
ultra96v2_cam_dp_23_200423.png

ultra96v2_cam_dp.xsa を検証した。
validate_hw_platform ./ultra96v2_cam_dp.xsa
ultra96v2_cam_dp_24_200423.png

大丈夫そうだ。
ultra96v2_cam_dp.xsa を生成することができた。これが成果物なので、Vitis アクセラレーション・プラットフォームのハードウェア・コンポーネントを作成することができた。

参考文献
(1). Vitis Unified Software Development Platform Documentation, Embedded Processor Platform Development, Creating the Hardware Component
(2). SDx のUltra96-V2 用プラットフォームを作る1(PetaLinux 2018.3 のインストール、Vivado プロジェクト作成)
(3). SDx のUltra96-V2 用プラットフォームを作る2(ブロックデザインの作成)
(4). SDx のUltra96-V2 用プラットフォームを作る2(Platform Hardware Interfacesの宣言)
(5). SDx のUltra96-V2 用プラットフォームを作る3(ビットストリームの生成)
  1. 2020年04月24日 04:48 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:1

コメント

pl_ps_irqは2019.2から変更

説明にある、pl_ps_irqですが、2019.2から変更されて、Vitisプラットフォームで割り込みとして反映されません。一応、他のやり方が書いてあるのですが、そちらもうまい行かず悩んでいます。
  1. 2020/04/25(土) 11:40:15 |
  2. URL |
  3. basaro #fx3g3/Ak
  4. [ 編集 ]

コメントの投稿


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

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