Ultra96 V2 に PYNQ の環境を構築して Jupyter Notebook へログインする

# はじめに

[Ultra96 v2](https://www.avnet.com/wps/portal/japan/products/product-highlights/ultra96/) でロジックのハードウェア化にトライします。まずは、Ultra V2 に PYNQ 環境を作り、SSH と Jupyter Notebook でアクセスするところまで。

まずは、Xilinx のプロセッサーの概観です。-> [Xilinx 製品情報](https://japan.xilinx.com/products/silicon-devices/soc.html) 

[Getting started](https://www.96boards.org/documentation/consumer/ultra96/ultra96-v2/getting-started/) は、CPU を使っているだけで、FPGA っぽいことは全くしていない様子。FPGA が使えたらと思い方法を調べたところ以下の方法があるらしい。

- PYNQ (Python for Zynq)
Python（Jupyter Notebook）ハードウェア化できる。JTAG で接続しなくてもよさそうで、お手軽な印象。

- Vivado
生々しい感じでハードウェアを設計できる。ハードウェアエンジニア向けっぽい。

- Vitis（SDSoC）
C/C++ で任意の処理をハードウェア化できる。お手軽かもしれない。
[Tutorials](https://github.com/Xilinx/SDSoC-Tutorials/)

PYNQ を試してみる。

# やってみる

## ダウンロード

[PYNQ - boards info](http://www.pynq.io/board.html) のページを開く。

Community boards の [Avnet Ultra96-V2: v2.5 PYNQ image(1,790,291,697 bytes)](http://bit.ly/2MMrXcS) をダウンロードする。
ダウンロードがとても遅い。待っている間にドキュメントなどを読んだ。

展開するとこんな感じ。

```bash
$ unzip ultra96v2_v2.5.zip
$ ls -l ultra96*
-rw-r--r--  1 root root 6604447744 10月 12 17:38 ultra96v2_v2.5.img
-rw-r--r--  1 root root 1790291697 12月 22 21:54 ultra96v2_v2.5.zip
```


## インストール

- SD カードに書き込み

```bash
$ sudo dd if=ultra96v2_v2.5.img of=/dev/sdc bs=1MB
6604+1 レコード入力
6604+1 レコード出力
6604447744 bytes (6.6 GB, 6.2 GiB) copied, 502.998 s, 13.1 MB/s
```

SD カードを抜き差しして、SD カードをマウント。
マウント先は、/media/user/root/ のつもり。

- WiFi 設定

```bash
$ wpa_passphrase your_ssid
passphrase
network={
  ssid="your_ssid"
  # psk="passphrase"
  psk=0123456789abcdef0123456789abcdef0123456789abcdef
}
$ sudo vi /media/user/root/etc/wpa_supplicant.conf
network={
  ssid="your_ssid"	
  psk=0123456789abcdef0123456789abcdef0123456789abcdef
}
$ sudo vi /media/user/root/etc/network/interfaces.d/wlan0
auto wlan0 # <-- 一行目に追加
iface wlan0 inet dhcp
    wireless_mode managed
    wireless_essid any
    wpa-driver wext
    wpa-conf /etc/wpa_supplicant.conf
```

参考：[Technooooootes - Ultra96v2 で PYNQ イメージを動かす](https://www8281uo.sakura.ne.jp/blog/?p=739)

- 起動

SD カードを入れて電源スイッチ(SW4)をON。

- ログイン

DHCP サーバーのログを確認し、見慣れない MAC アドレスの IP アドレスを確認する。
うちのは、「F8:F0:05:xx:xx:xx」だった。

```bash
$ ssh xilinx@<ip address>
xilinx@192.168.***.***'s password: 
Welcome to PYNQ Linux, based on Ubuntu 18.04 (GNU/Linux 4.19.0-xilinx-v2019.1 aarch64)

Last login: Sat Oct 12 01:30:36 2019
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

xilinx@pynq:~$ 
```

## 利用

- Jupyter Notebook にアクセス

ブラウザで以下にアクセスする。

```
 http://<ip address>/
```

- 認証

パスワード欄に、xilinx を入力してログイン。

- サンプルコード

サンプルコードを動かしたり読んだりする。

# まとめ

無事に Jupyter Notebook にアクセスできた！
16 GB の SD カードでは問題なかったけど、32 GB の SD カードだとうまく焼けなかった様子。

# 参照

- [Ultra96 PYNQ documentation](https://ultra96-pynq.readthedocs.io/en/latest/)

- [PYNQ - Get Started](https://pynq.readthedocs.io/en/v2.5/)

- [PYNQ - Community](http://www.pynq.io/community.html) 

- [PYNQ - tutorial](https://github.com/Xilinx/PYNQ_Workshop)

- [96boards - Getting started](https://www.96boards.org/documentation/consumer/ultra96/ultra96-v2/getting-started/) 
- [96boards - Downloads page](https://www.96boards.org/documentation/consumer/ultra96/ultra96-v2/downloads/)

- [Qiita - 第１回 Setup PYNQ-Z1
](https://qiita.com/0x20FE/items/9b5e8e7a51ac0d9eabbc)