先日購入したUltra96-V2。チュートリアルに従ってLED の点灯まで行ってみました。
Mac でFPGA 開発は難しい?
まず最初に理解しておかなければならないことは、Mac でFPGA の開発はやや面倒ということ。近年のXilinx 社製のFPGA はVivado というツールを使用して行うのですが、そのVivado がWindows とLinux しか対応しておらず、Mac に直接インストールすることができません。
とはいえ今回はチュートリアルのため、すでにデザインが用意されています。Vivado を利用する必要はないので大丈夫です。
チュートリアルは以下のドキュメントを参考に進めていくことができます。
Ultra96-V2 Getting Started Guide
micro SD カードにイメージを書き込み
まず最初に行うべきことは、Ultra96-V2 に付属のmicro SD カードにイメージを書き込むこと。イメージは以下のページからダウンロードすることができます。
http://avnet.me/ultra96-v2-oob
zip ファイルでサイズは425MByte、それを解凍するとなんとおよそ16GByte となるので、それなりに時間がかかります。ディスクの空き容量にも注意が必要です。
さらに書き込みには専用のソフトが必要。balenaEtcher というソフトを利用して書き込みを行いますので、インストールが必要です。この書き込みにも時間がかかります。のんびりと待ちましょう。
現行のMacBook Pro にはmicro SD カード書き込み用のコネクタは用意されていないので、僕は以下のドックを利用しています。
EKSA USB Type-C ハブ 7in1 PD急速充電 Thunderbolt3 USB3.0 HDMI SD/TF MacBook Pro専用
Ultra96-V2 起動
micro SD カードへの書き込みが正常に完了していれば、この時点でUltra96-V2 の起動が可能となっているはずです。micro SD カードをUltra96-V2 に挿入後SW4 と書かれたプッシュボタンを押下。しばらくしてDONE と書かれた青いLED が点灯すれば起動成功です。

UART 経由でログイン
次に行うのはUART 経由でのUltra96-V2 へのログイン。PC とUltra96-V2 をAES-ACC-U96-JTAG 経由で接続します。

接続後にターミナルで以下のコマンドを叩くと、usbserial が確認できました。
$ ls -l /dev/tty.*
crw-rw-rw- 1 root wheel 18, 4 8 13 18:08 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw- 1 root wheel 18, 2 8 13 18:08 /dev/tty.MALS
crw-rw-rw- 1 root wheel 18, 0 8 13 18:08 /dev/tty.SOC
crw-rw-rw- 1 root wheel 18, 10 8 20 19:30 /dev/tty.usbserial-1234_oj10
crw-rw-rw- 1 root wheel 18, 12 8 20 19:30 /dev/tty.usbserial-1234_oj11
UART は/dev/tty.usbserial-1234_oj11
なので、以下のコマンドで接続します。
$ sudo cu -s 115200 -l /dev/tty.usbserial-1234_oj11
一度Enter をクリックすればログインができます。Password もroot です。
ultra96v2-oob-2018-3 login: root
Password:
Wifi 接続
ログインが完了したことで、シリアル経由でUltra96-V2 の内部をいじることが可能になりました。次はWifi の設定を行っていきます。編集の必要があるのは~/wpa_supplicant.conf
これをvim で編集します。
[root@ultra96v2-oob-2018-3:~# vim ~/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
key_mgmt=WPA-PSK
ssid="<ssid>"
psk="<pass>"
}
<ssid>, <pass> にwifi の情報を入力します。5GHz の11ac は利用できないので注意して下さい(2.4GHz であれば問題なし)
最後に~/wifi.sh
を実行することでwifi への接続が完了します。このときもしエラーが出力されたら、先程のsupplicant.conf
に間違いがないか確認してみて下さい。
[root@ultra96v2-oob-2018-3:~# ~/wifi.sh
Lチカ
それではLチカを試しましょう。チュートリアルデザインではブラウザ上からLED にアクセスできるので、まずはどのIP Address が割り当てられているかを確認します。
[root@ultra96v2-oob-2018-3:~# ifconfig
IP Address が確認できたら、ブラウザのURL 欄にその値を打ち込むとUltra96-V2 にアクセスできます。

アクセスできたら「Ultra96 GPIO LEDs」をクリックしましょう。すると以下のようなページに遷移するのですが、ここのドロップダウンリストの値を変更するとUltra96-V
2 ボード上のLED も切り替わります。これでLチカの完了です

mini DP から画面に出力してのLチカも可能
ここまではUART 経由で設定を行ってきましたが、mini DP 経由で画面を出力し、そちらを見ながら設定をすることも可能。僕は以下の2つを組み合わせて画面出力を行っています。
アイネックス Mini DisplayPort – HDMIアクティブヘンカンケーブル [ 20cm ] AMC-MDPHD
Amazonベーシック HDMIケーブル 0.9m (タイプAオス – タイプAオス) ハイスピード
Ultra96-V2 を起動すると自動的にブラウザが立ち上がり、先程のLチカが可能となります。
また、このGUI 上からもWifi の設定ができるはずです。ですが、僕の環境だけかもしれませんが、GUI 上からだと正常にWifi に接続することができませんでした。

なんとかチュートリアルをクリアできました。引き続きいろいろいじっていこうと思います。