スマートフォン(スマホ)の爆発的な普及を背景に、スマホに限らず、さまざまな組込機器でARMコアを採用したマイコン(ARMマイコン)を活用しようという動きが増している。それに併せて半導体ベンダ各社もARMコアを搭載したマイコンを提供しており、まさに猫も杓子も、といった様相を呈しているといえよう。

また、同じくARMコアを搭載したSoCやプロセッサもさまざまなものが提供されるようになってきた。しかし、こうしたARMマイコンやSoCは、裏を返すと提供するベンダの数が多く、またサードパーティ含めた多くの企業が開発ボード含めて提供しているため、実際の開発の際には、どれを選べば良いか? といった問題も往々にして生じることとなる。

選定デバイスの候補の1つとして浮かび上がる、FPGAという選択肢

こうした悩みを解決する手法の1つとして、ハードマクロを用いたARMコアを搭載したFPGAの活用がある(Xilinxでは「Zynq-7000シリーズ」、Alteraでは「アルテラ SoC」といったものが提供されている)。FPGAと言われると、VHDLとかVerilog HDLといった、よく分からないハードウェア記述言語を覚えないといけないから使いたくない、という声をエンジニアから良く聞く。しかし、実は最近、そうした状況はかなり改善され、わざわざそうした言語を新たに覚えなくてもC言語ベースで開発を行うことも可能となってきたのである。本稿では、ARMマイコンやプロセッサの選定で頭を悩ませるエンジニアへの解決手法の1つとして、「(ARMコアを搭載した)FPGAの活用」を提唱したい。

例えばAlteraでは、ARM搭載FPGAデバイスとして、ハイエンドの「Stratix 10 SoC」、ミッドレンジの「Arria 10 SoC」「Arria V SoC」、ローコストの「Cyclone V SoC」シリーズを展開している

FPGAの優位性と、開発・設計手法

ARMコアを搭載したFPGAであれば、ARMコア向けエコシステム(例えばARM純正の「DS-5(Development Studio 5)」)を活用した開発が可能なため、ほかのARMマイコンなどと開発環境としては大差がないといえるし、ARMのAXIバスに対応しているので、ARMをはじめとするAXI対応のIPをそのまま使うことも可能だ。また、ARMコア部分だけを活用して、FPGA部分に一切触れないで利用するといった、単機能のプロセッサのような使い方もできる。FPGAの使い方としては、いかがなものか、という声もあるが、最近は多機能なSoCが多く、演算処理の機能部分だけが欲しい、という人にとっては、むしろ使い勝手が高い場合もある(後でFPGA部分をいじってインタフェースなどを設計してSoC的に使う、ということも可能だ)。

FPGAでネックになるのはチップ単体で見ると、単価がマイコンに比べて高いことにあるだろう(ARMコア搭載FPGAも同様)。しかし、最大のメリットである各種機能の拡張性や設計の柔軟性を活用することで、例えばある特定の周辺I/OのIP (標準的なものであれば無償で提供されているものもある)を、FPGAのロジック領域に空き容量があれば、マイコンではサポートしきれないだけの数を搭載させることも可能だし、意外と知られていないが、画像処理関連のIPを用いれば4K映像でさえも出力できることから、マイコンやプロセッサを中心としたシステムボードのすべてを1チップで実現することも可能だ。例えばAlteraの最新世代品の1つ「Arria 10 FPGA & SoC」は、IEEE 754に準拠したハードウェア浮動小数点DSPの利用も可能だ。システム全体として見れば、基板サイズの小型化や簡素化、BOMコストの低減により、結果として安く上がる場合も多い。

また、開発環境も上述のとおり、ARM純正のものを活用できるし、フルのLinuxを動かすためのツール一式(前述のDS-5)も提供されている。このほか、例えばAlteraの場合、OpenCLを活用した設計も可能としており、自分の欲しい処理に特化したハードウェアをOpenCLベースで開発することもできる。こうしたツールを活用することで、ハードウェアのことを知らないソフトウェアエンジニアだけでも開発ができ、処理時間のボトルネックとなるCコードのアクセラレータをFPGAに実装することができる。FPGAエンジニアが居るような開発チームであれば、ハードウェアデザインとソフトウェアデザインを並行して開発するといったことも可能だ。

とはいえ、ARMコア搭載FPGAはCortex-A9ベースであり、マイコンユーザーはそこまでの性能が必要ではなかったり、Cortex-MやCortex-Rシリーズの特徴を使いたい、という人もいることは確かだ。そういった人にはARMコア搭載FPGAではなく、FPGAやCPLDの下位モデル製品とFPGAベンダが提供しているソフトコアを組み合わせて使うという方法もある。下位モデルといっても性能が著しく低いわけではなく、多くの製品でDSPブロックを搭載している。例えばAlteraの最新世代品の1つ「MAX 10 FPGA」は、ARMコア搭載FPGAより価格が低く設定されており、選択肢として視野に入れることができるだろう。

Alteraの最新世代品の1つ「MAX 10 FPGA」は、TSMCの55nmエンベデッド・フラッシュ・プロセス技術で製造される低価格な不揮発性FPGA

このほか、エンジニアとしては、サンプルプログラムや各種ドキュメントなどが入手しやすいか、という点も気になるところだろう。この点については、FPGAデバイスベンダをはじめ、国内外のパートナー企業がさまざまなニーズに対応できるものを用意しているので、FPGAでの開発とはどのようなものなのか、と思った人は、まずはデバイスベンダに自分たちがやりたいことを伝えて、相談にのってもらうと良いだろう。

グローバル化による、FPGAニーズのさらなる拡大

家電、FA機器、通信機器、自動車、それ以外のさまざまな組込機器も、あらゆるものがグローバル化の波の中で、具体的な需要を読み切れない時代になってきた。出荷地に応じて、製品の一部の規格だけを変更するといった対応が求められたり、開発中に規格やアルゴリズムが刷新される可能性もある。そうした状況においては、FPGAのメリットは大いに貢献することとなる。これまでFPGAはマイコンやSoCの周りに置かれ、例えばインタフェース機能拡張などを担うことが多かったが、ARMコアが活用できるようになって、マイコンやSoCそのものの役割も担えるようになってきている。実際にすでにそうした方向性で製品を開発し、市場に提供する企業も出てきた。ARMマイコンやSoCで開発を行う必要が出た際に、FPGAも選定デバイスの候補の1つとして挙げてみても良い時代がきたといえるだろう。