COLUMN
FPGA入門
FPGAとは「Field Programmable Gate Array」の略です。日本語で意訳するならば「ユーザー(エンジニア)がデバイス(半導体/IC)の入手後、開発現場で書き換えることができる論理回路の多数配列(ゲートアレイIC)」ということになります。開発現場でエンジニアが自らプログラミングできるとは、一体どういうことなのでしょうか。また、なぜ現場でプログラム可能である必要があったのでしょうか。初心者にもわかりやすく、まずは概要から解説していきましょう。
FPGAとは
FPGAとは「Field Programmable Gate Array」の略で、「ユーザー(エンジニア)がデバイス(半導体/IC)を入手後に、開発現場で書き換えることが可能な論理回路の多数配列(ゲートアレイIC)」がされたデバイスという意味で、通常のLSIは、製造後に論理回路を修正できませんが、FPGAはその制限がなく、製造後にも論理回路の修正が可能で、広義のPLD(Programmable Logic Device)の一種です。
この「論理回路」を開発現場でエンジニアが自らプログラミングできるとは、具体的にどういうことなのでしょうか。そして、なぜそのように現場でプログラム可能であることが求められるのでしょうか。FPGAの概要をまずは論理回路の観点から解説していきます。
FPGAはどのようにして生まれたのか
みなさんが日常を過ごしていて感じる周りの環境。例えば、街頭の様々な音、人々の話し声、太陽の光、ネオン、気温、室温などなど…何気なく感じているものを電子の世界で処理するために、数値に変換する仕組みがデジタル回路です。デジタル回路はAND(論理積)、OR(論理和)、NOT(論理反転)の論理回路で構成されています。これらの基本的な回路を組み合わせることで、レジスタ、フリップフロップなどの小規模構成の汎用ロジックICが様々な回路で動作します。
汎用ロジックICは、1960年後半にテキサス・インスツルメント(Texas Instruments)社の技術が幅広く使用されるようになり、世界の半導体業界へ爆発的に広まっていきました。その当時このICが使用された先駆けの製品は電卓でした。電卓をきっかけに、さらなる機能を追加して、電卓以外にも使用したいというニーズが出てきました。その結果、汎用ロジックICは多様多種のものが生まれ、機能も集積されていきました。これが「LSI (Large Scale Integration )」、「VLIS(Very Large Scale Integration)」、「ULSI(Ultra-Large Scale Integration)」などと呼称され、歴史とともにその集積規模が増え、発展していったのです。(※以後代表してLSIと記載)
ところが、この LSI には課題がありました。
①開発に非常に時間がかかる(数年単位)
②開発コストが非常に高価(数千万円~数億円といった初期費用)
③汎用品なのでカスタマイズができない
大きく言うと、この3点です。
時代が進むにつれ、製品のサイクルは非常に速くなり、メーカも次から次へ最新の製品を出さなくてはならなくなりました。また、他社と差別化を明確に出していかなければ製品が売れないなど、半導体の進歩とともに世の中の市場も変動していったのです。
この時流を見据えていたのか、ニーズにこたえる半導体の開発が同時期に進んでいきました。1970 年代末には「PLD (Programmable Logic Device)」、1980 年代には「CPLD ( Complex Programmable Logic Device)」が開発され、汎用ロジック IC 小規模相当の回路を実装できるようになりました。
これが、本コラムの冒頭で説明した「ユーザーがデバイスの入手後、開発現場で書き換えることができる論理回路の多数配列」、つまりプログラマブルロジックデバイスです。
こちらも世の中の市場ニーズの多様化に伴い、PLDやCPLDよりも大規模のロジック実装ができるものが望まれるようになりました。そして、1980年代半ばに初の「FPGA(Field Programmable Gate Array)」が登場することになります。
半導体の中のFPGA
従来のLSIとは異なり、ユーザーが自分で回路を作れるように最低限の機能だけを実装したプログラマブルロジックデバイス。これは、開発のスピードを上げつつコストを抑え、さらにはオリジナリティ創出実現のための柔軟なカスタマイズ性をユーザーに与えました。
では、FPGAは半導体の中でどのような存在なのでしょうか。
半導体は、実際の開発プロセスで2種類に分けられます。「特定の用途向けに設計されたデバイス」と「ユーザーが設計する設計デバイス(カスタムデバイス)」です。大まかな違いは下記を参照してください。
①特定の用途向けに設計されたデバイス
半導体製造メーカが、ある特定のアプリケーションや用途を想定して製造するデバイス。メーカがあらかじめ回路構成を決めて生産するため、ユーザーはカスタムできない。多くのデバイスは数量が多く出るアプリケーションを想定しており、大量生産するためユーザーが購入する際の単価は低い。
②ユーザが設計する設計デバイス(カスタムデバイス)
目的や必要性に合わせてユーザー自身で開発することを目的に製造されたデバイス。別の言い方をすれば製造された時点では用途が決まっていない汎用品だが、その手でカスタマイズを実行することで独自のデバイスとなる。「特定の用途向けに設計されたデバイス」に比べてさほど数量が出る想定ではなく、ユーザーによるカスタム前提となっており、購入する際の単価は比較的高価である。
FPGAは、上記のうち「②ユーザーが設計する設計デバイス(カスタムデバイス)」に該当します。またPLD、CPLDも同様です。ユーザー自身の手で回路実装ができるように、最低限の回路を装置に実装してあるので、ユーザーは内部のハードウェア構成を自由に、またいつでも何度でも変更できます。効率的で高いフレキシビリティがFPGAの一番の特徴です。
なぜFPGAが注目されたのか
「ユーザーが設計する設計デバイス(カスタムデバイス)」には、もう一つ種類があります。それは「ASIC(Application Specific IC)」です。「特定の用途向けに設計されたデバイス」では実現できないため、【カスタムが必要】という点ではFPGAと同じですが、両者を比べると以下の違いがあります。
【FPGA】
アプリケーション用回路を製造済みデバイスにプログラムするため回路変更が簡単。
【ASIC】
半導体製造メーカが生産したデバイスを使用して、特定のアプリケーション向けのカスタムデバイスをユーザーが開発する。その回路をいつでも何度でも変更できる。
このように違いが見える両者ですが、実はASICとFPGAの開発手法には共通点があります。
標準的な開発フローの場合、要求分析→要件定義→基本設計・詳細設計→RTL設計(Verilog、VHDLなどを用いてコーディング) →論理合成→動作シミュレーション→配置配線、という順番が多いかと思いますが、ここまではほぼ同じなのです。しかしながら上記工程後の工程が大きく異なります。詳しい説明は以下のとおりです。
・ASICの場合
先の開発フローを通じて最終的な動作確認を終えた設計データは、半導体製造工場(ファウンドリ)で次の工程へ移ります。まずは配置配線に合わせて実際の半導体のどこに何を置くのかを決めるマスクを作ります。このマスク上のパターンをウエハーに露光すると、ROMとして半導体が製造されるのです。半導体が出来上がってくると、設計したとおりに動作するかどうかのテストが実施されます。
ASICの開発フローは数年かかるのが一般的で、またその開発コストも数千万から数億といった膨大な金額となります。万が一テストでエラーが見つかった、デバイス出荷後に不具合が見つかってしまった…となると、ASIC は後から回路を変更することはできない構造なので、今まで費やした期間・コストは無駄になります。それどころか、追加で莫大なコストがかかることになってしまいます。
・FPGAの場合
FPGAの場合は、後工程としてデバイスの製造を行う必要がありません。先に述べた通り、ユーザーは半導体製造メーカから製造済みのデバイスを供給されており、それ向けの開発を行っています。動作確認が終わると、設計データはすぐに実際のFPGA上で回路を動作させることができ、机上やシミュレーション上では見つからない繊細な問題もいち早く発見することが可能です。またそれを修正し、何度も試すことができます。なぜなら、FPGAは起動時にFLASH ROMからその回路データを読み込み、FPGA内の回路を構成するという特性があるためです。開発段階のタイミングでも何度でもトライアルできますし、製品出荷後の検証で不具合が見つかっても、FLASH ROMに保存されている回路データを更新すれば改修することができるのです。
以前までは、製品出荷時の一台当たりの単価や性能面で優れているASICの利用が多かったのですが、最近では技術進化に伴い、FPGAの性能面はASICに追いつく勢いで向上していますし、比較的安価にもなってきています。また「すぐに試せる」、「何度でも書き換え可能」というFPGAの柔軟性が、現在の製品開発スピードやニーズに合致して、FPGAを導入する動きも増えています。
FPGAとその他の集積回路(IC)との違い
ここでは、ASIC以外の集積回路(IC)との違いを見ていきましょう。
CPLD
さきほども触れたCPLDは、Complex Programmable Logic Deviceの略で、FPGAと同様にプログラム可能な論理デバイスですが、構造に大きな違いがあります。CPLDはマクロセルベースの構造を採用しており、小規模な論理回路の実装に向いています。FPGAと比べると、CPLDはリソースが少なく、単純な制御回路や状態遷移回路の設計に適しています。また、CPLDは電源投入時に即座に動作を開始できるため、初期化時間が重要な用途に便利です。一方で、FPGAは大規模で複雑な設計に対応でき、より多くのロジックリソースや特殊機能ブロックを備えています。そのため、CPLDは簡易的な用途に、FPGAは高性能を求められるアプリケーションにそれぞれ適しています。
GPU
GPUは、Graphics Processing Unitの略で、もともと画像処理のために開発されましたが、現在では機械学習や科学計算、暗号処理など、並列処理が必要な多くの分野で活用されています。GPUは膨大なデータに対する並列演算能力に優れており、特に浮動小数点演算を得意とします。ただし、GPUはFPGAに比べて消費電力が高いことが多く、動作環境が限定される場合があります。一方で、FPGAは任意のビット幅の演算を実現できるため、データ形式や計算精度に関して柔軟性があります。また、FPGAは低レイテンシで動作可能であるため、リアルタイム性が重要なアプリケーションでは優れた選択肢となります。
CPU
CPU(Central Processing Unit)は、コンピュータや電子機器の「頭脳」にあたる部分で、主にプログラムの命令を1つずつ順番に実行して処理を行います。汎用性が高く、様々なタスクに対応可能ですが、ハードウェアの動作そのものを変更することはできません。この点で、ハードウェアを自由に設計できるFPGAとは異なります。CPUは逐次処理を得意とし、ソフトウェア中心の設計や開発が簡単で、多くのデバイスで標準的に採用されています。一方、並列処理やカスタマイズが必要な場合は、FPGAが適しています。
DSP
DSP(Digital Signal Processor)は、音声や画像、センサー信号などのデジタル信号を効率的に処理するために設計されたプロセッサです。特に高速な積和演算に特化しており、リアルタイムでの信号処理が求められるアプリケーションで広く使われています。DSPは信号処理の特定タスクに最適化されており、消費電力が低くコストも抑えられますが、FPGAのように任意の論理回路を構築したり、大規模な並列処理を実現することはできません。また、DSPは専用設計されたハードウェアブロックを活用するため、FPGAに比べて特定の信号処理タスクでは高い効率性を発揮しますが、設計の自由度は低いです。
ASSP
ASSPは、Application Specific Standard Productの略で、特定の市場セグメント向けに設計された標準的なICです。ASICほど個別用途に特化していないものの、特定の機能に特化した設計がなされています。FPGAと比較すると、ASSPは特定の用途に対して効率的な設計が可能であり、コストパフォーマンスが高い傾向にあります。ただし、FPGAのように設計を柔軟に変更することはできません。そのため、FPGAはASSPが対応できない特殊な用途や、プロトタイピングが必要な場合に選ばれることが多いです。
FPGAの進化過程と機能
誕生以来、さまざまな利点をもって価値を提供し続けてきたFPGA。具体的にはどれくらいの進化を遂げてきたのでしょうか。また、機能はどのようなものを持っているのでしょうか。
FPGAの進化過程
FPGAを提供するメーカは複数存在しますが、大きくシェアを取っているメーカは「インテル(Intel) ※旧アルテラ(ALTERA)」社と「ザイリンクス(XILINX)」社です。(ABC順で掲載)
両社とも1980年代よりFPGAの最初の開発をスタートしており、近年に至るこの30年間以上の間に性能、機能、デバイス価格といったあらゆる面で劇的な変化を遂げてきました。
「ザイリンクス(XILINX)」社では、FPGAは2010年で集積度600 倍以上、速度100 倍以上まで向上、デバイス価格は1000分の1 程度に低減、電力は150分の1に低減と、圧倒的に進化しています。
「インテル(Intel) ※旧アルテラ(ALTERA)」社でも同様にその集積度、消費電力、デバイス価格は進化していますが、先に述べたスペックとは別の観点からその進化を見ると、ロジック数は100倍以上、内部動作クロック、高速トランシーバのデータ性能も5~10倍向上しています。中でも特徴的なのが、2015年に「インテル(Intel)」社が「アルテラ(ALTERA)」社を買収したことによる将来のFPGAです。買収を発表した2013年には、インテル14nm トライゲート・プロセスでFPGAの製造をしていくと発表しており、さらなるFPGAの進化が期待されています。
FPGAデバイス自体の進化だけでなく、それを扱うユーザーへのフォローも進化しています。例えば開発ソフトウェアの高機能化、IP コアの充実、評価環境(ボード・キット)など、ユーザーによる開発が少しでも短期間で実現できるよう、こちらも進化し続けています。
FPGAの機能
「インテル(Intel) ※旧アルテラ(ALTERA)」社と「ザイリンクス(XILINX)」社には、どのようなFPGA製品があるのでしょうか。まずは「インテル(Intel) ※旧アルテラ(ALTERA)」社製品の4シリーズの製品を一覧で見てみましょう。
【Stratixシリーズ】
高帯域幅と高集積度が特徴で回路規模が大きく、高速トランシーバも搭載しているため高速処理を求められるハイエンドのアプリケーションに最適なデバイスです。
【Arriaシリーズ】
性能、消費電力、価格において、StratixシリーズとCycloneシリーズの中間にポジショニングするミドルエンドのデバイスです。ARM Cortex-A9 MPCore™が搭載したラインナップも展開されています。
ユーザが求めやすい価格に設定されているデバイスです。低消費電力も実現しており、従来ASICやASSPで利用されていた既存製品の置き換えも行われ、量産もされています。ARM Cortex-A9 MPCore™が搭載したラインナップも展開されています。
ユーザが求めやすい価格で設定されているデバイスです。低消費電力も実現しており従来ASICやASSPで利用されていた製品の置き換えも行われ、量産もされています。ARM Cortex-A9 MPCore™が搭載したラインナップも展開されています。
【MAX10 シリーズ】
MAX5シリーズはCPLDベースのデバイスでしたが、MAX10になりFPGAベースとなりました。Cycloneシリーズよりも省資源のシステムで利用することができる、最も低コストなデバイスです。
これら「インテル(Intel) ※旧アルテラ(ALTERA)」社のFPGAは、オンチップ メモリ、デジタル信号処理(DSP)ブロック、高速トランシーバー、高速 I/O ピン、パーシャルコンフィグレーション などの機能を搭載しており、量産型から最先端製品まで、さまざまなアプリケーションに幅広く対応しています。
FPGA開発をサポートするツールとして、Quatus、QsysといったFPGA開発ツールや、MegaCOREといった「インテル(Intel) ※旧アルテラ(ALTERA)」社製のIPコアを提供しています。
また、上記FPGA以外にもコンフィグレーション・デバイスのEPC、EPCS、EPCQ、電源デバイスのEnpirionも提供しており、FPGAシステムに必要なデバイスは一貫して提供しています。
次に「ザイリンクス(XILINX)」社製品を見ていきましょう。ザイリンクス(XILINX)社にはグレードの異なる5つのFPGAシリーズがあります。
【Virtexシリーズ】
高帯域幅、高集積度、最大容量のデバイスで、400Gアプリケーションといった高速伝送が必要なアプリケーションなどに適したハイエンドデバイスです。
【Airtixシリーズ】
VirtexシリーズとKitenxシリーズの中間のミドルエンドのデバイスです。コストを抑えつつ性能や省電力を実現しています。
【Kintexシリーズ】
低価格ながらも性能面の向上や低消費電力を実現したローエンドのデバイスです。製品出荷数が多いアプリケーションなどに最適で、量産もされています。
【Spartanシリーズ】
Kintexシリーズ同様、低価格ながらも性能面の向上や低消費電力を実現したローエンドのデバイスです。Spartanの後継デバイスがKitenxというようなイメージになります。
【Zynqシリーズ】
ARMプロセッサが搭載されたFPGAデバイスラインナップです。Zynq-7000シリーズ、Zynq UltraScale+シリーズが展開されています。
ARMプロセッサは2種類あり、後尾に「SoC」と付与されているデバイスはARM Cortex-A9 MPCore™が搭載、「MPSoC」と付与されているデバイスはARM Cortex-A53 MPCore、ARM Cortex-R5 MPCore、さらにはGPUのARM Mali™-400 MP2も搭載、しH.264-H.265 をサポートするビデオコーデック処理が可能なハイエンドマルチメディアデバイスとして提供されています。
これら「ザイリンクス(XILINX)」社製品では、コネクティビティ、メモリ インターフェイス、デジタル信号処理、プロセッサソリューションの面でさまざまな工夫が施されており、多様なアプリケーションで利用されています。
FPGA開発をサポートするツールとしてISE、VivadoといったFPGA開発ツールや、LogiCOREといった「ザイリンクス(XILINX)」社製のIPコアを提供しています。
おすすめFPGAボードメーカー
広がるFPGAの使用範囲
FPGAは、これまで多く利用されていた通信、ネットワーク機器や産業機器だけでなく、自動車や放送機器、OA機器、家電などにも多く活用されるようになりました。これは、FPGA自体の性能進化とともに価格が下がりASIC、ASSPを利用していたユーザーが製品に採用しやすくなったことが一因です。
製品リリースのサイクルが非常に早くなっている昨今の市場から、FPGA評価ボード(キット)もメーカーから販売されています。開発しながら仕様も決めつつ(変更しつつ)、ということが開発に求められており、さらに開発期間、コスト、リスクを削減することが求められています。それに対応できるデバイスこそが、「書き換え可能機能」というメリットを持つFPGAなのです。
進化を続けるFPGA
昨今のFPGAのトレンドは、CPUコアを内蔵した「SoC FPGA」です。これまでFPGAはどちらかというとASICやASSPであるCPUの補助処理や、高速、多量な処理を行うコンパニオンチップという位置づけで、CPUにはできない部分をハードウェアで処理するというものでした。しかしながら、この2チップ構成にすると、CPUとFPGA間のインタフェースを設計する必要がある、基板の実装面積が増えてしまうなどの課題もありました。また、マーケットのニーズからハードウェアだけで表現できない複雑なアプリケーション(例えばGUIや様々なネットークプロトコルなど)を、ある程度の性能を保有したCPU上のソフトウェアで実装する必要があり、満を持して「SoC FPGA」が登場したのです。これはARMを搭載したFPGAで、「インテル(Intel) ※旧アルテラ(ALTERA)」社の製品では「Cyclone V SoC」や「Arria® 10 SoC」、「ザイリンクス(XILINX)」社の製品では「Zynq-7000 SoC」や「Zynq UltraScale+ MPSoC」があります。
FPGAはこれからどのように発展していくのでしょうか?
これまでFPGAは、組込機械の制御向けのデバイスとして活用されてきました。しかし近年、FPGAの大容量化、高性能化が進むにつれ、制御ではなく演算を目的とした用途へのニーズが高まりつつあります。
また、IoTやクラウドの発展に伴い、大量の情報からの認識や解析の需要が増えていく中で、性能進化が頭打ちになっているCPUに加えFPGAを採用する動きもでてきました。
特にFPGAは並列処理が得意なため、Deep Learning(ディープラーニング)の推論処理をはじめ、大量データ処理への活用が進んでいます。既にGoogleやMicrosoft、Baiduなどが自社クラウドサービスに導入したり、Amazon Web Serviceがユーザー設計によるFPGAデザインをデプロイ可能なEC2 F1 Instanceをサービス化するなど、データセンターとFPGAの組み合わせ(接続)が注目を浴びています。
今後FPGAは、その特性を活かした従来の枠に留まらない利用方法が生み出され、様々な領域での活用が広がっていくでしょう。
本コラムやサイトに関すること、外部イベントその他、資料請求などは以下のバナーより気軽にお問い合わせください。
個別相談も承っております。下記よりお申し込みください。