FC2カウンター FPGAの部屋 Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方1(ハードウェア・コンポーネント編)
fc2ブログ

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

FPGAの部屋

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

Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方1(ハードウェア・コンポーネント編)

Ubuntu 18.04 上で Ultra96-V2 の Vitis アクセラレーション・プラットフォームを 4 回に分けて作っていこう。
前回作った Ultra96-V2 の Vitis アクセラレーション・プラットフォームはデフォルトのクロック周波数が 100 MHz だったので、今回のデフォルトのクロック周波数は 200 MHz とする。

環境の設定
最初に環境を設定する。
Vitis と XRT と PetaLinux の環境を設定する。つまり各ツールのインストール・フォルダの settings**.sh (XRT は setup.sh だった。確か)を source コマンドで起動する。
そう、つまりこの 3 点セットをインストールする必要がある。私はAlveo U200 のXRT を使用している。

Vivado 2019.2 プロジェクトの作成
vivado &
コマンドで Vivado 2019.2 を起動する。

Vivado の起動画面で、Create Project をクリックしてプロジェクトを作成する。
New Project ダイアログのProject Name でProject name を”ultra96v2_min2”に設定した。
Vitis_Platform2_1_191127.png

New Project の Project Type ページはデフォルトのRTL Project のまま Next > ボタンをクリックする。

Add Sources ページでも Next > ボタンをクリックする。

Add Constraints ページでも Next > ボタンをクリックする。

Default Part ページでは、Boards をクリックし、Vendor: で”em.avnet.com”を選択し、Display Name が Ultra96v2 Evaluation Platform を選択する。(ここで、 Ultra96v1 Evaluation Platform を選択すると Ultra96-V1 用のプラットフォームができる)
Next > ボタンをクリックする。
Vitis_Platform2_2_191127.png

New Project Summary ページではサーマリが示される。Finish ボタンをクリックする。
Vitis_Platform2_3_191127.png

”ultra96v2_min2”の Vivado 2019.2 プロジェクトが作成された。
Vitis_Platform2_4_191127.png

ブロックデザインの作成
Vivado 2019.2 のFlow Navigator から IP INTEGRATOR -> Create Block Design をクリックして、ブロックデザインを作成する。
Design name を ultra96v2_min2 とした。
Vitis_Platform2_5_191127.png

Zynq UltraScale+ MPSoC をAdd IP した。
Vitis_Platform2_6_191127.png

Run Block Automation をクリックして、ボード・ファイルの設定を反映する。
Run Block Automation ダイアログが開くので、OKボタンをクリックする。
Vitis_Platform2_7_191127.png

Clocking Wizard、 Concat、 Processor System Reset をAdd IP する。
Vitis_Platform2_8_191127.png

設定を行う。
zynq_ultra_ps_e_0 をダブルクリックして、設定画面を開く。
Vitis_Platform2_9_191127.png

Page Navigator から PS-PL Configuration を選択する。
Geraral -> Interrupts -> IRQ1[0-7] の値を 1 に変更する。
PS-PL Interfaces -> Master Interface のAXI HPM0 FPD と AXI HPM1 FPD をチェックを解除する。
OKボタンをクリックする。
Vitis_Platform2_10_191127.png

clk_wiz_0 をダブルクリックする。
Reset Type を Active Low に変更する。
clk_out2 〜 clk_out5 を追加して、それぞれ周波数を設定した。
clk_out1 -> 100 MHz
clk_out2 -> 200 MHz
clk_out3 -> 300 MHz
clk_out4 -> 400 MHz
clk_out5 -> 600 MHz
Vitis_Platform2_11_191127.png

Vitis_Platform2_12_191127.png

xlconcat_0 をダブルクリックする。
Number of Ports を 1 に設定する。
Vitis_Platform2_13_191127.png

Vitis_Platform2_14_191127.png

並べ替え、下図のように配線を行った。
Vitis_Platform2_15_191127.png

Validate Design アイコンをクリックして、デザインを検証する。
成功した。問題なかった。

proc_sys_reset_0 を 4 回コピー&ペーストして、5 個のコピーを作成した。

xlconcat_0 をコピー&ペーストして、 xlconcat_1 を生成した。

それらを下図の様に配線した。
zynq_ultra_ps_e_0 の pl_restn0 をすべての Processor System Reset の ext_rest_in に接続した。
clk_wiz_0 の locked をすべての Processor System Reset の dcm_locked に接続した。
Vitis_Platform2_16_191127.png

Validate Design アイコンをクリックして、デザインを検証する。
成功した。問題なかったので、セーブした。

プラットフォームの作成
Vivado 2019.2 の Window メニューからPlatform Interfaces を選択する。
platform interfaces が開く。
Vitis_Platform2_17_191127.png

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

これはハイドされているので、まだ選択されていない。
Platform を選択すると、Platform Properties ウインドウでPlatform の情報を設定できる。
board を Ultra96V2 に変更した。
Vitis_Platform2_19_191127.png

clk_wiz_0 の clk_out2 (200 MHz) をクリックして、Platform Interface Properties の General で Enable のチェックボックスをチェックする。(このクロックをデフォルトのクロックに設定する)
Vitis_Platform2_20_191127.png

Platform Interface Properties の Options タブをクリックして、id を 0 にして、is_default チェックボックスをチェックする。
Vitis_Platform2_21_191127.png

ダブルクリックか、項目を選択してEnable を選択することでも有効化できる。
zynq_ultra_ps_e_0 のインターフェースの内で、 pl_clk0, S_AXI_ACP_FPD, and S_AXI_LPD を除くインターフェースを有効にする。
clk_out2 以外のクロックも有効化した。
Vitis_Platform2_22_191127.png

xlconcat_0 の In0 〜 In7 を有効にする。
Vitis_Platform2_23_191127.png

xlconcat_1 の In0 〜 In7 を有効にする。
Vitis_Platform2_24_191127.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]


Vitis_Platform2_25_191127.png

Vitis_Platform2_26_191127.png

Design Sources の下の ultra96v2_min2 ブロックデザインを右クリックし、右クリックメニューからCreate HDL Wrapper... をクリックする。
Vitis_Platform2_27_191127.png

Create HDL Wrapper ダイアログが表示され、OKボタンをクリックすると、ultra96v2_min2_wrapper.v が生成された。
Vitis_Platform2_28_191127.png

Flow Navigator 上でGenerate Bitstream をクリックしてビットストリームの生成を行う。

2つほどダイアログが出るが、OKボタンをクリックする。

時間が経過してから、Bitstream Generation Completed ダイアログが表示される。
Vitis_Platform2_29_191127.png

Cancel ボタンをクリックする。

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

Vitis_Platform2_30_191129.png

ultra96v2_min2.xsa が生成されていた。
Vitis_Platform2_31_191129.png

ultra96v2_min2.xsa を検証した。
validate_hw_platform ./ultra96v2_min2.xsa
Vitis_Platform2_32_191129.png

これで、ハードウェア・コンポーネント編は終了。

参考文献
(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. 2019年11月28日 05:22 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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