🏩

Zynq PSを用いたハードウェア構築

2023/03/28に公開

Zynq PSを用いたハードウェア構築

はじめに

前回に続き、「FPGAプログラミング大全 第2版」をやる
https://amzn.to/40isQyG

HDL経験:Verilog入門書を一日読んだだけ 基本の文法のみ
本投稿では本書5-1~「ハードマクロCPUシステム」を実施したメモを書きます

環境

FPGA : Xilinx Zybo Z7-20
OS : WSL2 Ubuntu20.04
開発環境 : Vivado ML edition 2022.1 Linux版

やりたいこと

-Zynq PSからPLを制御してLEDを動かす
-GPIOをinputとして使用し、外部操作できるようなプログラム

  • Zynq-7000 テクニカルリファレンス

https://docs.xilinx.com/v/u/ja-JP/ug585-Zynq-7000-TRM

実装

ハードウェア構築

  • Vivadoで空のプロジェクトを作成する
  • Create Block Design ->Add IPからZynq PSを追加
  • AXI GPIOを追加 2Ch変更後、Output -> LED_RGB[2:0] Input -> BTN[1:0]に設定
  • Run Connect Automation実行でSystem Reset,AXI Interconnectが追加される
  • 制約ファイルと一致するようにport名を修正
  • Validate Design

    Warningが出たが、DDRメモリ-PS CLK間でのSkewが負になっているのが原因。
    Zynq PSのDDR Skew設定値を確認するとエラーのマイナス設定値になっている

Block Designが完成したらDesignを選択してCreate HDL Wrapperを実行。Design sourceにDesign_wrapper.vが作成される

  • 制約ファイルの追加
  • Generate Bitstream
  • File -> Export Hardware

これでハードウェアの構築が完了

VitisでZynqを制御

  • Vitisを起動
  • Create platform project
  • Create application project
  • Import Sourceで実行したいcファイルを追加
  • ApplicationからBuild project

Applicationを右クリックしてRun As/Debug Asで実行、Vitis Serial Terminalで動作を確認できる

おわり

Discussion