PetalinuxへのAXI UART Liteの追加手順がZYBOで確認できたので、
同じようにZedBoard+AD-FMCOMMS3にも追加してみます。
ターゲットのHDLはすでにビルド済みなので、これをベースに改修していきます。
https://blog.goo.ne.jp/osqzss/e/160e3ff2c3de95c1b96d0855deea759d
projects/fmcomms2/zedのフォルダから、Vivadoのプロジェクトファイルをopenします。
![](https://blogimg.goo.ne.jp/user_image/50/61/d1559e2a66ba856d55a2dac28b8de7b3.png)
Block Designを開き、AXI UART Liteを追加します。
![](https://blogimg.goo.ne.jp/user_image/14/47/d66faafb2575e0ea4ed46a86ed47ac2d.png)
PLからPSへのinterruptは、Concatというブロックを経由しています。
まずはすでにGNDに接続されているIn10[0:0]を右クリックし、"Disconnect Pin"でピンをリリースします。
![](https://blogimg.goo.ne.jp/user_image/59/56/c97790741a78cbb27d35ee62b20ad4d2.png)
その後、In10[0:0]をAXI UART Liteのinterruptに接続します。
![](https://blogimg.goo.ne.jp/user_image/5b/cb/03882a06c859f755fec0211ba4dd76ac.png)
次に、AXI InterconnectにM11_AXIを追加し、それをAXI UART LiteのS_AXIと接続します。
![](https://blogimg.goo.ne.jp/user_image/24/77/861f4d6bdc718d563c1acbb17f63725a.png)
後は、AXI UART Liteのs_axi_aclkとs_axi_aresetnを、それぞれsys_cpu_clkとsys_cpu_resetnに接続し、
rxとtxを外部に引き出します。
![](https://blogimg.goo.ne.jp/user_image/18/76/622842f5d8df68675c8b5e18ed5031b8.png)
最後に、Address Editorのタブを開き、/axi_uartlite_0/S_AXIのアドレスをアサインします。
これで、Block Designの改修は完了。Validate Designをしてから、Create HDL Wrapperを実行します。
しかし、wrapperは生成されているようですが、"Existing Wrapper File"の警告が出て、wrapperファイルが
アップデートされません。調べてみると、Tclスクリプトで生成されたプロジェクトでは、wrapperファイルが
fmcomms2_zed.srcs/sources_1/imports/hdlから読み込まれていますが、Create HDL Wrapperは
fmcomms2_zed.gen/sources_1/bd/system/hdlにwrapperを生成しているようです。
https://support.xilinx.com/s/question/0D52E00006hpmAYSAY/wrapper-doesnt-update-when-changing-a-block-diagram
そこで、オリジナルのwrapperファイルをRemove File from Projectで、プロジェクトから削除します。
![](https://blogimg.goo.ne.jp/user_image/4f/44/4d49621e54d571838380d1ba9717d7f9.png)
そうすると、Vivadoが自動的に階層構造をupdateして、fmcomms2_zed.gen/sources_1/bd/system/hdlの
wrapperファイルを選択してくれます。
![](https://blogimg.goo.ne.jp/user_image/16/9c/b6af9f5a73775bc5ca2a904635753669.png)
これで、system_wrapper.vにAXI UART Liteのポートが追加されたので、上位階層であるsystem_top.vも
適切に編集します。
![](https://blogimg.goo.ne.jp/user_image/13/dd/e9b61ea95b8f40f1cbf903959c7e05e3.png)
![](https://blogimg.goo.ne.jp/user_image/7d/8f/3d4cd8c132c5edfcbe9c993a8f7999b5.png)
最後にピンをアサインして、新しいxsaファイルを生成します。
![](https://blogimg.goo.ne.jp/user_image/51/8e/2e621009e082e6a5eec80d6562d952a0.png)
さて、これでハードウェアの準備は整いました。Petalinuxのビルドは年明けかな。
同じようにZedBoard+AD-FMCOMMS3にも追加してみます。
ターゲットのHDLはすでにビルド済みなので、これをベースに改修していきます。
https://blog.goo.ne.jp/osqzss/e/160e3ff2c3de95c1b96d0855deea759d
projects/fmcomms2/zedのフォルダから、Vivadoのプロジェクトファイルをopenします。
![](https://blogimg.goo.ne.jp/user_image/50/61/d1559e2a66ba856d55a2dac28b8de7b3.png)
Block Designを開き、AXI UART Liteを追加します。
![](https://blogimg.goo.ne.jp/user_image/14/47/d66faafb2575e0ea4ed46a86ed47ac2d.png)
PLからPSへのinterruptは、Concatというブロックを経由しています。
まずはすでにGNDに接続されているIn10[0:0]を右クリックし、"Disconnect Pin"でピンをリリースします。
![](https://blogimg.goo.ne.jp/user_image/59/56/c97790741a78cbb27d35ee62b20ad4d2.png)
その後、In10[0:0]をAXI UART Liteのinterruptに接続します。
![](https://blogimg.goo.ne.jp/user_image/5b/cb/03882a06c859f755fec0211ba4dd76ac.png)
次に、AXI InterconnectにM11_AXIを追加し、それをAXI UART LiteのS_AXIと接続します。
![](https://blogimg.goo.ne.jp/user_image/24/77/861f4d6bdc718d563c1acbb17f63725a.png)
後は、AXI UART Liteのs_axi_aclkとs_axi_aresetnを、それぞれsys_cpu_clkとsys_cpu_resetnに接続し、
rxとtxを外部に引き出します。
![](https://blogimg.goo.ne.jp/user_image/18/76/622842f5d8df68675c8b5e18ed5031b8.png)
最後に、Address Editorのタブを開き、/axi_uartlite_0/S_AXIのアドレスをアサインします。
これで、Block Designの改修は完了。Validate Designをしてから、Create HDL Wrapperを実行します。
しかし、wrapperは生成されているようですが、"Existing Wrapper File"の警告が出て、wrapperファイルが
アップデートされません。調べてみると、Tclスクリプトで生成されたプロジェクトでは、wrapperファイルが
fmcomms2_zed.srcs/sources_1/imports/hdlから読み込まれていますが、Create HDL Wrapperは
fmcomms2_zed.gen/sources_1/bd/system/hdlにwrapperを生成しているようです。
https://support.xilinx.com/s/question/0D52E00006hpmAYSAY/wrapper-doesnt-update-when-changing-a-block-diagram
そこで、オリジナルのwrapperファイルをRemove File from Projectで、プロジェクトから削除します。
![](https://blogimg.goo.ne.jp/user_image/4f/44/4d49621e54d571838380d1ba9717d7f9.png)
そうすると、Vivadoが自動的に階層構造をupdateして、fmcomms2_zed.gen/sources_1/bd/system/hdlの
wrapperファイルを選択してくれます。
![](https://blogimg.goo.ne.jp/user_image/16/9c/b6af9f5a73775bc5ca2a904635753669.png)
これで、system_wrapper.vにAXI UART Liteのポートが追加されたので、上位階層であるsystem_top.vも
適切に編集します。
![](https://blogimg.goo.ne.jp/user_image/13/dd/e9b61ea95b8f40f1cbf903959c7e05e3.png)
![](https://blogimg.goo.ne.jp/user_image/7d/8f/3d4cd8c132c5edfcbe9c993a8f7999b5.png)
最後にピンをアサインして、新しいxsaファイルを生成します。
![](https://blogimg.goo.ne.jp/user_image/51/8e/2e621009e082e6a5eec80d6562d952a0.png)
さて、これでハードウェアの準備は整いました。Petalinuxのビルドは年明けかな。
※コメント投稿者のブログIDはブログ作成者のみに通知されます