これを読めばできる?! マイコンからFPGA、置き換え体験談

4つの採用事例の詳細およびQ&A

新しい価値を生んだ4つの採用事例

産業機器車載機器から、そしてテレビやゲーム機など民生機器まで、電子機器に組み込まれる機能の多くが、マイコンとその上で動作するソフトウェアによって実現されています。様々な機器の価値は、開発案件に合ったマイコンをいかに選び、マイコンの特徴をいかに活かして利用できるかで決まります。

でも、そんな電子機器開発で重要な位置を占めるマイコンに、不安や不満を感じ始めている人はいないでしょうか。「今使っているマイコンは、いつまで調達できるのだろうか」「使いたい周辺回路は搭載されていないのに、いらない回路がたくさんある」「マイコンの性能が足りない。でも上位品を採用するとコストと消費電力の面で要求を満たせない」「ボード上に散在するデバイスの機能を、1チップに集積できないのか」。電子機器やシステムが高度に進化するにつれて、こんな声が多く聞かれるようになりました。

FPGAは、こうした不安や不満を一気に解消する可能性を秘めています。

FPGAは、プログラムを書き込むことで、欲しい機能を実現するハードウェアを自由に作ることができるデバイスです。高度で特殊な演算器、規格が決まったばかりのインターフェイス回路、独自開発したアルゴリズムを実行する回路、プロセッサー、DSPなどなど、どんな回路も自由自在。もちろん、今使っているマイコンの機能を、そのまま移植することだってできます。

こうした特徴を活かし、FPGAをマイコンに置き換えることで、目覚ましい成果を上げた先進的なマイコン・ユーザーが続々と現れています。より広い分野の、より多くの技術者がFPGAを活用できるように、開発ツールの進化、多種多様なIPの提供、技術支援体制の整備が進んでいます。既にソフト開発が仕事の中心だった技術者でも簡単に、FPGAを使ったハード開発ができる環境が整っています。FPGAの利用は、ソフト開発者を、システム全体に目配りができるシステム・アーキテクトへとステップアップさせてくれます。

FPGAには、マイコンでは実現不可能な、固有の利用法があります。以下の4つの特長を活かした利用法です。ここでは、これらの特長を活用した、マイコンをFPGAに置き換えることによって成功を収めた開発事例を紹介します。FPGAを使うことによって、新しい価値を持ったシステムがどのように開発されているのか、先進事例を通じて追体験できます。

安定した入手性

マイコンやASSPは、比較的短い期間で、製造中止(ディスコン)になってしまうことがあります。近年では、メーカーの合併・吸収・廃業などによって、使っていたチップが、突然調達できなくなる可能性もあります。FPGAは、プログラムさえあれば、実現したい機能のチップを必ず入手できます。しかもアルテラのFPGAは、市場投入してから平均15年間以上、製品を供給し続けている実績があります。

比類なき柔軟性

画像処理、グラフィックス処理や通信プロトコル処理など、国際標準や業界標準の技術規格に準拠すべき処理は数多くあります。ところが、標準が決まったばかりの技術や特殊用途の仕様に対応する回路を搭載したマイコンやASSPを、タイムリーに利用することは困難です。FPGAならば、プロセッサー・コアやDSPコアの搭載によるソフト処理での柔軟性に加え、これまで仕様変更できなかったハードで実現する回路さえも柔軟に変えることができます。

圧倒的高性能

ソフト処理をハード化することで、性能を劇的に向上できます。マイコンでは、複雑な処理を実行する場合、同じ演算器を順番に使い回して処理します。このため、複数処理の並列実行が苦手です。さらに、処理の度にメモリーの読み書きが発生することも性能向上を阻む要因になります。一方FPGAは、ロジック・セル、乗算器、RAMなどを組み合わせて専用回路を作ることができます。必要に応じた並列化が可能で、処理時のメモリーの読み書きも必要ありません。

万能の集積性

マイコンに集積されるコアや周辺回路は、半導体メーカーの商品企画によって決まります。このためユーザー側がシステムを設計するとき、どうしても過不足が生じます。足りない機能は別チップで補われるため、高性能、低電力、低コスト、高信頼性に向けて、1チップ化を進めようにも限界があります。これに対しFPGAは、チップの規模が許す限り、必要な機能を必要な分だけ集積できます。近年では、業界標準のプロセッサー・コアなど、ありとあらゆるIPが入手可能になり、ハード集積の標準プラットフォームと言える存在になっています。

 

半導体製造装置のコントローラ開発事例

A氏(32歳)
半導体製造装置メーカーの商品開発部門で、装置を制御するコントローラの開発に携わるソフト技術者。システム・アーキテクトを目指し、ハード設計について勉強を始めた。新しいもの好きで、ハードを作る手段でありながらプログラマブルなFPGAを一度開発で使ってみたかった。

−—半導体の組み立て装置のコントローラにFPGAを採用したそうですが、採用に踏み切った動機は。

A氏: これまで私たちの会社では、国産の16ビット・マイコンをベースにして、コントローラを開発してきました。でも、そのマイコンが、いつまで安定して入手できるのか、“EOL(end of life)”に不安を抱えていたんですよ。半導体の製造中止(ディスコン)がいつあってもおかしくないご時世ですから。
 組み立て装置は4年もしくは5年置きに新製品を開発・投入しているのですが、コントローラの基板自体は10年以上に渡って設計を変えること無く使い続けます。最近、マイコンを供給する半導体メーカーに、製品ラインナップを整理・統合する可能性が出てきて、基板に搭載しているマイコンがいつ入手できなくなってもおかしくない状態ですよね。予定通りに製品を開発・投入できなくなれば、事業で被る損害は甚大です。
 今現在マイコンのディスコンが心配というわけではないのですが、十数年に一度の基板の刷新のタイミングになったので、先回りしてEOLの不安を解消しておこうということになったのです。今を逃すと、また長期間に渡って、不安を抱え続けることになりますからね。
 当初は、長期間調達し続けることができるマイコンを探していたのです。しかし、候補に上がったマイコンはどれも、EOLの不安を根本的になくすことはできそうもありませんでした。しかも、私たちが利用しない機能や回路が、たくさん付いており、無駄が多いなと感じました。そこで、もう少し広い視野で、長期間に渡ってコントローラのプラットフォームとして利用できるデバイスはないのか、探してみることになったのです。

−—そこで行き着いたのがFPGAというわけですね。

A氏: その通りです。私はソフト技術者ですが、少しハード設計の勉強もしなければと、回路設計の技術誌も読んでいるんですよ。記事としてFPGAが取り上げられることが多く、FPGAにプロセッサー・コアを組み込むことができることを知りました。直感的に、これはマイコンの代わりに使えるかもと思いましたね。
早速、アルテラのホームページを見たり、販売代理店に問い合わせたりして、情報を収集しました。すると、販売しているFPGAは平均15年間に渡って供給し続けてきた実績があると言うのです。これはすごいと思いましたね。ディスコンになる心配はありません。
今回の基板の刷新では、Ethernetのスイッチを新たに搭載し、複数のコントローラをディジーチェーン接続できるようにすることが、最も大きな変更点でした。FPGAをベースに基板を構成すれば、FPGAにEthernetスイッチを集積し、基板をシンプルにできると同時に、スイッチのディスコンに備えることもできます。気持ちが一気にFPGAに傾きましたね。

