ケロロ好きなエンジニアのブログ

サラリーマンエンジニアの電子工作のことをメインに書いていきたいけど電子工作はまとまった時間がないとなかなか難しいから滅多に書けそうもなくてMVNOの話題がメインになりつつあるブログ

ZYBO Vivado+Vitisを使ってみる

にほんブログ村 スマホ・携帯ブログへ にほんブログ村 スマホ・携帯ブログ 格安SIMカード・MVNOへ

スポンサーリンク

ZYBOいじり 最初はPL、次にSDKを使ったPS領域を動かしてきましたが、ハードウェアはVivado2019.1。ソフトウェアはSDK2019.1を使ってきました。

最新の2019.2からはSDKではなくVitisという統合プラットフォームへ変わっていますので、今回はバージョンを2019.2にしてVivado+Vitisで同様なことをやってみたいと思います。

 

基本は以前と同じなので詳細な画面キャプチャまでは出していませんので、必要なら以前の記事をご覧ください

 

Vivado起動

プロジェクト設定

Create Project

Next

2019.1のプロジェクトを指定したらアップデートしてくれるのかもしれませんが、使い分けも考えてとりあえず違うディレクトリに作りました。

f:id:keroctronics:20200513211006p:plain

RTL Project を選択
Do not specify sources at this timeもチェックしてから Next

BoardsでZybo Z7-10を選択してNext
出てこなかったらUpdate Board Repositoriesをしてからですね。

Finish

 

回路作成

こちらもまったく同じ感じで作っていきます。

IP INTEGRATOR → Create Block Design

デフォルトのまま OK

Boardタブを選んで、4 Buttons を右クリック → Connect Board Component

AXI GPIO の GPIOを選択してOK

DiagramにAXI GPIOモジュールが出てきたかと思います。

次に4 LEDsも同様に右クリックしてConnect Board Component で axi_gpio_0の中のGPIO2を選択して OK


次に2 RGB LEDSの方もついでにアサイン。
2 RGB LEDS を右クリックしてConnect Board Component で 新しいAXI GPIOのGPIOへアサイン(選択してOK

AddIPでZynqを追加

Run Block Automation

デフォルトのままOK

Run Connection Automation

2つのS_AXIのクロックソースを指定してから OK

Validate Design

あら?なんかエラーっていうかクリティカルワーニングが出ちゃいました。

f:id:keroctronics:20200513211437p:plain

[PSU-1] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 has negative value -0.050 . PS DDR interfaces might fail when entering negative DQS skew values.

2019.1では出なかったはず。

 

あ、そういえば、以前基板調べたときに見てましたね。

Zybo Z7 Reference Manual [Reference.Digilentinc]

Negative CK-to-DQS delays in the board files are causing critical warnings in Vivado >2017.4: Negative CK-to-DQS delays in the board files are causing critical warnings in Vivado >2017.4:[PSU-1] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 has negative value -0.050 . PS DDR interfaces might fail when entering negative DQS skew values.

ってエラッタにあったのと一緒ですね。気にするなってことでよさそうです。

でも2017.4より最新のバージョンならワーニングでるようですが、2019.1の時は出なかった記憶が。。。なんでだろう。

 

まぁいいか。

次行きます。


Sourcesタブのdesign_1を右クリックしてCreate HDL Wrapper
OptionsはデフォルトのままOK

Generate Bitstream

間違ってなければ無事に終わるかと思います。


ここまではワーニングが出た以外は2019.1の時と同じですね。


次に

File → Export → Export Hardware

Include bitstreamにチェックを入れてOK

でエキスポートします。

プロジェクトディレクトリ下に design_1_wrapper.xsa が出来ました。

2019.1の時は*.hdfっていうファイルができたはずですので、ちょっと変わってますね。

 

Vitis起動

2019.1の時はここからSDKを起動しましたが、2019.2はLaunch SDKっていうメニューは無くなってます。

Vitisですからね。それはこちらにあります。

Tools → Launch Vitis

Workspaceの場所を聞かれますので適当な場所を指定してからLaunch

f:id:keroctronics:20200513211858p:plain


するとVITIS IDEが立ち上がります。

f:id:keroctronics:20200513211921p:plain

 

File → New → Application Project

Project name に適当な名前を入れてNext

f:id:keroctronics:20200513212227p:plain

 

Platformのウィンドウになるので、Create a new platform from hardware (XSA) のタブを選び、+をクリックして先にVivadoで作成したできたdesign_1_wrapper.xsa を指定します。

ここらへんSDKの時は自動でやってくれたと思ったんですが、なんで面倒になっちゃったんですかね。

 

すると選択したままになるのでそのままNext

f:id:keroctronics:20200513212401p:plain


Domainのウインドウが出てきますので

f:id:keroctronics:20200513212428p:plain

そのままNext

 

Templatesの選択画面になります。
SDKで似たようなものがありましたね。あれと一緒です。

SDKの時と同じようにEmpty Applicationを選んで

f:id:keroctronics:20200513212536p:plain

Finish

 

SDKの時とはちょっと趣の違うVitis IDEの画面が出てきたかと思います。

f:id:keroctronics:20200513212614p:plain

Explorerペインのsrc 右クリック New → File

 

 

main.c と指定してFinish

f:id:keroctronics:20200513213110p:plain

 


空のmain.cが出てきますので、2019.1の時と同じソースを入れてセーブします。

f:id:keroctronics:20200513213425p:plain


Explorerのプロジェクトを選択して右クリック → Build Project

f:id:keroctronics:20200513213501p:plain



これでビルドが終わりました。

 

実機確認

さて、実機で確認してみます。

USBケーブルを接続して 電源Onしてから

Terminalを開き、シリアルポートの設定をして(2019.1の時と同じ)

Xilinx → Program FPGA

 

デフォルトのまま

f:id:keroctronics:20200513213612p:plain

Program

 

 

Explorerのプロジェクトを選択して右クリック → Run As → Launch on Hardware(Single Application Debug)

あら?動かない。
っていうか別のものが動いている

f:id:keroctronics:20200513213648p:plain


調べたらブートモードがQSPIになっていたからで、JTAGモードに切り替えてやりなおしたらちゃんと動きました。
JP5ですね。

2019.1のSDKの時はQSPIでも動いたんですけどね。なんで違うんだろうな。
でもまぁJTAGモードの方が正しいですよね。


というわけで、Vitisもこの程度であればほぼSDKと同じに使えるってことですね。

じゃぁ何が違うんでしょうね。

SDKも満足に使ったことがない私なので、特に気にせずにおきましょう。