近年、あらゆる電子機器はデジタル化しています。
ブラウン管テレビからデジタル液晶テレビへ。
アナログ放送から地上波デジタルへ。
アナログ電話回線からデジタル回線・光回線へ。
あるいは各種カードや書籍までもがデジタル・トランスフォーメーションの時代を迎えました。
そんな中で注目されているFPGAという技術をご存知でしょうか。
決して昨日今日できた新技術ではありません。
しかしながら新製品の開発やプロトタイピングをスピーディーに行う。
またはAI技術を飛躍的に進化させるとあって、近年急速に半導体市場での存在感を高めています。
この記事では、そんなFPGAとはどのようなものか・どんな役割を担っているのかを解説いたします。
目次
1. デジタル回路とは?
FPGAを理解するには、デジタル回路を知らなくてはなりません。
最初におさらいしておきましょう。
① デジタル回路とは
デジタル回路は信号のオン・オフを取り扱うものです。
デジタル回路上での問題は、信号の有無だけであり、オンの時を「1」(ハイレベルまたは真)、オフの時を「0」(ローレベルまたは偽)とシンプルに表します。
ちなみにアナログ回路は連続的に変化する信号を取り扱うものです。
1か0だけでは表しきれません。
私たちが話したり、物体を視認したりするのもアナログです。
このようにシンプルなデジタル回路は、設計通りにさえ作れば誰でも容易に使いこなすことができます。
シンプルゆえにアナログ回路に比べて開発・製造コストが低く済み、いろいろな回路を通った後でもノイズの影響をさほど受けません。
さらに言うと扱う信号が少ないので、高速化も行いやすくなっています。
こういった利点から、私たちの身の回りの機器はデジタル・トランスフォーメンション(デジタル化)の洗礼を受けてきました。
ちなみにデジタル回路は論理回路・ロジック回路などと呼ばれることもありますが、厳密にはメモリ回路とロジック回路とに分類されます。
ただ、メモリ回路はデータ保存のためのものとなりますので、本稿でのデジタル回路は基本的にロジック回路の方を指します。
② デジタル化を推し進めたICやLSI
デジタル回路はシンプルですが、大規模なシステムを作ろうと思うと配線などが多くなり、ボリュームが出てしまうという欠点がありました。
それを解決したのがIC(集積回路)です。
ICは半導体素子を一枚のチップ上に集積した電子部品です。
その集積度を向上し、さらに大規模にしたものがLSI(Large Scale Integrated)です。
これはアナログ・デジタル回路両方にとって画期的な技術でした。
以降の電子機器の発展は、ICとLSIなくしては語れません。
しかしながらICおよびLSIは、回路図を作る段階でロジック回路が設計されており、製造したら変更することができません。
「ゲート」と呼ばれる最も簡単なデジタル回路は、一つの入力によって出力状態を固定したり、一方の入力に反映させたりといった、信号の制御を行います。
AND回路とOR回路とNOT回路というゲートがよく用いられます。
ANDは論理積とも訳され、一つの入力がオン(1)で、かつもう一方の入力も1になって初めて出力する回路を指します。
ORは論理和とも訳され、どちらか一方の入力が1であれば出力する回路のことです。
NOT回路は否定やインバータなどとも呼ばれ、入力とは逆に出力が行われる回路のことです。
A AND Bという回路を作った後にANDをORに書き換えることはできるのですが、既に設計されてしまったものだとこの限りではありません。
つまり、既製品のICやLSIを購入した後に仕様変更をしたい、となった時、再度買いなおさなくてはならない、という課題を抱えていることになります。
ICやLSIに実装されているのはコンデンサやトランジスタなどの半導体です。
また、チップ自体もシリコンでできています。
半導体自体はそこまで価格の高いものではありませんが、それが大量に集積された電子部品を使うとなると良いお値段がしてしまいます。
近年では高度なシステムが求められる関係上、一昔前に比べて高額になっていることから、たった一か所の仕様変更のために買い替えるというのは現実的ではないですね。
汎用ICであれば自由度は高まりますが、集積度が格段に低いため物理的に大きさが出てしまい、年々大規模なシステムを構築するのにはふさわしくありません。
そこで活躍するのがFPGAです。
2. FPGAとは?
FPGAとは、Field Programmable Gate Arrayの略称で、しばしば「現場(フィールド)で回路の書き換えが可能な(プログラマブル)集積回路」といった訳し方がなされます(ゲートアレイとはLSIの一種で、基本セルを格子状に並べたもの)。
FPGAは、製品として購入した後でもユーザーやエンジニアが任意にプログラミングを行い、仕様変更またはカスタマイズすることのできるという点でICやLSIと大きく異なるゲートアレイなのです。
また、この変更は何度でも繰り返し行えます。
こういった類の集積回路は、何もFPGAだけに留まらず、大まかにはPLD(Programmable Logic Device/プログラマブル・ロジック・デバイス)と分類されます。
PLDもまたユーザーやエンジニア自身が書き換え可能なLSIの一種です。
デジタル用途の集積回路は膨大な数のゲートが使用されていますが、PLDはANDとORゲートだけで構成されています。
つまり、AおよびBの配置や配線はユーザーが決めることとなり、任意のロジック回路を形成することが可能となりました。
PLDによって仕様変更があった際に新たにLSIを購入する必要がないことはもちろん、専用品を購入するよりコストが低く、開発リスクが減り、かつ製造期間の短縮に繋がります。
PLDは1970年代後半から研究・開発が進められてきました。
ただ、黎明期の製品は消費電力が大きく、再度のプログラミングができないなどの難点を抱えていました。
また、集積回路とは言え実装されているのは数十~数百ゲート程度であったため、大規模なシステムには向きません。
前述の通り、配線などの関係で物理的にボリューミーになってしまうためです。
そんな中で1985年、アメリカのX社がFPGAの開発に成功します。
FPGAの特徴は、PLDよりさらに大規模なゲートが載せられていることです。
その数は数万ほどにも及びます。
集積度が高いためこれまで100個のICが必要だったシステムでも、数個のFPGAで済む、といったケースもあります。
FPGAは集積度が高く、しかも何度でも書き換え可能とあって、デジタル回路の設計に次第になくてはならないものとなりました。
特に最近では次から次へと新しい製品が市場に出現していますね。
そのスピードについていくためにはFPGAのような、変更もカスタマイズもしやすく、コストおよび開発・製造期間を抑えられるゲートアレイが重宝されるのです。
ちなみにPLDを複数組み合わせたCPLD(Complex PLD)と呼ばれるゲートアレイも開発されていますが、FPGAの方が格段に集積度は高くなります。
FPGAの書き換えはハードウェア記述言語(HDL:Hardware Description Language)が用いられます。何度か取り上げているように、ANDやORもHDLとなります。
この書き換えを論理合成または配置配線と呼ぶこともあります。
書き換えが行われると回路内で伝達されるデジタル信号が変化し、その信号に応じた出力を行います。
これによって機器の動作を変えることができるのです。
なお、論理回路が書き換え対象ですが、現在のFPGAはメモリ要素も含有しています。
そのためフリップフロップ回路をも構成しており、一時的な情報の記憶も行えます。
3. FPGAの利点
「コスト削減」がFPGAの何よりの利点ですが、もちろんそれだけではありません。
以下にFPGAを使う利点をまとめてご紹介いたします。
- ■コスト削減
- ・・・仕様変更が容易なため専用LSIを購入するより安くつく・開発期間が短い。 スケジュール管理もしやすい。
- ■開発リスクの低減
- ・・・容易に仕様変更が可能なため、何かあった時でも臨機応変に対応できる
- ■高い自由度(柔軟性が高い)
- ・・・システムを自社開発するもよし、他社のプログラムと組み合わせるもよし
- ■高い効率
- ・・・CPUはしばしば速度を上げるためタスクを並行して処理させるが、コア全てを使うため無駄も出やすい。 FPGAなら必要な処理だけをプログラミングできるため効率性に優れている
- ■低い遅延性
- ・・・あらかじめプログラムが組み込まれたFPGAは任意の速度での応答が可能。結果としてシステム全体の処理速度が上がる
- ■低い消費電力
- ・・・無駄に使われるコアや回路を減らせる
- ■故障の低減
- ・・・きわめて高い集積度を誇るため、他の電子部品を削減でき、機械的な構造が少なくなる分故障を減らせる。また、発熱量も抑えられるのでパーツの劣化が少ないことはもちろん上記の効率性や低消費電力にも繋がる
このように、従来の汎用ICや専用LSIと比べても大きな利点を獲得しているFPGA。
ベンダーはまだそこまで多くないものの市場は年々拡大しています。
特にここ数年の成長は目覚ましいものがあります。
2016年までは40億ドル前後の規模でしたが、2017年には一気に57億ドル台を突破。
2023年までには93億5000万ドルに達するという予測が立てられています。
4. ASICとの違い
FPGAは、しばしばASIC(エーシック)と似たものとして紹介されることがあります。
ASICはApplication Specific ICの略称で、「特定用途向けのIC(またはLSI)」といった訳し方をします。
この名前の通り、目的に応じて製造されるICのことで、ある開発要望に対して必要な標準ゲートを有していることが特徴です。
実装は標準ゲートですので、FPGA同様に配線をユーザーが自由に行うことができますが、仕様変更のためのプログラム書き換えを行うことはできません。
また、生産はベンダーに依存していますが、製造に時間もコストもかかるため高額です。
ちなみに仕様変更はベンダーに依頼すれば可能ですが、数か月を要したうえに何千万円もかかってしまう、なんてケースもざらにあります。
そのため既にシステムが固定した製品の量産などに向いているICです。
例えば家電製品や通信機器などがこれに当たります。
製造コストがかかるため、開発段階の製品のプロトタイピングを行ったり、少量生産品を生み出したりするのであれば、ASICは不適当で、このケースで最適なのはFPGAになります。
前項まででご紹介したように、ちょっとした仕様変更が何度でも行えるので、プログラミング⇒テスト⇒完成品・あるいは仕様変更の手順が短縮できるためです。
ただ、ASICとFPGAを組み合わせて使うことは一般的です。
例えばプロトタイピングの段階ではFPGAを用い、実際の生産ラインにはASICを使う、といった手法です。
このようにAISC・FPGAどちらの方が優れている、というものではなく、シーンによって使い分けることで、さらに機器のデジタル化、ひいては新製品の市場投入が進められているのです。