−—そしてFPGAを採用したわけですが、利用に際して不安はありませんでしたか。

A氏: あまり深いことは考えず、とりあえずFPGAの採用を決めてしまったという感じでした。マイコンと同じプログラマブル・デバイスだし、同じ部署ではありませんが、社内にFPGAを使って回路設計した経験のある知り合いもいるし、何とかなるだろうと考えていました。今振り返れば、ハード設計の経験がないのに、なんて無謀な決定だと思いますが。

−—実際にFPGAを使って基板を設計してみて、どうでしたか。

A氏: 私自身は、ハードウェア記述言語(HDL)を使った回路設計をした経験もなく、部署にFPGAの開発ツールがあったわけでもありません。まったくゼロからのスタートでしたから、当然困難の連続でした。販売代理店からの技術サポートのおかげで、何とかゴールまでたどりつけたという感じです。
今回の基板開発では、ローコストのFPGAに、アルテラが供給するプロセッサー・コア「Nios® II」を搭載し、これまでマイコンで実行していた処理をFPGAに移植しました。ただし、結局Ethernetスイッチに関しては、外付けのチップを搭載することにしました。
FPGAを使った回路設計は、ソフト開発と同様にツール上で進めますから、作業自体に取っ付き難さは感じませんでした。Nios II プロセッサーをFPGA内に組み込む時も、ブロック図で表現されたサンプル・デザインを入れればよいだけです。ハードウェア記述言語(HDL)を触らなくてもよいので、本当に簡単でした。また、プロセッサーをソフトIPで搭載する場合、基板が出来上がっていなくても、ツール上でソフト開発を進めることができる点も便利だと思いました。
でも、気分よく開発を進んでいたのはここまでです。基板は無事出来上がったのですが、どうやったら動くのか、まったくわからないのです。考えても、解が見えないので、基板を販売代理店に見てもらいました。そうしたら、今考えれば恥ずかしいような問題点が出るわ出るわ。

−—何が起きたのですか。

A氏: FPGAにプログラムを書き込むためのJTAGのインタフェースを、基板に付け忘れてしまったのです。FPGAは、動かす前にプログラムをコンフィギュレーション(書き込み)しないと、設計したハードとして機能しないことが、頭から抜け落ちていたのです。マイコンやASSPと同じ感覚で、FPGAの利用を考えてしまったことによる失敗でした。言い訳にもなりませんが、私たちのようなマイコン・ユーザーから見れば、JTAGはデバッガのポートといった認識ですからね。使わなければ、必要ないと考えたのです。
JTAGの端子にケーブルを取り付けて、プログラムをコンフィギュレーションできるよう応急処置することで解決しました。すると、また問題が発生しました。FPGAのチップが、触れないほど熱くなってしまったのです。FPGAの未使用端子の誤設定が原因でして、たまたま外付けのEthernetスイッチの端子につながり、常に電流が流れて異常発熱したのです。こうした未使用端子の扱いは、開発ツール上のメニューで不具合が起きないように設定することになっているらしいのですが、この作業の重要性がまったく分かっていなかったので、常時グランドつないだままにしていたのです。

−—それでもゴールに辿りつけたのですから、今では笑い話ですね。

A氏: 今考えれば、本当に初歩的なミスばかりで、販売代理店はよく付き合ってくれたものだと思います。私自身も、開発を進めるにつれて、ハード設計とソフト設計の違いを、さすがに痛感しました。でも、こんな初心者でも、開発の目的を達成するところまで導いてくれる、サポート体制や使い勝手の良い開発環境が整っている点が、FPGAのすごいところですね。
開発の過程で、社内のハード設計に詳しい人に技術的なことを聞いても、元々ソフト開発者ですから、用語や勘所がわからず、今ひとつピンとこなかったと思います。今回の開発では、要所要所の壁に当たった場面で、販売代理店が正解の設計を見せてくれました。このような具体的な解を教材にして考え直すと、FPGAを使った開発の理解が進みます。まさにOJTをしていただいたという感じです。

−—今後は、FPGAをどのように使っていくのですか。

A氏: FPGAを使って、まがりなりにも基板を設計できたので、ずいぶんと自信を持てるようになりました。次はFPGAの特長をもっと使い切るような利用法を考えたいですね。開発に携わっている商品で、プロセッサー上でソフト処理している部分にずいぶん負荷が掛かっているものがあります。ここをFPGAで、ハード化することも検討してみようと考えています。

Way to FPGA

手順1:マイコンの代替デバイスとしてFPGAを知った。
技術専門誌や学会論文、開発者コミュニティなどで、FPGAの有効な利用法が多数紹介されています。また日本アルテラや販売代理店は、様々な展示会に出展しております。今すぐFPGAの導入をお考えでない方も、明日のシステム開発に備えて、FPGAについて知る機会が増えています。

手順2:FPGAで何ができるのか情報収集した。
日本アルテラでは、ウエブ上で、初心者向けから、より高度な利用法を探求する開発者向けまで、多様な情報ニーズに応える講座アプリケーションノートオンラインセミナーなどを公開しています。不明点がある場合、より詳しい情報が必要な場合には、日本アルテラまたは販売代理店に、お気軽にお問い合わせください。

手順3:利用中のマイコンの機能を代替できるFPGAを選定した。
FPGAを使えば、マイコン以外のデバイスの機能も含めて、システムの広範な機能を代替できる場合があります。まず日本アルテラまたは販売代理店にご相談ください。効果的な代替法をご提案いたします。

手順4:FPGAの開発に必要な環境を準備した。
FPGAの開発は、「Quartus® Prime」開発ソフトウェアなどのデバイスに対応した開発環境が必要です。小規模な回路の設計ならば、無料のQuartus Prime ライト・エディションで設計できます。大規模な回路設計では、機能が豊富で、無償IPが付属する Quartus Prime スタンダード・エディション および プロ・エディションの使用をお勧めします。論理シミュレータも無償版「ModelSim ASE」と有償版「ModelSim AE」を日本アルテラが提供しています。

手順5:開発手順や開発環境の操作方法を習得した。
日本アルテラでは、ツールの利用法などを、わかりやすく丁寧に説明するオンライン・セミナーを公開しています。また、講師と対面しながら、実機を使って開発スキルを習得するFPGAマスター養成講座も定期的に開講しています。

手順6:ハードウェア記述言語の勉強をした。
販売代理店では、ハードウェア設計の経験がない方のためにVerilog HDL/VHDL 入門編 トライアル セミナーを定期的に開催しています。このセミナーを通じて、ハードウェア記述言語の基礎を習得し、日本アルテラやパートナーが提供している初心者向けの開発キットで言語の習熟度を上げることができます。

