開発環境
- 開発用PC : Windows 10 64-bit
- Vivado 2020.2
- Xilinx Vitis 2020.2
- ターゲットボード : ZYBO (旧ZYBO)
開発の流れ
Vivado/VitisではVivadoでハードウェア部分を開発し、Vitisでソフトウェア部分を開発する。
マイコンでいうとVivadoでマイコンそのものの作成、Vitisでマイコンに書き込むソフトを作成する、というイメージ。
ZYBOボードの設定
電源を入れるとPGOODの赤LEDが点灯する。
(ジャンパがQSPIのままだとDONEの緑LEDも点灯する)
ハードウェア設計(Vivado)
Project nameを入力する。ここでは ”hello_world_system” と入力して [Next]
Project Typeは “RTL Project” を選択して [Next]を選択。
Default Partでは[Boards]タブを選択、Search欄にZyboと入力して一番下に出る[Zybo]を選択(青色になる)し、[Next]を選択。
左の[Project manager]の[Create Block Design]を選択。
デザイン名を聞かれるので入力。今回は"hello_world_system"とする。
[Diagram]ウインドウで中央の[+]マークをクリックするか、右クリックして[Add IP...]をクリックする。
出てきたウインドウで[ZYNQ7 Processing System]を選択。(最初のDefault Partのボード選択でZyboを選んでいないと表示されない)
選択すると、図のようにZynqのプロセッサコアを表す “processing_system_7” という名前のIPが追加。
[Run Block Automation]をクリック。
IP “processing_system_7″に接続ポート[DDR]と[FIXED_IO]が追加。
[FLCK_CLK0]にマウスカーソルを合わせると鉛筆マークに変化するので、ドラッグし[M_AXI_GP0_ACLK]にクロック出力を繋げる。
[BLOCK DESIGN]ウインドウから[Sources]タブを選択。
[Design sources]>[hello_world_system]を右クリックし、[Create HDL Wrapper]をクリック。
bitstreamファイル作成までしばらく時間がかかる。
[File]タブから[Export]>[Export Hardware...]を選択する。
[Include bitstream]を選択して[Next]を選択。
XSAファイル名と格納するディレクトリを指定する。
ファイル名は[hello_world_system_wrapper]とする。
[Next]をクリック。
プロジェクトの作成と実行(Vitis)
[Tools]>[Launch Vitis IDE]をクリック。
Workspaceのディレクトリを指定して[Launch]をクリック。
新しくウインドウが立ち上がるので[Create Application Project]をクリック。
[Create a new platform from hardware (XSA) ]タブから[Browse]をクリック。
Vivadoで作成した”hello_world_system_wrapper.xsa”を選択して[開く]をクリック。
アプリケーションプロジェクト名を入力し、[Next]をクリックする。
アプリケーションプロジェクト名は”hello_world_apprication”とした。
“Hello World”を選択し、[Finish]をクリック。
プラットフォームプロジェクトをビルドする。
“hello_world_system_wrapper”を右クリックし、[Build Project]を選択。
システムプロジェクトをビルドする。
“hello_world_application_system”を右クリックし、[Build Project]をクリックする。
“hello_world_application_system”を右クリックし、[Debug As]から[Launch Hardware]をクリックする。
ジャンパをQSPIからJTAGに変更していないとエラーが出る。
また電源ボタンをオンにしていないとエラーが出る。
デバッガ操作画面に切り替わる。
init_platform()が緑色にハイライトされていて、ここで処理が停止していることを示している。(システムプロジェクトをビルドしていないと停止しない)
ZyboボードのLD10 LED(Done)が緑色に点灯する。
[Vitis Serial Terminal]タブから[+]マークをクリックする。
ポートを選択し、ボーレートを115200に設定して[OK]をクリック。
init_platform()で動作が停止しているアプリケーションを[Resume]マークをクリックして再開する。
参考
https://qiita.com/iwatake2222/items/24a8a94741fdbb80f62a
https://phys-higashi.com/114/
https://phys-higashi.com/152/
おわりに
この記事はFPGAもZYBOも初心者の自分が色々調べながらメモ代わりに書いております。現状では動作することは確認できておりますが、間違いがあったり、後から記事を修正する場合があります。ご容赦ください。
もしも間違っている内容等ありますが、ぜひご指摘ください。