ARTY Z7で「PYNQ」の環境を動かせるとのことなので、どんなものかお試しで挑戦してみました。
・PYNQとは?
ざっくり簡単に言うと、ArmプロセッサとFPGAが組み合わさったザイリンクス社のSoC「Zynq」を簡単に扱えるようにするオープンソースプロジェクトです。
FPGAの開発に必要なVerilogやVHDLといったハードウェア記述言語での設計を意識することなく、Pythonの言語でZynqを制御するアプリケーションが作れる環境のようです。
PYNQプロジェクトのサイト:http://www.pynq.io
・準備
ARTY Z7は「PYNQ-Z1」というPYNQ対応ボードとほぼ同じ仕様なので、PYNQ-Z1用の環境がそのまま使えるようです。
PYNQプロジェクトのサイトからPYNQ-Z1用のイメージファイルがダウンロードできます。
・microSDカードにイメージファイルを書き込み&LANケーブル接続
- Raspberry pi用のLinuxイメージをSDカードに書き込むのと同じ要領で、ダウンロードしたイメージファイルを書き込みます
- 書き込んだSDカードをボードにセットして、SDカードから起動するようにジャンパーピンを設定
- LANケーブルで自身のLAN環境に接続(またはPCのLANコネクタに直接続)すれば準備完了です
・早速使ってみる
電源を入れると、ボード上でPYNQ環境のLinuxが起動します。
同じネットワーク内にあるPCのWebブラウザからボードのIPアドレスにアクセスすると、「Jupyter Notebook」の画面が開きます。
PythonやJupyter Notebookを使った経験はほとんどなかったのですが、ブラウザだけでZynq搭載ボードのプログラミングが簡単にできるのはちょっと感動しました。
ちょっとした気分転換にPYNQプロジェクトの環境で遊んでみました。
ボードはARTY Z7を使っています。
python(しかもブラウザのみ)で、PL部のI/Oなどが簡単に操作できるのは面白いです。
今回は試してませんが、設定次第ではiPad等ブラウザからでも制御できるかもしれませんね。 pic.twitter.com/fOOb4lI74b— iw回路設計 (@iwCircuitDesign) 2019年2月3日
今回はボード上のLEDを光らせてみただけですが、Arduinoのように簡単なAPIでZynqのロジック部のI/Oなどが制御できます。
以前やってみたVGAの画面出力などもこのPYNQ環境でできるかどうかやってみたいですね。
・おまけ(iPadからの操作)
Webブラウザからボードにアクセスするということは、「iPad等からでも操作できるのでは?」とふと思い、やってみたら出来ました。
実用的かどうかはわかりませんが、Jupyter Notebookが動作するブラウザであればタブレット端末でもPythonでPYNQ対応ボードの制御ができそうです。
ネットワークの設定は必要でしたが、iPadのブラウザからでもPYNQを操作できました。 pic.twitter.com/AP78kMcYWT
— iw回路設計 (@iwCircuitDesign) 2019年2月3日