手順7:サンプル・デザインを入手した。
設計データのたたき台として利用できる、様々なアプリケーションに向けたサンプル・デザインを用意しています。日本アルテラのウエブサイトからダウンロードできます。

手順8:「Nios II プロセッサー」など、設計に必要なIPを入手した。
FPGAに搭載できる、動作確認済みの多様なIPが用意されています。利用できるIPの機能、対応するデバイスなどを記したリストが、日本アルテラのウエブサイトに掲載されており、そこから評価可能なIPをダウンロードすることも可能です。

手順9:これまでマイコンで処理してきたソフトを Nios II プロセッサーに移植した。
Nios II ソフトウェアの開発には、Eclipseプラグイン対応 Nios II ソフトウェア・ビルド・ツールの使用を推奨します。日本アルテラのウエブからダウンロードできます。また、Nios II プロセッサー上で動作するソフトの開発に向けた技術資料「Nios II ソフトウェア・デベロッパーズ・ハンドブック」をウエブ上で公開しています。この資料で解決できないこと、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

手順10:動作検証用の環境を準備した。
動作検証には、FPGA、それを搭載するためのボード、設計データをFPGAに書き込むためのダウンロード・ケーブルが必要です。開発目的が技術検証ならば、汎用の開発キット(評価ボード)が利用できます。開発キットやダウンロード・ケーブルは、日本アルテラまたは販売代理店から購入できます。

手順11:不具合の原因を究明し、対策した。
日本アルテラでは、よくある問題とその対処法などをまとめたナレッジ・センター・サービスをウエブ上で提供しています。ここで解決できないこと、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

 

医療用検査装置の操作パネル開発事例

B氏(53歳)
医療機器メーカーの制御システム開発部で、表示装置のハード設計を担当するベテラン技術者。これまでにも、ASIC開発の試作用デバイスとして、FPGAを扱ったことがある。ただし、ソフト開発には、それほど詳しいわけでなない。

−—医療用検査装置の操作パネルにFPGAを採用したそうですが、どの部分にどのような動機で採用したのでしょうか。

B氏: タッチパネルで診断条件を入力し、同じ画面に診断結果も表示するための操作パネルの基板に、FPGAを採用しました。具体的には、診断装置で画像化した映像を、表示パネルの仕様に合わせたものに変換するスケーリング処理や、そこに診断条件を重ねるOSD(on screen display)などの処理を実行するデバイスをFPGAで作りました。
  前世代機では、診断条件などを処理するマイコンとスケーリング処理用ASSPを組み合わせた構成を採っていました。しかし今回は、患部のより些細な異変を見逃さないように、解像度を上げた特殊仕様のパネルを採用することになり、既成品のASSPでは対応できなくなってしまいました。医療機器で使われる操作パネルでは、解像度、階調、コントラストのものが採用されるケースが多々あります。ところが、スケーリング処理用ASSPは、パソコン関連機器やディジタル家電機器のように大量販売が見込める仕様で作られます。このため、要求仕様に合ったデバイスを、カスタム開発する必要が出てきたのです。
 一昔前ならば、ASICを開発することになるのでしょうが、開発費が高騰した現在では望むべくもありません。そこで、ASSPの代わりにFPGAを使って、スケーリング処理用のデバイスをカスタム開発することにしました。

−—FPGAに搭載した回路は、すべて自作したのですか。

B氏: 私は、ASIC設計の試作でFPGAを使ったことがあったので、開発当初は自作を試みました。しかし、実際に始めてみると、スケーリング処理など画像処理に関わる回路の設計は、思いの外高度で、とても苦労しました。悪戦苦闘している中で、アルテラが供給しているFPGA用ビデオ/画像処理スイート「VIP」を利用すれば、今回の開発要件に合うデバイスが簡単に作れることがわかりました。元々、自作することが目的ではなかったので、すぐにVIPを採用するよう方針変更しました。
実は、当初は予定していなかったプロセッサー・コアも、FPGAに搭載しました。これは、VIP採用の可能性を探るために販売代理店と打ち合わせる中で出てきた提案を、採用した結果です。今回開発したデバイスでは、様々なIPを組み合わせて画像処理フローを構成し、FPGAに組み込みました。こうしたIPを正しく動作させるためには、それぞれが持っているメモリーマップにアクセスしてレジスタの条件を設定するための回路が必要になります。販売代理店の案は、その処理に向けた専用ハードで作るよりも、プロセッサー・コア「Nios II」に実行させた方がシンプルな構成になるというものでした。前世代では、この処理は、外付けするマイコンで実行していました。でも今回は、マイコンはI/Oも限定されていますし、負荷も大きくなりますから、FPGAのリソースを有効活用する意味で提案を採用することにしました。

−—FPGAを使ったデバイスの開発に不安はありましたか。

B氏: 不安はありませんでした。
今回の開発では、画像処理用のIPの取り扱いや、これらを集積する部分で、初めて行う作業がいくつかありました。しかし、アルテラが技術資料の公開やオンライン・トレーニングをキッチリと用意していることを知っていましたし、販売代理店のサポートを期待できることもわかっていました。
開発前には、前世代でASSPと組み合わせて使っていたDDR2 SDRAMを、FPGAに移行した後にもキッチリと動かすことができるか心配でした。しかし、手順を踏んで設計していったら、何の問題も起きることなく動作しました。

−—FPGAに搭載した Nios II プロセッサー上で動かすソフトは、誰が開発したのですか。

B氏: 自分で開発しました。私はCコードを読むことはできますが、ソフト技術者ではないので、マイコンで実行してきた処理を、Nios II プロセッサーで実行できるように移植する作業には不安はありました。しかし、IPのレジスタをどのように設定をすれば、どのように動くのか位は把握していたので、今までの組み込みシステム開発で得た知識だけでソフトを開発できました。
まあ今回の場合は、それほど複雑な処理ではなかったので対応できたのだと思いますが。
もちろんNios II プロセッサー固有の記述が必要になる部分もありましたが、その部分も事前に販売代理店から入手したサンプルを使ってトレーニングしたことで、難なくクリアすることができました。
私の場合には、ハード設計者なのでソフト開発に一抹の不安がありましたが、何とか目的のデバイスを開発できました。逆にハード設計に詳しくないソフト開発者が今回のデバイス開発を担当したとしても、それほど大きな障害は感じないと思います。Nios II プロセッサーやVIPなどFPGAに組み込むIPの取り扱いや、これらを集積するための開発環境「Qsys」の使い方などのトレーニングがしっかりと用意されています。ツールは、初心者でも使いやすいのではないでしょうか。

−—今回のデバイス開発の成果や経験を、今後のシステム開発にどのように活かしていきますか。

B氏: 今回の開発では、特殊仕様のパネルに柔軟に対応できました。今後は、FPGAの柔軟性を利用して、画像処理のアルゴリズムを妥協なくブラッシュアップしていきたいと考えています。診断結果から、これまで見えなかったような患部を見つけ出す、付加価値の高い製品が作れるのではと期待しています。

Way to FPGA

