Python
FPGA
Jupyter
xilinx
PYNQ

pynq-z1 購入から動作確認まで

More than 1 year has passed since last update.

まえがき

QiitaのそろそろプログラマもFPGAを触ってみよう!という記事を読んで興味を持ったのでDigilent社製の評価ボードpynq-z1を購入しました。

このボード、$229.00と少々お高く(とはいえFPGA評価ボードとしては安い部類)、現時点では頼みのスイッチサイエンスさんや秋月電子さんが扱ってなくて送料もかかってしまうため一ヶ月ばかり躊躇したのですがえいや!でポチりました。

今日届いて動作確認を行ったところです。

  • 実行環境
    • Windows 10

購入

  1. Digilentのサイトから購入できるのですがアカウントの作成が必要でした。メールアドレスがアカウント名になりますがメールアドレス自体はアカウント作成後変更可能です。
  2. アクセサリーキットはイーサネットケーブル、マイクロSDカードとACアダプターなのでこれは不要。pynq-z1はmicro USB端子からも給電できるため既にRaspberry Pi用に持ってるものを流用しました1
  3. 支払いはクレジットカードまたはPayPalが使える…はずでしたがなぜかPayPalだと支払いがうまく進まずにぐるぐる回りしてしまいました。ここは素直にクレカで支払いました。
  4. 配送はFedexです。今はFedexっておうちまで持ってくるんですね。以前は確かクロネコが持ってきてたと思いましたが。日曜日に購入したので発送は月曜日、そして木曜日には到着したのですが不在につき持ち帰り。その後日本通運(今はここと提携しているらしい)にバトンタッチされて金曜日に来訪、また不在票が…ここでやっと「配達時間指定」ができました。これはちょっと不便です。2日間ロスするのでもし週半ばに発注していたら翌週末にようやく受け取りになるところでした。

開梱

これが箱。Fedexの箱が大きいので「ちっちゃ!」という印象。実際はRaspberry Piのおよそ倍の大きさです。
外箱

開けてみると導電性のスチロールに挟まった姿で出てきます。静電防止袋に入ってると思ってたんで一瞬戸惑いました。
中身

準備とスイッチオン

基本的にGetting Startedに従ってやっていけばいいですがUSBシリアル通信を使うやり方の説明が結構あります。ただ、pynqの本来の使い方である「Pythonを使ってFPGAを操作する」であればネットワーク経由で操作する方が絶対楽なので読み飛ばしていいと思います2

  1. micro SD(8GBあればとりあえず十分)にLinuxのイメージをダウンロードしてきて焼きます。Raspberry PiでRaspbianを使う場合と同じです。ドキュメントページにもありますがWindowsなのでWin32DiskImagerを使いました。
  2. Setup the PYNQ-Z1に従って 1)ジャンパがSD側になってることを確認(最初からそうなっていました) 2) OSイメージ焼いたmicro SDを挿す(基板の裏側にソケットがあります) 3) マイクロUSBに電源をつなぐ 4)イーサネットケーブルを挿す
  3. 電源スイッチを入れます…あれ?動かない(;_;) ・・・はい、文章の方には書いてあるんですが電源スイッチの横にあるPowerジャンパー、これをREG側(買ってきた時点の状態)からUSB側に挿し変える必要があります。
  4. 無事にLEDがチカチカし始めて起動しました

動作確認

初期状態ではDHCPでIPアドレスを取得するようになっていますのでpynq-z1のアドレスがわかればsshでログインできますが、ドキュメントページにあるように

http://pynq:9090

をアクセスしてまずはpynqが無事に生きてることを確認しましょう。
pynqJupyter.png

ここで初期パスワード xilinx を入れてJupyter Notebookの画面が出ればOKです。
pynqJupyter2.png

IPアドレスを知るには

Advanced IP Scannerを使いました。うまく見つかるとPYNQというホスト名でIPが表示されます。

せっかくJupyter Notebook(Python3)が動いているのですからこちらのPythonのプログラムを動かしてeth0のIPアドレスを読み取る手もありますね。

sshでログインする

IPがわかればsshでログインしましょう。初期アカウント、パスワードともにxilinxです3

$ ssh xilinx@192.168.0.10  (IPアドレスは適宜)

pynqlogin.png

ログインしてみるとUbuntuの(なぜか)15.10でした。~/scripts以下にいくつか親切そうなスクリプトが用意されています。Linuxに慣れてない人向け?のもありますね。

pynqをアップデートする

Ubuntuなので sudo apt update && sudo apt upgradeしそうになりますが専用コマンドを使わないとpynq(つまりPythonを使ってFPGAを触る部分)のアップデートができません。
~/scripts/update_pynq.shでJupyter関連のexampleとFPGAの中身のプログラムデータ(bitstream)など必要なものが自動的にダウンロード→アップデートされます。
買ってきたものにはpynq 1.0が入っていましたがアップデートすると1.3になりました。

これから少しずついじり始めることにします。

チップが結構熱くなるのでまずはヒートシンクとファンがいるかな。



  1. ただしこのせいで一瞬焦ることに。 

  2. FPGAを専用プログラミングツール(Vivado HLSなど)からプログラムするときには必要 

  3. 念のため、動作確認後はパスワードを変えておくのがオススメ