FC2カウンター FPGAの部屋 ”Ultra96v2 Linux-Based Platform in Xilinx Vitis 2020.1”をやってみる2(1- XSA design その2)
fc2ブログ

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

FPGAの部屋

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

”Ultra96v2 Linux-Based Platform in Xilinx Vitis 2020.1”をやってみる2(1- XSA design その2)

”Ultra96v2 Linux-Based Platform in Xilinx Vitis 2020.1”をやってみる1(1- XSA design その1)”の続き。

前回、自分で Vitis 2020.1 のアクセラレーション・プラットフォームを作成したが、PetaLinux は起動しないままだった。
Ultra96v2 Linux-Based Platform in Xilinx Vitis 2020.1”を見つけたので、この通りにやってみることにしたということで、前回は、Vivado 2020.1 でプロジェクトを作り、Zynq UltraScale+ MPSoC を Add IP した。今回は、残りの Vivado 2020.1 で作業をやっていこう。

Zynq UltraScale+ MPSoC をダブルクリックして、設定画面を開いた。
Page Navigator から PS-PL Configuration をクリックして、 PS-PL Interface -> Master Interface -> AXI HPM0 FPD と AXI HPM1 FPD のチェックを外す。
Ultra96V2_acc_platform201_9_201011.png

Clocking Wizard を Add IP した。
Ultra96V2_acc_platform201_10_201011.png

Clocking Wizard をダブルクリックして設定を行う。
clk_out1 -> 100 MHz
clk_out2 -> 200 MHz
clk_out3 -> 300 MHz
clk_out4 -> 600 MHz (ここは 500 MHz ではワーニングがでるので変更した)

Reset Type は Active Low に変更した。
Ultra96V2_acc_platform201_11_201011.png

ブロックデザインに Processor System Reset を 4 個 Add IP した。
Ultra96V2_acc_platform201_12_201011.png

IP を下図のように配線した。
Ultra96V2_acc_platform201_13_201011.png

AXI Interrupt Controller を Add IP した。
Ultra96V2_acc_platform201_14_201011.png

もう一度、Zynq UltraScale+ MPSoC をダブルクリックして、設定画面を開いた。
Page Navigator から PS-PL Configuration をクリックして、 PS-PL Interface -> Master Interface -> AXI HPM0 LPD にチェックを入れて、AXI HPM0 LPD Data Width を 32 にした。
Ultra96V2_acc_platform201_15_201012.png

Zynq UltraScale+ MPSoC の maxlhpm0_lpd_aclk を clk_wiz_0 の clk_out1 に接続する。

Run Connection Automation をクリックする。
Ultra96V2_acc_platform201_16_201012.png

Run Connection Automation ダイアログが表示された。ダイアログを使用して配線を行った。
Ultra96V2_acc_platform201_17_201012.png

Ultra96v2 Linux-Based Platform in Xilinx Vitis 2020.1”と違って、axi_intc_0 の interrupt を展開して、 irq を Zynq UltraScale+ MPSoC の pl_ps_irq0[0:0] に接続した。

Ultra96v2 Linux-Based Platform in Xilinx Vitis 2020.1”では、Vivado の TCL Console で以下のコマンドを実行する。

set_property PFM.IRQ {intr {id 0 range 32}} [get_bd_cells /axi_intc_0]


Ultra96V2_acc_platform201_18_201012.png

Vivado の Window メニューから Platform Interfaces を選択する。
Enable platform interfaces をクリックして、 platform interfaces を有効化する。
Ultra96V2_acc_platform201_19_201012.png

Platform Interfaces で以下のポートを選択して、右クリックし右クリックメニューから Enable を選択する。

M_AXI_HPM0_FPD
M_AXI_HPM1_FPD
S_AXI_HPC0_FPD
S_AXI_HPC1_FPD
S_AXI_HP0_FPD
S_AXI_HP1_FPD
S_AXI_HP2_FPD
S_AXI_HP3_FPD


Ultra96V2_acc_platform201_20_201012.png

Enable 後の様子。
Ultra96V2_acc_platform201_21_201012.png

S_AXI_HPC0_FPD の Platform Interface Properties -> sptag に HPC0 と入力した。
以下、下に示すポートに sptag を入力した。

S_AXI_HPC0_FPD -> HPC0
S_AXI_HPC1_FPD -> HPC1
S_AXI_HP0_FPD -> HP0
S_AXI_HP1_FPD -> HP1
S_AXI_HP2_FPD -> HP2
S_AXI_HP3_FPD -> HP3


Ultra96V2_acc_platform201_22_201012.png

clk_wiz_0 の clk_out1 の Platform Interface Properties の id を 0 、 is_default のチェックボックスにチェックを入れた。
clk_wiz_0 の clk_out2 の Platform Interface Properties の id を 1 に設定した。
clk_wiz_0 の clk_out3 の Platform Interface Properties の id を 2 に設定した。
clk_wiz_0 の clk_out4 の Platform Interface Properties の id を 3 に設定した。
Ultra96V2_acc_platform201_23_201012.png

Platform Interfaces ウインドウで、 ps8_0_axi_periph の以下のポートを Enable にした。

M01_AXI
M02_AXI
M03_AXI
M04_AXI
M05_AXI
M06_AXI
M07_AXI
M08_AXI


Ultra96V2_acc_platform201_24_201012.png

M01_AXI 〜 M08_AXI の sptag を HPM0_LPD に設定した。
Ultra96V2_acc_platform201_25_201012.png

Ultra96V2_acc_platform201_26_201012.png

TCL Console で以下のコマンドを実行した。

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_acc_platform201_27_201012.png

Diagram ウインドウで Validate Design アイコンをクリックし、デザインの検証を行ったが、1 個 Critical Warring がでている。
Ultra96V2_acc_platform201_28_201012.png

Sources ウインドウの ultra96v2_design を右クリックし、右クリックメニューから Generate Output Products... を選択する。
Ultra96V2_acc_platform201_29_201012.png

Generate Output Products ダイアログが表示された。
Generate ボタンをクリックする。
Ultra96V2_acc_platform201_30_201012.png

また、 Critical Warring がでた。
Ultra96V2_acc_platform201_31_201012.png

(2020/12/11:追加)Create HDL Wrapper が抜けていたので追加。
Source ウインドウで ultra96v2_design.bd を右クリックし、右クリックメニューから Create HDL Wrapper.. を選択する。

Create HDL Wrapper ダイアログが開く。
デフォルトで Let Vivado manage wrapper and auto-update のラジオボタンがチェックされているので、そのまま OK ボタンをクリックする。

ultra96_design_wrapper.v が生成された。

Flow Navigator -> PROGRAM AND DEBUG -> Generate Bitstream をクリックして、論理合成、インプリメンテーション、ビットストリームの生成を行う。
Ultra96V2_acc_platform201_32_201012.png

論理合成、インプリメンテーション、ビットストリームの生成が成功した。
Ultra96V2_acc_platform201_33_201012.png

XSA ファイルを出力する。

TCL Console で以下のコマンドを入力した。
write_hw_platform -include_bit ultra96v2.xsa
pwd
validate_hw_platform ./ultra96v2.xsa


Ultra96V2_acc_platform201_34_201012.png

ultra96v2.xsa ファイルが生成された。
Ultra96V2_acc_platform201_35_201012.png
  1. 2020年10月13日 05:01 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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