手順1:開発するシステムの要求に合うFPGAを選定した。
 FPGAを使えば、ASSPなどでは対応していない仕様の機能を自由に構成することができます。FPGAに搭載したい機能の仕様が決まりましたら、それを最も効果的に実装できるFPGAを提案いたします。まず日本アルテラまたは販売代理店にご相談ください。

手順2:FPGAの開発に必要な環境を準備した。
FPGAの開発は、「Quartus Prime」開発ソフトウェアなどのデバイスに対応した開発環境が必要です。小規模な回路の設計ならば、無料のQuartus Prime ライト・エディションで設計できます。大規模な回路設計では、機能が豊富で、無償IPが付属する Quartus Prime スタンダード・エディション および プロ・エディションの使用をお勧めします。論理シミュレータも無償版「ModelSim ASE」と有償版「ModelSim AE」を日本アルテラが提供しています。

手順3:開発手順や開発環境の操作方法を習得した。
日本アルテラでは、ツールの利用法などを、わかりやすく丁寧に説明するオンライン・セミナーを公開しています。また、講師と対面しながら、実機を使って開発スキルを習得するFPGAマスター養成講座も定期的に開講しています。

手順4:サンプル・デザインを入手した。
設計データのたたき台として利用できる、様々なアプリケーションに向けたサンプル・デザインを用意しています。日本アルテラのウエブサイトからダウンロードできます。

手順5:自社開発する回路を試行錯誤しながら設計した。
あえて回路を自社開発せず、こうしたIPを有効活用することによって、FPGAのリソースを有効利用し、設計期間の短縮や信頼性の向上を図ることができます。その中には、最新のインタフェース規格や高度な画像処理機能に対応したものなど、システムの価値を向上させるものが数多く含まれています。

手順6:FPGA用ビデオ/画像処理スイート「VIP」を入手した。
ビデオ/画像処理スイート(VIP)は、ビデオおよび画像処理用回路の開発に使用できる「MegaCore®」ファンクションを集めたものです。簡単なカラー・スペース変換からアップ/ダウン・クロス・コンバートを実装する複雑なビデオ・スケーリング機能まで様々コアを提供しています。日本アルテラのウエブサイトからダウンロードすることができます。無償の評価版も用意されています。

手順7:「Nios II プロセッサー」など、設計に必要なIPを入手した。
FPGAに搭載できる、動作確認済みの多様なIPが用意されています。利用できるIPの機能、対応するデバイスなどを記したリストが、日本アルテラのウエブサイトに掲載されており、そこから評価可能なIPをダウンロードすることもできます。

手順8:これまでマイコンで処理してきたソフトをNios II プロセッサーに移植した。
Nios II プロセッサー向けソフトウェアの開発には、Eclipse プラグイン対応 Nios II ソフトウェア・ビルド・ツールの使用を推奨します。日本アルテラのウエブからダウンロードできます。また、Nios II プロセッサー上で動作するソフトの開発に向けた技術資料「Nios II ソフトウェア・デベロッパーズ・ハンドブック」をウエブ上で公開しています。この資料で解決できないこと、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

手順9:IPを集積した。
アルテラでは、IPをFPGA上に効率よく集積できるシステム統合ツール「Qsys」を提供しています。Qsysは、Quartus Prime 開発ソフトウェアに含まれています。操作方法は、日本アルテラがウエブ上で公開しているオンラインセミナー、オンライン・ビデオ・デモなどを通じて、気軽に習得することができます。

手順10:動作検証用の環境を準備した。
動作検証には、FPGA、それを搭載するためのボード、設計データをFPGAに書き込むためのダウンロード・ケーブルが必要です。開発目的が技術検証ならば、汎用の開発キット(評価ボード)が利用できます。開発キットやダウンロード・ケーブルは、日本アルテラまたは販売代理店から購入できます。

手順11:不具合の原因を究明し、対策した。
日本アルテラでは、よくある問題とその対処法などをまとめたナレッジ・センター・サービスをウエブ上で提供しています。ここで解決できないこと、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

 

工作機のモーター制御システム開発事例

C氏(28歳)
業界大手工作機メーカーのソフトウェア開発部で、モーター制御用のアルゴリズムの開発に携わるソフト開発者。MathWorks社の数値解析ソフトウェア「MATLAB®/Simulink®」を使ってアルゴリズムを検討し、マイコンで実行するソフトに向けたCコードに変換する作業を担当している。

−—工作機に組み込むモーターを制御するシステムにFPGAを採用したそうですが、どのような動機で採用したのでしょうか。

C氏: 複雑な形状のワークを切削加工するための多軸加工機に搭載するモーター制御用サブシステムにFPGAを採用しました。モーター制御というと、それほど大した処理はしていないのではないかと感じる人もいるかと思います。でも実は、多軸工作機のモーター制御は、びっくりするほど高度なことをしているのです。
 指定された加工パラメータや動作シーケンス、リアルタイムで検知したワークの状態やモーターの負荷状況など、工作機のモーターの駆動条件を決めるための要素はとても多くあります。しかも、これらの条件や状況を5μ秒以下という短い時間で同時に見比べながら、的確な駆動条件を導き出すことが重要なのです。
 モーター制御の質を上げる上で、いかによい制御用アルゴリズムを開発し、そしてそれをいかに的確な手段で実装できるかが、成否に大きな影響を及ぼします。このため、アルゴリズムはMATLAB®/Simulink® 上でトコトン検討し尽くします。そして、開発したアルゴリズムは、Cコードに変換し、制御用プロセッサー上で実行するソフトにして、サブシステム中に実装します。アルゴリズムを実行するプロセッサーには、浮動小数点演算に対応できる機能が必要になるなど、実装方法に対する要求も高度です。
 今回の開発対象になった製品では、負荷の変動が激しく、精密なトルク制御を必要とする永久磁石同期モーターが使用され、FOC(フィールド指向制御)アルゴリズムを使うことに決まっていました。日本ではベクトル制御と呼ばれるこの制御では、複雑な演算を多用することになります。トルクや磁束のPI (proportional integral)制御に加えて、パーク変換・逆変換やクラーク変換・逆変換など、専門家でない限りよくわからない演算ですね。
 FOCアルゴリズムをハードウェアで並列処理させれば、演算処理の高速化が期待できます。そこで、開発したアルゴリズムをソフトで処理する部分とハードで処理する部分に分け、プロセッサー・コアを搭載したFPGAにすべて集積してしまおうという目論見でした。

−—アルゴリズムをすべてFPGAに集積できると思えたのはなぜでしょうか。

C氏: 先ほどお話したように、開発したアルゴリズムを、いかに的確な手段で実装するかが、制御サブシステムの質を大きく左右します。このため私たちは、常に貪欲に新しい実装手段を探し続けています。当然、最近のFPGAとその開発環境が、飛躍的な進歩を遂げていることも知っていました。
私たちが採用したアルテラのFPGAの場合、開発したアルゴリズムのうち、ソフト処理する部分は「Nios II プロセッサー」またはハードIPで搭載された「ARM® Cortex®−A9プロセッサー」を利用できることは分かっていました。また、ハード処理をする部分は「DSP Builder アドバンスト・ブロックセット」を利用すれば、MATLAB/Simulink で開発したアルゴリズムを直接ハードウェア記述言語「VHDL」に変換できることも知っていました。

