Edited at

はじめての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シリーズでは残念ながら、ステーキは扱いません。

私も別記事で書くことになると思いますし、すでに優秀な方がいくつか記事を書いていらっしゃいますので、それを参考にしていただければと思います。

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