FPGAで実装できる機能と必要なLUTsをざっくりまとめた
Lattice FPGAの活用を検討している。特にFipsyのような超小型FPGAをアクセラレーション目的で活用ができないものかと模索している。FPGAは3cm*3cmぐらいのサイズが主流だが、Latticeは小型FPGAに特化している。IoTのエッジ用途を考えると、よほど小さくて消費電力が低くないと低くないと活用はできないから、Latticeは非常に優位な立ち位置にいると言えるだろう。
LatticeのReference Designは下記に公開されている。FPGAのデザインがここまで整理されて公開されているのは正直意外だった。LatticeとしてはFPGAが売れればいいので当たり前なのだが、設計資産を公開することはASICベンダーだったらあり得ないだろう。こういったオープンソース思考には感服するし、自分もそういった思考の持ち主でいたいと思う。
機能とLUTs
LUTs(ラッツと読むらしい)はFPGAにどれほどのロジックを詰め込めるか表した単位で、多ければ多いほどたくさんの機能が実装できる。Fipsyは256LUTsしかないため、どの程度のロジックが入れ込めるのかと思って調べて見たが、Reference Designはほぼほぼ使えない。ただし、グレードを少しアップグレードするだけで機械学習のようなリッチな処理までできるようになるので可能性の広がりは大きい。専門家には怒られるかもしれないが、ざっくりの値をまとめた。
Function vs LUTs
Function | LUTs*1 |
---|---|
LVDS converter | 180 |
I2C Bus Master | 200 |
ADC | 400 |
Software Microprocessor | 2000 |
H264 | 40k |
Hand Gesture | ? |
イメージでいうと、MHzオーダー程度のインターフェイス処理については数百LUTsで実装可能。圧縮や機械学習のような力技の処理が必要な場合は数千LUTsオーダーが必要。
*1:全ておおよその数字