−—実際に、アルゴリズムの一部をハード化する作業は簡単でしたか。

C氏: 一部をハード化したというよりも、ほとんどをハード化したと言った方がよいかも知れません。ソフト処理したのは、位置センサーで得た位置情報と速度情報を基にしたPI制御の部分だけです。このため、Nios II プロセッサーでも十分処理可能でした。残りのトルク情報や磁束情報を基にしたPI制御、パーク変換・逆変換、クラーク変換・逆変換は、ハード化しました。これによって、かなりびっくりするような性能が実現できました。同時に低消費電力化もできました。
DSP Builderを使ったVHDLへの変換は、期待通りの簡単さで、何の障害もありませんでした。ただし、出来上がったコンポーネントを統合するために使った開発環境「Qsys」に入れる時、それぞれのインタフェースを少し調整する必要がありました。これにともなって、アルゴリズム全体を多少の再調整が必要でしたが、大きな問題にはなりませんでした。

−—アルゴリズムのハード化は目論見通り成功したわけですね。

C氏: これが今回の開発の全てではありません。今回開発に用いたFPGAには、モーター制御サブシステムの様々な入出力につながる、インタフェース回路も集積しています。位置センサーからの情報を受け取るためのエンコーダ・インタフェース、モーターに流れる電流を制御情報としてフィードバックするためのΣΔ型AC/DCコンバータのインタフェース、モーターを駆動するIGBTをパルス幅変調するための回路、そして産業用Ethernetのプロトコル処理回路です。これらは、工作機の軸の数に比例して搭載する必要があります。
こうしたインタフェース回路は、動作実績のあるIPとして入手できるので、簡単に組み込むことができました。工作機のような産業機器では、これらインタフェース回路の仕様・規格を、用途に応じて変える必要があります。FPGA上で実装する場合、柔軟に微調整できるメリットがあります。
さらに最近の工作機では、機能安全への対応が求められるようになりました。この点に関しても、FPGAには利用価値があります。デバイス、開発ツール、IP、デザイン・メソドロジが認証済みとなっているため、安全認証取得の期間を大幅に短縮できるのです。

−—FPGAを利用した今回の開発の成果は、今後どのような展開ができるのでしょうか。

C氏: 今回の開発案件は、私たちの会社の中でも、性能面での要求が厳しい製品を対象にした先駆的なものでした。今後は、同様の要求が、現在は性能面でまだ余裕がある製品でも突きつけられるようになると思います。プラットフォームの共通化に向けて、別のOSを使って動いている製品にも展開して行きたいと考えています。また性能の高いARMプロセッサーを搭載したFPGAを使うと、かなり面白いことができるのではと期待しています。

Way to FPGA

手順1:FPGAに、どのようなDSPを搭載できるのか、情報収集した。
 FPGAを使えば、処理の並列化を推し進めた、高性能な専用回路を自由に構成できます。日本アルテラは、浮動小数点DSPなどをFPGAに搭載することで、どのような性能が実現できるのか、詳しく解説した技術文書をウエブ上で公開しています。

手順2:開発するシステムの要求に合うFPGAを選定した。
FPGA内で処理するアルゴリズムの仕様や構成が決まりましたら、それを最も効果的に実装できるFPGAを提案いたします。まず日本アルテラまたは販売代理店にご相談ください。

手順3:FPGAの開発に必要な環境を準備した。
FPGAの開発は、「Quartus Prime 」開発ソフトウェアなどのデバイスに対応した開発環境が必要です。小規模な回路の設計ならば、無料のQuartus Prime ライト・エディションで設計できます。大規模な回路設計では、機能が豊富で、無償IPが付属する Quartus Prime スタンダード・エディション および プロ・エディションの使用をお勧めします。論理シミュレータも無償版「ModelSim ASE」と有償版「ModelSim AE」を日本アルテラが提供しています。

手順4:開発手順や開発環境の操作方法を習得した。
日本アルテラでは、DSP Builder を利用したDSP設計者向けのトレーニングをウエブ上で公開しています。

手順5:サンプル・デザインを入手した。
設計データのたたき台として利用できる、様々なアプリケーションに向けたサンプル・デザインを用意しています。日本アルテラのウエブサイトからダウンロードできます。

手順6:インタフェース回路や「Nios II プロセッサー」など、必要なIPを入手した。
FPGAに搭載できる、動作確認済みの多様なIPが用意されています。利用できるIPの機能、対応するデバイスなどを記したリストが、日本アルテラのウエブサイトに掲載されており、そこから評価可能なIPをダウンロードすることもできます。

手順7:これまでマイコンで処理してきたソフトをNios II プロセッサーに移植した。
Nios II プロセッサー向けソフトウェアの開発には、Eclipse プラグイン対応 Nios II ソフトウェア・ビルド・ツールの使用を推奨します。日本アルテラのウエブからダウンロードできます。また、Nios II プロセッサー上で動作するソフトの開発に向けた技術資料「Nios II ソフトウェア・デベロッパーズ・ハンドブック」をウエブ上で公開しています。この資料で解決できないこと、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

手順8:IPを集積した。
DSP Builderで設計したコンポーネントをQsysで集積するためには、事前にコンポーネントのインタフェースを調整しておく必要があります。詳細は、提供されているサンプル・デザインで確認できますが、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

手順9:動作検証用の環境を準備した。
動作検証には、FPGA、それを搭載するためのボード、設計データをFPGAに書き込むためのダウンロード・ケーブルが必要です。開発目的が技術検証ならば、汎用の開発キット(評価ボード)が利用できます。開発キットやダウンロード・ケーブルは、日本アルテラまたは販売代理店から購入できます。

手順10:不具合の原因を究明し、対策した。
日本アルテラでは、よくある問題とその対処法などをまとめたナレッジ・センター・サービスをウエブ上で提供しています。ここで解決できないこと、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

 

NCコントローラ開発事例

D氏(36歳)
大手電機メーカーの産業システム部門で働くロジック設計者。今回の新しいNCコントローラの開発プロジェクトは、D氏の他、基板設計、電源設計、ソフト開発など10人で構成されていた。ただし、FPGAを使ったロジック設計ができるのはD氏一人だけだった。

−—NCコントローラは、典型的なマイコンの応用システムですが、なぜFPGAへの代替を考えたのでしょうか。

D氏: NCコントローラを構成していた様々な基板をまとめ、大幅なコストダウンを図ることが今回のプロジェクトの目的でした。そして、最もシンプルなかたちに基板をまとめることができる手段がFPGAにマイコンなどの機能を集約することだったのです。
従来製品ではNCコントローラの基板が、設備を制御する「NCボード」、モーターを駆動する「ヘッドボード」、外部の機器やシステムにつなぐ「I/Oボード」の3種類に分かれていました。このうちI/Oボードは対応するインタフェースごとに別れ6枚構成でしたので、システム全体の機能は合計8枚の基板に分割されていたわけです。分散していた機能をなるべくまとめ、BOMコストを6000円程度に抑えることが目標でした。

