1. basaro_k

    No comment

    basaro_k
Changes in body
Source | HTML | Preview
@@ -1,115 +1,115 @@
#FPGAのはじめかた(2018~2021年版)
![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を使うには(少なくても2013年前の段階では)、少なくても塊のお肉を買って玉ねぎを何時間も炒めて、というレベルの知識と根性?が必要だったのです。今は少し緩和されましたが、それでも使うためには、勉強しないといけない量は多いです。
#Ultra96ボードの紹介
2018年にAVNET(アヴネット)社から、入門用FPGAボードとして、Ultra96ボードが発売されました。
そして、このボードは私の主観的予測ですが、4~5年に一度の入門用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の機能が一体化されています。
4~5年の一度のFPGA入門ボードと言われる理由は、次ことがあるからです。
- 旬のデバイスが使われていること
- 性能のわりに値段が安いこと 
- メーカーが力をいれていること
- 情報が多いこと 
-こういう条件がそろったボードは爆発的に売れて、情報も一気に増えますね。RaspberryPiは、その典型です。FPGAでは、ZYBOというボード、DE10というボードにそういう現象が見られました。
+こういう条件がそろったボードは爆発的に売れて、情報も一気に増えますね。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)
上の図は2018年6月にXILINX社から出てきた資料の一つです。今後FPGAを使う人として、何処をターゲットにしているかを示しています。
一番下がハードウェア技術者向けです。VerilogやVHDLを使う領域で、(一部C言語やIP)今までFPGAを使ってきた人にはとっかかりやすい領域になります。
真ん中が組み込み向けエンジニアをターゲットにしています。C、C++をターゲットにしていますね。ここで、ARMやLinuxがあります。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を通して、情報を流していきたいと思います。
まずは、Qittaで、Ultra96の情報を、FPGA初心者向けから、そこそこ使えるようになるまで、(塊のお肉でハンバーグを作れるようになるまで)暇を見つけてはご紹介できたらと思います。
また、FPGA勉強会として、実際に手を動かすこともやっています。こちらはUltra96だけとは、限らないのですが、実際に使ってみたら、どうなるだろうと不定期開催を考えています。だいたい土日開催です。
あとは、有料で、AVNET社主催で、毎月定期コースを行っています。Ultra96向けコンテンツを充実する予定ですので、お待ちください。
今すぐ食べたい?いや、使いたいという人もいるでしょう。そのためにオリジナルトレーニングや、コンサルタントも対応しています。有料になりますが、すぐに対応したい方はお声かけください。直接でも対応可能ですし、取引の関係で直接が難しい方も、AVNET、PALTEK、HDLAB各社経由での対応も可能です。
Ultra96ボードを買ってしまったら、結構情報があります。大いに情報と探して、楽しんでみましょう。
#ステーキが食べたい?
ハンバーグではなくて、ステーキがいいんだが、、、、?
Ultra96はFPGAの中でも、小さいデバイスになってしまいました。
なので、ハンバーグで満足しない人もいると思います。はじめてのUltra96シリーズでは残念ながら、ステーキは扱いません。
私も別記事で書くことになると思いますし、すでに優秀な方がいくつか記事を書いていらっしゃいますので、それを参考にしていただければと思います。
ここまで読んでいただきありがとうございました。