2022/05/01

Vivadoで、DPUのプロジェクトをUltra96用に作ってみる

XILINX   

DPUを使ったPlatformを作りたいと思った。

以下にQiitaの記事がありますが、Vivadoのバージョンが2019.2で、自分の環境と異なる点や、記事に添付されているTCLで読み込みましたが、力不足で、読み込めなかったので、記事を参考にしながら、2021.2で作りました。

VivadoのPJを作っただけでVitis AIの動作確認は行っていません。

https://qiita.com/mmitti/items/3c7e85c845219ee392b0

DPU IP Download

DPUのIPは、デフォルトのレポジトリに格納されていなく、Xilinx Vitis AIのgitからダウンロードしておく必要がありそうです。

git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI 

Vivadoの取り込み

Vivadoに取り込むためには、まずは、IP Catalogを開きます

IP CatalogのWindow上で、右クリックして、Add Repositoryを選択します

そして、先程git cloneしたVitis AIのディレクトリを選択

そうすると、IPがあったことを知らされます。OKをクリックします。

これで、Add IPからDPUを選択できるようになりました。

あとは、Qiiitaの記事のように、IPをBlock Desgin上に配置して、線をつなげていけばできるはずです。

いくつか設定が必要なIPがあったので説明します。

DPU

DPUは、Ultra96だとリソースに余裕がないため、デフォルトのままだとエラーになります。

Qiitaの記事のTCLファイルを参考にして、DPUの設定を行います

Clocking wizard

dpuのDSPには2倍のClockが必要ということで、Clocking Wizardの設定を行います。記事にも書かれていますが、DPUのクロックは同期が必要ということで、Matched Routingにチェックをいれます

Zynq UltraScale+ MPSoc

記事の画像を見て、IP同士をつなげていきますが、DPUのSlave IFは、32bit幅ですので、そこは設定を変更する必要があります。AXI HPM0 LPD Data Widthを32にします。

Block desgin

生成したBlock desginになります

ソースコード

作成したPJは以下のおいてります

https://github.com/y38y38/ultra96_dpu_2021.2

Prev:«

Next: »