4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PYNQでFPGAプログラム大全(Xilinx編) - それUbuntuで→Macでも!

Last updated at Posted at 2020-03-15

記事を書く度にやってることが違かったりするんですが、
今回はFPGAプログラム大全の内容をPYNQでやります。(コロナで出掛けられないし)
本書で取り扱っているボードではないですが、PYNQでもできますと書いてあります。
PYNQ向けのファイルも用意されています。(ただしサポート対象外)

本はこちら
FPGAプログラミング大全 Xilinx編

そしてうちにはWindowsがないので、Ubuntuでやります。
さらに(少し湾曲した表現で言えば)Macでもやります。

Vivadoのインストール

本書のAppendix Ⅰに従ってVivadoをインストールします。バージョンは本に従って2016.2です。もちろんLinux版をダウンロードします。
Vivado Design Suite - HLx Edition - 2016.2 Full Product Installation

ダウンロードしたら適当な場所において、実行権限をつけて実行します。

$ chmod 755 Xilinx_Vivado_SDK_2016.2_0605_1_Lin64.bin
$ sh Xilinx_Vivado_SDK_2016.2_0605_1_Lin64.bin
# 実行権限つけたらsh要らないか・・・。

図Ⅰ-4のところ、Linuxには「Install Cable Drivers」がありません。
代わりにNoteが書いてあります。が、全く見ていなくてあとで困りました。
image.png

インストール先は/opt/配下にしました。(権限がないと言われたので、/opt/Xilinxを手動で作りました。)

Appendix Ⅰ-2についてですが、PYNQのボードファイルはないのと、
LinuxにはUSBシリアル変換ドライバがデフォルトでインストールされているので不要です。
(FTDIのサイトからのダウンロード、インストールは不要という意味で。)

PNYQ用の設計データの準備

こちらのサポートサイトにPYNQ用の設計データがあるので、
ダウンロードしておきます。
FPGAプログラミング大全 Xilinx編|サポート|秀和システム

ダウンロードしたzipファイルの中にある、「PYNQ-Z1利用時の補足.pdf」というファイルは、
よく目を通して起きましょう。

XQuartzのインストール(Mac)

Ubuntuはちょっと離れた場所にあるので、MacでVivado使いたいなー。
でもMac版はないしなー、ということでXでUbuntuに繋ぎます。

必要なのはXquartzです。
XQuartz
最終更新は2016-10-29ですが、Catalinaでもちゃんと動きました。
インストールしたあとはログアウト→ログインをします。

XQuartz(xterm)を起動したら、

$ ssh -X hoge@hogehoge.local

と、Xオプションをつけてssh接続します。

$ /opt/Xilinx/Vivado/2016.2/bin/vivado &

と起動すれば、MacでVivadoが起動します。(実際にはMacで起動したように見えるだけ。)

image.png
ここでうっとり。。。

実はXQuartzをインストールした環境であれば、
terminal.appでssh -Xしても大丈夫です。
X Windowが必要になったら自動的にXQuartzが起動します。
xtermは日本語対応していないので、地味に不便。

プロジェクトの作成

ここまで準備できたら第2章を進めます。

UbuntuとPYNQを繋ぐときにJP4(boot mode)をJTAGにします。

ボードの選択(図2-4)のところではPartsを選んで、「xc7z020clg400-1」を選択する。
詳細はPYNQ-Z1利用時の補足.pdfを参照。

回路記述ファイル(blink.v)と制約ファイル(blink.xdc)はサポートサイトからダウンロードしたzipファイルに入っているものを使います。

と進んだところで、問題が発生。
【2-1-8】のOpen Target→Auto Connectを選んでも、「There is no current hw_target.」と出て何も出てきません。。。

Cable Driverのインストール

インストール時のNoteをちゃんと読まなかったためにちゃんとZYNQをちゃんと認識できていなかったようです。

ここはTry and Errorでやったので、正しい手順ではないかもしれません。

1. VCP Driver

まずはWindowsと同じように、FTDIのVCP Driverを見てみます。
Virtual COM Port Drivers
Linuxの行を見てみるとドライバーはなくTN-101を見ろって書いてあるので見てみます。
99-usbftdi.rulesというrulesファイルを作れと書いてあるので作ってみます。
ProductID(PID/idProduct/product)はlsusbで確認した値を入れます。

$ lsusb
Bus 001 Device 010: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
# 上記では6010がProductID。0403はVendorID。

さらにPDFの下の方に

It is not possible to access the Virtual COM port in Ubuntu until the “brltty” port is removed. This is done as
follows:
sudo apt-get remove brltty <CR>

とあるので、brlttyを削除します。

2. Cable Driverのインストール
Appendix Ⅰの「USB-JTAGドライバのトラブル」を参照して、
Cable Driverのインストールをしてみました。

Linux版では、インストーラーは、
/opt/Xilinx/Vivado/2016.2/data/xicom/cable_drivers/lin64/install_script/install_drivers
にあります。
そこにあるinstall_driversを実行すると、
同じフォルダにあるinstall_digilent.shsetup_pcusbが実行されて、
52-xilinx-digilent-usb.rules52-xilinx-pcusb.rules
/etc/udev/rules.d/にコピーされるようです。

$ cd /opt/Xilinx/Vivado/2016.2/data/xicom/cable_drivers/lin64/install_script/install_drivers
$ sudo sh install_drivers
$ udevadm control --reload-rules
# 多分これで良いんだと思うけど、よくわからなかったのでOS再起動をしました。

と、ここまでやったらちゃんとボードが認識されるようになりました。

実はボードファイルもある

実はPYNQ-Z1のボードファイルもあります。
こちらを使っても良さそうです。
Board Settings — Python productivity for Zynq (Pynq)

無事にLチカ

なんやかんやありましたが、無事macからリモートで、Ubuntuに接続されたPYNQでLチカするところまでたどり着きました。
で、ここで重要なことに気がついたんですが、リモートなのでLチカしてても見えませんね。。。

Appendix UG973

さて、インストールのときに無視してしまったUG973についてあとから調べました。
UG973とはVivadoのUser Guideのことでした。
そしてそれを見たところ、しっかりとLinuxのCable Driverのインストールについて書いてあります。
手順は上と一緒なので割愛します。

Vivado Design Suite ユーザー ガイド

これを見ると52-xilinx-ftdi-usb.rulesもあるみたいだけど、2016.2にはなかったなぁ。

Appendix Macでも

リモートにあるとLチカ見られなくてしょんぼりしてましたが、
Ubuntuでbitファイルを作って、それをJupyter Notebookで実行してあげればよさそうです。(ちょっと面倒だけど。)
順をおっていうと、

  1. Ubuntuのvivadoでbitファイルを作成
  2. Ubuntuで作ったbitファイルとtclファイルをPYNQ-Z1に転送
  3. PYNQのJupyter Notebookで新しいノートを作成
  4. Overlayでbitファイルを読み込み
  5. PYNQでLチカ!

という流れです。4では以下のようにOverlayします。

from pynq import Overlay
Overlay("blink.bit")
# ノートとblink.bit(とblink.tcl)が同じフォルダにあります。

Lチカを止めるときはPROGボタンを押します。

これでやっとMacを使って、PYNQでFPGAプログラムの勉強ができそうです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?