Python
DeepLearning
FPGA
ultra96
zynqMP

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

FPGAのはじめかた(2018~2021年版)

zynqmp.jpg

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

おいしいハンバーグが食べたい。

わかりやすい例でハンバーグを食べたいとします。ハンバーグにしたのは私がただ、食いしん坊だからです。
Hamburg_steak.jpg

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

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

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

Ultra96ボードの紹介

2018年にAVNET(アヴネット)社から、入門用FPGAボードとして、Ultra96ボードが発売されました。
そして、このボードは私の主観的予測ですが、4~5年に一度の入門用FPGAボードとして、取り上げられます。
TNN24070_0.png

Ultra96は XILINX社のFPGAの一つで、Zynq(ジンク) UltraScale+(ウルトラスケールプラス)が使われているFPGAボードです。
CPU付FPGAになりまして、ARM社のCortexーA53*4,Cortex-R5*2というCPUにFPGAの機能が一体化されています。

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

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

Zynq UltraScale+(16nm)はやっと安定供給されてきた感じがあります。それまでは買いたくても、買えなかった。
Ultra96は値段が約3万円。通販サイトで、ここに使われているFPGAデバイス単体の値段が$404ドル、約4万5千円(2018年10月現在)。なぜか、デバイスより安い。
発売元のAVNET社はもちろん、XILINX社、そして、96boardsを通して、ARM社からも紹介されていて、情報も多い感じです。
グーグル検索でUltra96はもうすぐ10万件(2018年10月現在)。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 必要なもの」
では、Ultra96は、どの層をターゲットにしているのでしょうか??
ハンバーグでいうと、ハンバーグの素とひき肉を買ってきて、自分で焼いてくる方から、塊の肉をたたいて、何時間も玉ねぎを炒めて、作るあたりを想定しています。
技術的にはパソコンが自由にさわれて、簡単なプログラムが書ける人レベルからの人を考えています。

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

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

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

ステーキが食べたい?

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

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