はじめてのUltra96　　FPGAのはじめかた(2018～2021年版)

#FPGAのはじめかた（２０１８~２０２１年版）
![zynqmp.jpg](https://qiita-image-store.s3.amazonaws.com/0/299213/6701a5de-cb74-6ebc-c99f-25d6abfcb4b6.jpeg)

ここ数年、FPGAが話題になることが多くなってきました。マイクロソフトがFPGAを採用した、インテルが巨大FPGAメーカであるアルテラを買収した、機械学習ではFPGAがいいらしい。話題にことつきません。
では、FPGAをやってみたいけど、何処から始めていいの？となると、困ってしまいます。
グーグルでFPGAと検索すると、たくさん情報はあります。FPGAメーカーであるXILINX（ザイリンクス）社、インテル社にはたくさん情報があるけど、何がなんなの？
FPGAをやってみたいけど、何処から始めたらわからない。
よく聞く話です。
多くの情報は、なになに（明言はない）の知識が必要で、その知識のある人向けに書かれているからです。FPGAを仕事としている人さえ、難しいなと思う資料が多いですから。というより、単なる勉強不足かもしれませんが。。。

#おいしいハンバーグが食べたい。
わかりやすい例でハンバーグを食べたいとします。ハンバーグにしたのは私がただ、食いしん坊だからです。
![Hamburg_steak.jpg](https://qiita-image-store.s3.amazonaws.com/0/299213/8da283b0-eec7-623c-8824-61d0f6c94bf1.jpeg)

ハンバーグを食べる方法はいろいろあります。
「びっくりドンキー」「フォルクス」に行けば、お金を払えば、ハンバーグを出してくれて、気軽にハンバーグが食べれます。
いやいや、もっとおいしいハンバーグが食べたい。。という人は、高級ホテルのレストランの何千円、何万円？のハンバーグを頼んでもいいでしょう。とてもおいしい。。。？

お家で食べたい人もいるでしょう。最近コンビニのハンバーグ、おいしいです。下手なお店よりいいのでは？
やっぱりハンバーグはお家で手作りだよね。。という人もいると思います。お肉（ひきにく）とハンバーグの素を買ってきて、混ぜて焼けば、気軽にできます。もうちょっと、おいしいのがいい人は、「クックパッド」においしそうなハンバーグのレシピ掲載しています。
やっぱり作りからにはもっと時間かけておいしいものつくろうよ、、と塊のお肉を買ってきて包丁で細かくたたいて、玉ねぎをみじん切りにして、何時間も炒めて、ワイン使っておいしいソースをつくってこそハンバーグだよね。（ちなみに私はここをやりたいタイプです)
やっぱり、究極のハンバーグ食べたいから、おいしいレストランで、何年か修業して、高級食材買ってきて、作るんだという人もいるでしょう（ナンカチガウ？）

FPGAに話を戻します。
今までのFPGAを使うには（少なくても２０１３年前の段階では)、少なくても塊のお肉を買って玉ねぎを何時間も炒めて、というレベルの知識と根性？が必要だったのです。今は少し緩和されましたが、それでも使うためには、勉強しないといけない量は多いです。