−—最初からFPGAの採用を想定していたのですか。

D氏: いいえ。当初は、それぞれのボードに搭載されている半導体を集約し、ボードをいくつか統合できればコストダウンできるのでは位に考えていました。
こうしたシステムの開発では、どこも同じだと思いますが、こうした漠然としたアイディアを、半導体ベンダーや販売代理店などから情報収集しながら方向性を固めていくわけです。その過程で、アルテラの販売代理店から、既存のマイコンの利用をやめて、システムを構成しているデバイスのほとんどの機能をひとつのFPGAに集約してはどうかという提案がありました。
提案は、アルテラのプロセッサー・コア「Nios II」を3個搭載し、それぞれにNCボード、ヘッドボード、I/Oボードで実行していた制御を割り当てる。そして、さらにPCIバスに接続するためのIP、ユーザー・ロジック、およびLVDSの送受信回路をそれぞれ2つずつ搭載するというものでした。これによって基板は8枚から1枚に統合し、主なデバイスはFPGAとフラッシュメモリーだけになります。
ずいぶんアグレッシブな提案だなと思いました。私たちの会社では、こうしたシステムの制御は、すべてマイコンで処理することを前提としてきましたし、既存のマイコン上で動かすソフトの開発実績が数多くありましたから。

−—FPGAを採用した要因は何だったのですか。

D氏: FPGA採用のメリットが、あまりにも圧倒的だったことですね。私たちは、実現するコストの目標を約6000円と設定していたのですが、販売代理店の試算では3500円と大幅に削減できると言うのです。しかも、機能を1チップ化できれば、小型化、低消費電力化、発熱の減少、信頼性の向上といいことずくめです。
確かに手法をガラリと変えることに、多少のリスクは感じました。でも一方で、「チャレンジのしがいがあるプロジェクトになるな」という気持ちも芽生えましたね。

−—システム構成を変えるに際して、まずどのようなリスクを感じたのでしょうか。

D氏: 私はロジック設計者として、これまでにもFPGAを使ったことがあったので、ボード上のハード部分に関しては、比較的容易に集積できることは分かっていました。不安の中心は、ソフト開発に関するものでした。まず、3種類のボードに分散していた既存のマイコンで動作していたソフトを、Nios II プロセッサーに載せ替えることができるのか、そしてFPGA上につくるプロセッサーで既存のマイコンに匹敵する性能が得られるのか、ということです。

−—不安は、どのように払拭していったのですか。

D氏: 私が開発していたNCコントローラは、まとまった数の生産が見込めました。ちょっとズルい方法ですが、この点を材料にして、販売代理店の協力を得て不安要素を解消して行きました。
具体的には、以前使っていたマイコン向けとNios II プロセッサー向け、それぞれのコードの方言対比表を、一覧にして作ってもらいました。私たちのプロジェクトに参加していたソフト開発者は、経験豊富な者だったので、Nios II プロセッサーの特徴を理解して、スムーズに移行することができました。さらに、実際に記述したソースコードも作ってもらい、ちゃんと同じ動作ができていることも確認しました。
また、3個のNios II プロセッサーをFPGAに搭載した時、それぞれのコアにどのような種類のメモリーを、どのくらいの容量割り当てればよいのか、決める作業もお願いしました。Nios II プロセッサーでは、RAMやキャッシュの他、「インストラクション用密結合メモリー(TCM:Tightly Coupled Memory)」と呼ぶ、ユーザーが読み書きできるレイテンシーがとても低いメモリーを使うことができます。これらの特徴を活かし、リソースを最も有効に活用しながら、要求性能が満たす解を、シミュレーションを繰り返して見つけ出してもらいました
こうしたやり取りの中で、コードの一部機能をハード化して、メモリー容量を削減するといった提案もありました。このようなソフトとハードの役割分担を決めつけることなく柔軟に考える手法は、FPGAならではですね。今後のシステム開発に向けて、大いに参考になりました。

−—ソフト開発の部分を販売代理店が支援し、プロジェクトはスムーズに進んだということですね。

D氏: 実は、ハード開発で1点だけ、つまずいた部分がありました。今回は、3種類のボードに分散していた機能をFPGAに搭載できるIPコアやロジックに振り分けて開発し、最後に1チップに集積したわけですが、その最後の集積作業で少し苦労しました。これは、私の知識とスキルが足りなかったからでもありますが。
IPコアやロジックの集積には、当時アルテラが提供していた「SOPC Builder」を使いました。このツールを使う場合、設計者の側で、各コアのインタフェースを統一しながら集積しなければならないのですが、そこがシッカリとできていなかったのです。FPGAの中でのタイミング収束が困難になってしまいました。そして最終的には、技術支援を仰ぐことで何とか解決できまましたが。ただしこの点は、SOPC Builder の後継である「Qsys」で階層設計に対応したことで、今は大幅に楽になっているようですね。

−—今回のプロジェクトでは、チームでFPGAにシステムを作り込んでいったわけですが、同様の開発を再び行う場合、どのような人材が必要だと感じますが。

D氏: 最後にお話した私の失敗にも関係しますが、チームの中に、システム全体のハード統合を、広い視点で意思決定できる人材が必要だと感じます。確かに、ツールの進歩で解決できる部分もありますが、常にシステム全体の構成・動作を意識しながら、細かい意思決定ができる人が、質の高い開発を進める上でとても重要ですね。また、これからのシステム開発では、ソフトとハードの切り分けを、決めつけて考えない柔軟さも大切になると思います。

Way to FPGA

手順1:ボード上に散在する機能を集約する手法を検討した。
FPGAの集積性と柔軟性を駆使すれば、思っても見なかったようなシンプルな構成を採ることができます。システム内部の構成が決まる前の段階で、日本アルテラもしくは販売代理店にご相談ください。

手順2:ボード上の機能をFPGAに集積する開発チームを編成した。
開発ツールの進歩などによって、ハード設計に関する深い知識を持った技術者がいなくても、一定品質の回路を開発できるようになりました。むしろ、システム全体のハード構成に広く目を配ることができる人材がチームに参加することで、よい結果が得られることが多いようです。

手順3:開発するシステムの要求に合うFPGAを選定した。
FPGAの大規模化と設計技術の進歩によって、ボード上の大部分の機能をFPGAに集積することができるようになりました。またFPGA自体の価格も、過去に比べると随分こなれてきました。このため、FPGAにより多くの機能を搭載することで、システム・レベルでのコスト・メリットが際立ってきます。どのようなFPGAを使えば、システムのコストを最小化できるのか。まず日本アルテラまたは販売代理店にご相談ください。

手順4:FPGAの開発に必要な環境を準備した。
FPGAの開発は、「Quartus Prime 」開発ソフトウェアなどのデバイスに対応した開発環境が必要です。小規模な回路の設計ならば、無料のQuartus Prime ライト・エディションで設計できます。大規模な回路設計では、機能が豊富で、無償IPが付属する Quartus Prime スタンダード・エディション および プロ・エディションの使用をお勧めします。論理シミュレータも無償版「ModelSim ASE」と有償版「ModelSim AE」を日本アルテラが提供しています。

手順5:開発手順や開発環境の操作方法を習得した。
日本アルテラでは、ツールの利用法などを、わかりやすく丁寧に説明するオンライン・セミナーを公開しています。また、講師と対面しながら、実機を使って開発スキルを習得するFPGAマスター養成講座も定期的に開講しています。

手順6:サンプル・デザインを入手した。
設計データのたたき台として利用できる、様々なアプリケーションに向けたサンプル・デザインを用意しています。日本アルテラのウエブサイトからダウンロードできます。

手順7:自社開発する回路を試行錯誤しながら設計した。
あえて回路を自社開発せず、こうしたIPを有効活用することによって、FPGAのリソースを有効利用し、設計期間の短縮や信頼性の向上を図ることができます。その中には、最新のインタフェース規格や高度な画像処理機能に対応したものなど、システムの価値を向上させるものが数多く含まれています。

手順8:「Nios II プロセッサー」など、設計に必要なIPを入手した。
FPGAに搭載できる、動作確認済みの多様なIPが用意されています。利用できるIPの機能、対応するデバイスなどを記したリストが、日本アルテラのウエブサイトに掲載されており、そこから評価可能なIPをダウンロードすることもできます。

手順9:FPGAに搭載する複数のNios II プロセッサーに割り当てるメモリーの構成を検討した。
日本アルテラや販売代理店は、Nios II プロセッサーの特性を活かして、的確なシステム構成を選び出すためのノウハウを保有しています。日本アルテラまたは販売代理店にご相談ください。

手順10:これまでマイコンで処理してきたソフトを Nios II プロセッサーに移植した。
Nios II ソフトウェアの開発には、Eclipse プラグイン対応 Nios II ソフトウェア・ビルド・ツールの使用を推奨します。日本アルテラのウエブからダウンロードできます。また、Nios II プロセッサー上で動作するソフトの開発に向けた技術資料「Nios II ソフトウェア・デベロッパーズ・ハンドブック」をウエブ上で公開しています。この資料で解決できないこと、不明点などがございましたら、日本アルテラまたは販売代理店にご相談ください。

手順11:IPを集積した。
アルテラでは、IPをFPGA上に効率よく集積できるシステム統合ツール「Qsys」を提供しています。Qsysは、Quartus Prime 開発ソフトウェアに含まれています。操作方法は、日本アルテラがウエブ上で公開しているオンラインセミナー、オンライン・ビデオ・デモなどを通じて、気軽に習得することができます。

手順12:動作検証用の環境を準備した。
動作検証には、FPGA、それを搭載するためのボード、設計データをFPGAに書き込むためのダウンロード・ケーブルが必要です。開発目的が技術検証ならば、汎用の開発キット(評価ボード)が利用できます。開発キットやダウンロード・ケーブルは、日本アルテラまたは販売代理店から購入できます。

手順13:不具合の原因を究明し、対策した。
日本アルテラでは、よくある問題とその対処法などをまとめたナレッジ・センター・サービスをウエブ上で提供しています。ここで解決できないこと、不明点などがございましたら、>日本アルテラまたは販売代理店にご相談ください。

 

 


Q:FPGAとは、どのようなデバイスなのでしょうか?

A: FPGA(フィールド・プログラマブル・ゲート・アレイ)は、プログラムを書き込むことで、思い通りの機能・構成のハードウェアを自由に作り出すことができるデバイスです。小さなロジック・セル、乗算器、RAM、そしてこれらをつなぐ配線を素材とし、プログラム素子で素材をつなぎあわせて回路を作ります。FPGAは、プログラムを書き換えることで、機能変更も自由にできます。プロセッサーのような高い柔軟性と、専用回路の高性能を兼ね備えているデバイス、これがFPGAなのです。

Q:マイコンやASSP、ASICを置き換えできるというのは、本当でしょうか?

A: 本当です。既に、マイコンやASSP、ASICの代替デバイスとして、基幹系の通信機器や携帯電話の基地局、放送機器、薄型テレビなどディジタル家電製品にも搭載されています。以前からFPGAは、その柔軟性の高さを活かして、マイコンやASSP、ASICを開発するときの試作用デバイスとして使われていました。つまり機能面では、マイコンやASSP、ASICと同じものを作る力があったのです。近年、FPGAの内部構成が改善され、最先端の製造技術で製造されるようになって、マイコンやASSPと比べた時のコスト・パフォーマンスは見劣りしなくなりました。ASICと比較した場合には、開発費の高騰によって、コスト面でもFPGAを利用した方が有利になる事例が増えています。
中には、市場投入後にプログラムを書き換えて、機能をアップグレードするといったFPGAならではの利用法を採っている応用製品もあります。さらに、自動車メーカーが、車載機器への搭載検討例が増えていることは、品質、機能、コストなどでFPGAの最終製品利用が認められてきた好例と言えるかもしれません。

Q:FPGAは、マイコンとどこが違うのでしょうか?

A: マイコンには、マイコン・メーカーが開発したプロセッサー・コアと周辺回路などのハードウェアが、あらかじめ組み込まれています。ユーザーは、こうしたハードウェアの構成を変更することはできません。これに対しFPGAは、ハードウェアの構成を自由に変更することができます。同じチップを使いながら、搭載しているインタフェース回路の仕様を自由に変更することもできます。プロセッサー・コアのアーキテクチャを変更することさえできます。

Q:FPGAは、ASICと比較して、どこが優れているのでしょうか?

A: 柔軟性の高さで、FPGAはASICにはない利用法ができます。ASICは、一度製造用のマスクを作ってしまうと、細かい設計変更さえも困難になります。これに対しFPGAは、機器を市場投入するギリギリまで、設計変更できます。市場投入後に機能変更することもできます。つまり、FPGAを搭載した機器やシステムでは、常に最新の機能を利用できるようになります。また、プログラムをかき分けることで、同じデバイスを使ってさまざまな機能のハードウェアを作ることができます。これによって、多品種展開する製品のハードウェアを統一することもできます。

Q:FPGAを使うと何ができるのでしょうか?

A: マイコン、ASSP、ASICなどをベースにしては実現不可能な、付加価値の高い機器やシステムを開発することができます。長期間に渡って製品を供給していくための「入手性」、ソフトとハードの区別なく機能をまるごと変更できる「柔軟性」、回路を自由に専用化、並列化することによる「高性能」、そしてあらゆるハードウェアを必要に応じて過不足無く1チップ化できる「集積性」、これらは他のデバイスでは得られない、FPGA固有の特長です。

Q:FPGAは、とても高価なデバイスだそうですが、応用機器も限られるんでしょうね?