#Ultra96ボードの紹介
２０１８年にAVNET（アヴネット）社から、入門用FPGAボードとして、Ultra96ボードが発売されました。
そして、このボードは私の主観的予測ですが、４～５年に一度の入門用FPGAボードとして、取り上げられます。
![TNN24070_0.png](https://qiita-image-store.s3.amazonaws.com/0/299213/1a3659b5-83df-22f9-7503-fcb0affbd79b.png)

Ultra96は XILINX社のFPGAの一つで、[Zynq（ジンク） UltraScale+（ウルトラスケールプラス）](https://japan.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html)が使われているFPGAボードです。
CPU付FPGAになりまして、ARM社のCortexーA53*4，Cortex-R5*2というCPUにFPGAの機能が一体化されています。

４～５年の一度のFPGA入門ボードと言われる理由は、次ことがあるからです。

- 旬のデバイスが使われていること
- 性能のわりに値段が安いこと　
- メーカーが力をいれていること
- 情報が多いこと　

Zynq UltraScale+(16nm)はやっと安定供給されてきた感じがあります。それまでは買いたくても、買えなかった。
Ultra96は値段が約３万円。通販サイトで、ここに使われているＦＰＧＡデバイス単体の値段が＄４０４ドル、約４万５千円(２０１８年１０月現在)。なぜか、デバイスより安い。
発売元のAVNET社はもちろん、XILINX社、そして、96boardsを通して、ARM社からも紹介されていて、情報も多い感じです。
グーグル検索でUltra96はもうすぐ１０万件(２０１８年１０月現在)。Zynq UltraScale+の先行ボードである、ZCU102よりはるかに多く、規格元である96boardsでの検索数に追いつくのでは、、、というぐらいの勢いです。ユーザーからの情報が多いのも特徴です。

こういう条件がそろったボードは爆発的に売れて、情報も一気に増えますね。RaspberryPiは、その典型です。FPGAでは、ZYBOというボード、DE0というボードにそういう現象が見られました。

Ultra96の情報としては、次のところから、見ることができます（英語）
http://zedboard.org/product/ultra96
http://zedboard.org/support/design/24166/156
https://www.96boards.org/product/ultra96/
https://www.96boards.ai/products/ultra96/

また、各個人や法人のホームページ、トレーニングも開催してますので、参照てください。

#Ultra96のはじめかた
Ultra96ボードは市販されています。次のところを参照にしていただければ購入できます。
[「はじめてのUltra96 必要なもの」](https://qiita.com/basaro_k/items/e5654a0061883afea889)
では、Ultra96は、どの層をターゲットにしているのでしょうか？？
ハンバーグでいうと、ハンバーグの素とひき肉を買ってきて、自分で焼いてくる方から、塊の肉をたたいて、何時間も玉ねぎを炒めて、作るあたりを想定しています。
技術的にはパソコンが自由にさわれて、簡単なプログラムが書ける人レベルからの人を考えています。

![slid9.png](https://qiita-image-store.s3.amazonaws.com/0/299213/0eae531a-1193-344f-d2a9-38e1d48c4269.png)

上の図は２０１８年６月にXILINX社から出てきた資料の一つです。今後FPGAを使う人として、何処をターゲットにしているかを示しています。
一番下がハードウェア技術者向けです。VerilogやVHDLを使う領域で、（一部C言語やIP）今までFPGAを使ってきた人にはとっかかりやすい領域になります。
真ん中が組み込み向けエンジニアをターゲットにしています。C、C++をターゲットにしていますね。ここで、ＡＲＭやＬｉｎｕｘがあります。HLS（高位合成）を使えば、C言語だけで、FPGAを開発できるようになってきています。
一番上にそれぞれの領域のエキスパートの人が対象になります。機械学習の部分もはいります。使う言語がPythonです。え、、FPGAはPythonで動くの？

次の表は、Ultra96でサポートしている言語と、対応ツールです。

|ツール|Pythonアプリ|C言語アプリ|C言語、OSドライバー|C言語ハードウェア|IP,HDL|
|:-------:|:----:|:----:|:----:|:----:|:----:|
|セルフコンパイル|〇|〇| | | |
|PYNQ|〇|〇| | | |
|SDK||〇|△| | |
|PetaLilux|　|〇|〇| | |
|SDSoC|　|〇|△|〇| |
|Vivado|　|　| | |〇|
|HLS|　|　| |〇|〇|



CPUが入って、Linuxが動くなら、Pythonが動くのは当たり前といえば、当たり前ですがFPGAにわざわざPythonを入れたのは、別の理由があります。
OverRayという仕組みを使い、FPGAの部分を書き換えをPythonで制御できるからです。あらかじめFPGAのデータが必要になりますが、FPGAの高速性をPythonで使えるようになるということです。
FPGAでPythonは、PYNQというフレームワークで実現しております。Qiitaでもいくつか紹介されていますので、PYNQというキーワードで検索してみてください。

Ultra96向けでは次のところで、紹介されています。
https://ultra96-pynq.readthedocs.io/en/latest/
https://github.com/Avnet/Ultra96-PYNQ

もちろん、Pythonだけではなくて、C言語もVerilogもVHDLもできます。

Ultra96ボードを購入してしまったら、すでにある情報をもとに、いろいろ試してみると面白いです。かなりの数のSDカードイメージが公表されており、いろいろ試すことができるようになっています。

##Ultra96と機械学習
FPGAを期待している方には、機械学習をしたいから、と言う方も多いと思います。
すでにUltra96で、機械学習の推論のデモはできており、SDカードイメージも用意されていますので、簡単にどんな具合かを試すことができます。
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841949/Zynq+UltraScale+MPSoC+Accelerated+Image+Classification+via+Binary+Neural+Network+TechTip

また、今後Xilinx社のほうからも、機械学習に対しては力を入れることが発表されており、そのターゲットボードとして、Ultra96も期待できる状態になっています。今後FPGAで機械学習を安価にしたい方は、情報収集してみてもいいかもしれません。

#はじめてのUltra96の今後
より多くの方にFPGAを使ってもらうために、Ultra96を通して、情報を流していきたいと思います。
まずは、Qiitaで、Ultra96の情報を、FPGA初心者向けから、そこそこ使えるようになるまで、（塊のお肉でハンバーグを作れるようになるまで）暇を見つけてはご紹介できたらと思います。
また、FPGA勉強会として、実際に手を動かすこともやっています。こちらはUltra96だけとは、限らないのですが、実際に使ってみたら、どうなるだろうと不定期開催を考えています。だいたい土日開催です。
あとは、有料で、AVNET社主催で、毎月定期コースを行っています。Ultra96向けコンテンツを充実する予定ですので、お待ちください。

今すぐ食べたい？いや、使いたいという人もいるでしょう。そのためにオリジナルトレーニングや、コンサルタントも対応しています。有料になりますが、すぐに対応したい方はお声かけください。直接でも対応可能ですし、取引の関係で直接が難しい方も、AVNET、PALTEK、HDLAB各社経由での対応も可能です。

Ultra96ボードを買ってしまったら、結構情報があります。大いに情報と探して、楽しんでみましょう。

#ステーキが食べたい？
ハンバーグではなくて、ステーキがいいんだが、、、、？
Ultra96はFPGAの中でも、小さいデバイスになってしまいました。
なので、ハンバーグで満足しない人もいると思います。はじめてのUltra96シリーズでは残念ながら、ステーキは扱いません。
私も別記事で書くことになると思いますし、すでに優秀な方がいくつか記事を書いていらっしゃいますので、それを参考にしていただければと思います。

ここまで読んでいただきありがとうございました。