A: そんなことはありません。かつてFPGAが試作用デバイスとしてだけ使われていた時代には、高価なデバイスでした。数量にもよりますが、最終製品に搭載されるようになった現在では、お客様の開発費とチップ単価を含めたトータルコストは、ASICよりも安価なほどです。製品のラインナップも、コスト重視の製品から性能重視の製品まで、要求に合った仕様のものを確実に見つけられるほど豊富になりました。
元々、汎用デバイスであるFPGAは、大量生産に向いたデバイスです。このため、利用数が右肩上がりで増える現在、価格もこなれてきます。さらに、ボード上のBOMコストで比較した場合、FPGAではデバイスの搭載数を削減できるため、コスト面での優位性が出てきます。加えて、プログラマブルな特長を活かして、基板のプラットフォーム化や、工場や市場でのアップグレードを実現できれば、さらにコストを削減できます。一般に、先に行けば行くほど、コストを計る視点を広げれば広げるほど、FPGAの優位性は高まります。

Q:私はソフト開発者で、これまで回路設計をしたことがありません。FPGAを使ったシステム開発は難しいのでしょうか?

A: 心配ありません。FPGAを使ったハード開発は、ソフトの開発と同様にコンピュータ上で作業を進めます。開発の手順も、ソフト開発に似ていると言えます。抽象的な機能の開発から、徐々に詳細を具体化していき、最終的にデバイスに書き込むプログラムに仕上げます。こうした一連の作業は、ツールの自動化が進んでいるため、年々ハード設計に関する詳しい知識がなくてもひと通りの作業を進めることができます。ツールは、FPGAベンダーが、自社製FPGAの内部構造に合ったものを開発し、提供しています。例えばアルテラでは、統合開発環境「Quartus Prime 」に、無償でひと通りのFPGA開発ができる「Web Edition」を提供しています。一度、これを利用して、勘所をつかんでおくのもよいかもしれません。
FPGAに、オリジナリティの高い回路を搭載する場合には、Verilog HDLやVHDLなどハードウェア記述言語(HDL)を勉強しておく必要があります。ただし、供給されているIPコアを集積することで、HDLを知らなくても、FPGAに書き込めるプログラムを開発することができます。さらに、「MATLAB/Simlink」で開発したアルゴリズムからHDLのコードを吐き出す「DSP Builder」や、Cベースのヘテロジーニアス・コンピューティングに向けたフレームワークである「OpenCL™」でFPGAを開発するための「SDK for OpenCL」など、ソフト開発者にとって馴染みやすい開発環境が、次々と整備されてきています。
もう一つ特筆できることは、ソフト開発と比較して、FPGAの開発では、支援体制が手厚いことです。FPGAベンダーや販売代理店などが、数多くの技術文書や講座や入門書を公開しています。また、セミナーなども頻繁に開催されています。困ったことがあれば、ベンダーもしくは販売代理店に相談すれば解決できます。

Q:FPGAは発熱がひどいという噂を聞きました。本当でしょうか?

A: 心配ありません。FPGAの特徴を活かしたプログラム開発ができれば、発熱が深刻化することはありません。むしろ、マイコンなどプロセッサー・ベースのデバイスと比較して、発熱を抑える対策を施すための手立てが多いと言えます。発熱の対策は、低消費電力化にもつながります。
現在の半導体デバイスの開発において、発熱および低消費電力化の対策には、大きく二つの方向性があります。ひとつは回路の並列化、もうひとつは素子の微細化に伴う低電圧化です。まず並列化です。パソコン向けプロセッサーのマルチコア化が進んでいますが、その主な目的は、性能を維持した上での発熱抑制と低消費電力化にあります。ただし、プロセッサーでは、その汎用性を維持するために、むやみに並列化を進めることはできません。このため、性能を維持するためには、動作周波数を下げにくいのです。これに対し、FPGAは、専用回路を自由に作ることができるため、実現する機能のアルゴリズムの特性と回路のタイミングが許す限り、並列化を推し進めることができます。
次に微細化とこれに伴う低電圧化です。大量生産され、チップ内の回路構成が比較的規則正しいFPGAは、デバイスの生産を担うファウンドリの、新しい世代の生産技術を優先的に適用する傾向があります。このため、発熱と消費電力の面で有利な生産技術を、他のデバイスに先駆けて利用できます。しかも、その生産技術も、低電圧駆動に最適化されたものが用意されています。例えば、TSMCの28nm世代の低消費電力プロセスで生産される「Cyclone® V FPGA」は、電源電圧1.1Vの駆動でも高性能を維持可能な製品です。

Q:FPGAはどこから購入できるのでしょうか?

A: FPGAはオンライン販売サイトから、1点から購入することもできます。もちろん、日本アルテラ、あるいは販売代理店からも購入できます。

Q:FPGAの開発環境では、FPGAベンダーが提供しているツールを利用することが多いようですが、なぜですか?

A: FPGAでは開発ツールの提供だけではなく、IPの供給や技術支援体制も、FPGAベンダーを中心としたエコシステムが作られています。一方でFPGAベンダー主導による開発支援体制が整っているので、困ったときの相談先が明確であるメリットがあります。
FPGAの開発では、チップ内部の構造や機能をよく知った上で、開発フローを考え、書き込むファイルを作らなければなりません。チップの内部構造とプログラミング言語の間に、マイクロコード、命令セット、API、OS、開発ツール、プログラミング言語と何階層もの標準化、オープン化に向けた仕組みが介在するソフト開発の体系と比べると、かなり簡素化されています。そして、そもそもFPGAベンダーの数がそれほど多くないこともあって、チップの内部構造と設計フロー、設計ツールは、それぞれ切り離せない密な擦り合わせがなされています。
論理合成ツールなどでは、FPGA開発に利用できるサードパーティ製のツールもあります。しかしアルテラの「Quartus Prime 」開発ソフトウェアは、使用メモリー容量が少ないのに処理速度が速く、良い論理合成の結果が得られ、リソースの使用率が高くてもコンパイルできる可能性が高く、使い方が簡単、そして何よりツールが安定しているといった特長があります。

Q:FPGAでは専用回路を作るのだから、ボード上にマイコンを使っていた時に必要だったようなメモリーはいらないんですよね?

A: 必要です。FPGAを搭載したシステムは、電源を投入した時に、外部からプログラムを流し込み、設計した回路を書き込み(コンフィギュレーションし)ます。このため、プログラムを搭載したコンフィギュレーション用のROM、一般的にはフラッシュメモリーを、基板上に合わせて搭載する必要があります。
ただし、チップ内部にコンフィギュレーション用ROMを備えているCPLDと呼ぶ製品もあります。CPLDならば、回路規模はFPGAよりも小さいのですが、外付けのROMは必要ありません。

Q:FPGAのデータシートを見ても、動作周波数やそれぞれのピンの割り当てがよくわからないのですが?

A: FPGAはハードを自由に構成できるデバイスです。動作周波数やピンの割り当ては、FPGAに書き込むプログラムが定まらないと決まりません。動作周波数は設計する回路の構成や開発ツールで指定するパラメータによって大きく変動します。また、ピンの割り当ても設計ツール上で指定することになります。