
フィールドプログラマブルゲートアレイ(FPGA )は、製造後に繰り返しプログラム可能な構成可能な集積回路の一種です。FPGAは、プログラマブルロジックデバイス(PLD)と呼ばれるロジックデバイスのサブセットです。FPGAは、グリッド接続されたプログラマブルロジックブロックのアレイで構成されており、他のロジックブロックと相互接続してさまざまなデジタル機能を実行するように「現場で」構成できます。FPGAは、カスタムメイド製品の少量生産や、個々のFPGAのコストが高いことがそれほど重要ではなく、カスタム回路の作成と製造が現実的でない研究開発でよく使用されます。FPGAのその他の用途としては、柔軟性、高速な信号処理速度、並列処理能力の恩恵を受ける通信、自動車、航空宇宙、産業分野などがあります。
FPGAの構成は一般的に、特定用途向け集積回路(ASIC)で使用されるものと同様のハードウェア記述言語(HDL)、例えばVHDLを用いて記述されます。以前は回路図を用いて構成を記述していました。
FPGAのロジックブロックは、複雑な組み合わせ関数を実行するように構成することも、ANDやXORのような単純な論理ゲートとして動作させることもできます。ほとんどのFPGAでは、ロジックブロックにはメモリ要素も含まれており、これは単純なフリップフロップの場合もあれば、より高度なメモリブロックの場合もあります。[ 1 ]多くのFPGAは、異なる論理関数を実装するように再プログラムすることができ、コンピュータソフトウェアで行われるような柔軟な再構成可能なコンピューティングを可能にします。
FPGAは、ハードウェアと同時にシステムソフトウェア開発を開始できること、開発の非常に早い段階でシステム性能シミュレーションが可能になること、システムアーキテクチャを最終決定する前にさまざまなシステムトライアルや設計反復が可能になることから、組み込みシステム開発においても役割を果たしています。[ 2 ]
FPGAは、ASICの開発においてシミュレーション処理を高速化するためにも一般的に使用されている。
FPGA業界は、プログラマブル読み出し専用メモリ(PROM)とプログラマブルロジックデバイス(PLD)から発展しました。PROMとPLDはどちらも、工場でバッチ処理でプログラムすることも、現場でプログラムする(フィールドプログラマブル)ことも可能でした。[ 3 ]
Alteraは1983年に設立され、1984年に業界初の再プログラム可能なロジックデバイスであるEP300を発売しました。このデバイスはパッケージ内に石英窓を備えており、ユーザーは紫外線ランプをダイに照射してデバイス構成を保持するEPROMセルを消去することができました。 [ 4 ]
ザイリンクス(現在はAMD傘下)は、1985年に初の商用利用可能なフィールドプログラマブルゲートアレイ(FPGA)であるXC2064を製造した[ 3 ] 。 [ 5 ] XC2064は、プログラマブルゲートとゲート間のプログラマブル相互接続を備えており、新しい技術と市場の始まりとなった[ 6 ] 。XC20 64は、64個の構成可能なロジックブロック(CLB)と2つの3入力ルックアップテーブル(LUT)を備えていた[ 7 ] 。
1987年、海軍水上戦センターは、スティーブ・カッセルマンが提案した、60万個の再プログラム可能なゲートを実装するコンピュータを開発する実験に資金を提供した。カッセルマンは成功し、1992年にそのシステムに関連する特許が発行された。[ 3 ]
AlteraとXilinxは1985年から1990年代半ばにかけて、競合他社が台頭し、市場シェアのかなりの部分を失うまで、競争相手に阻まれることなく急速に成長を続けた。1993年までに、Actel(後にMicrosemi、現在はMicrochip)は市場の約18%を占めるまでになった。[ 6 ]
1990年代は、回路の高度化と生産量の両面でFPGAが急速に成長した時期でした。1990年代初頭、FPGAは主に電気通信とネットワークで使用されていました。1990年代末までには、FPGAは民生用、自動車用、産業用アプリケーションにも使用されるようになりました。[ 8 ]
2013年までに、Altera(31%)、Xilinx(36%)、およびActel(10%)が合わせてFPGA市場の約77%を占めた。[ 9 ]
マイクロソフトなどの企業は、FPGAがもたらすワットあたりの性能の優位性から、高性能で計算負荷の高いシステム(同社のBing検索エンジンを運用するデータセンターなど)を高速化するためにFPGAの使用を開始した。[ 10 ]マイクロソフトは2014年にBingの高速化にFPGAの使用を開始し、2018年にはAzureクラウドコンピューティングプラットフォームの他のデータセンターワークロードにもFPGAの展開を開始した。[ 11 ]
2019年以降、最新世代のFPGAは、人工知能分野のワークロードをターゲットとするために、AIエンジンなどの他のアーキテクチャと統合されてきました。 [ 12 ]
以下のタイムラインは、FPGA設計のさまざまな側面における進捗状況を示しています。
設計開始とは、FPGAに実装するための新しいカスタム設計のことです。
現代の FPGA は、複雑なデジタル演算を実行するための十分なロジック ゲートと RAM ブロックを備えています。FPGA は、 ASIC が実行できるあらゆる論理機能を実装するために使用できます。出荷後に機能を更新できること、設計の一部を部分的に再構成できること[ 19 ]、および ASIC 設計と比較して非反復エンジニアリング コストが低いこと (一般的にユニット コストは高いにもかかわらず) は、多くのアプリケーションで利点となります。[ 1 ]
FPGA設計では非常に高速なI/Oレートと双方向データバスが採用されているため、セットアップ時間とホールド時間内に有効なデータの正しいタイミングを検証することが課題となります。[ 20 ]フロアプランニングは、 FPGA内のリソース割り当てがこれらのタイミング制約を満たすのに役立ちます。
一部の FPGA は、デジタル機能に加えてアナログ機能を備えています。最も一般的なアナログ機能は、各出力ピンのプログラム可能なスルーレートです。これにより、ユーザーは、そうでなければ許容できないほどリンギングやカップリングが発生する軽負荷のピンに低いレートを設定し、そうでなければ動作が遅すぎる重負荷の高速チャネルに高いレートを設定できます。[ 21 ] [ 22 ]また、クロック生成と管理、および高速シリアライザ/デシリアライザ (SERDES) 送信クロックと受信クロックリカバリに使用される、水晶発振器ドライバ回路、オンチップ RC 発振器、および組み込み電圧制御発振器を備えた位相同期ループも一般的です。差動信号チャネルに接続するように設計された入力ピン上の差動コンパレータはかなり一般的です。一部のミックスドシグナルFPGAは、アナログ信号調整ブロックを備えた統合周辺アナログ-デジタルコンバータ(ADC) およびデジタル-アナログコンバータ(DAC) を備えており、システムオンチップ(SoC)として動作できます。[ 23 ]このようなデバイスは、内部のプログラマブル相互接続ファブリック上にデジタルの1と0を保持するFPGAと、内部のプログラマブル相互接続ファブリック上にアナログ値を保持するフィールドプログラマブルアナログアレイ(FPAA)との境界線を曖昧にする。

最も一般的な FPGA アーキテクチャは、構成可能ロジック ブロック (CLB) またはロジック アレイ ブロック (LAB) (ベンダーによって異なる) と呼ばれるロジック ブロックのアレイ、 I/O パッド、およびルーティング チャネルで構成されています。[ 1 ]一般的に、すべてのルーティング チャネルは同じ幅 (信号数) を持ちます。複数の I/O パッドが、アレイの 1 行の高さまたは 1 列の幅に収まる場合があります。
「アプリケーション回路は、十分なリソースを備えたFPGAにマッピングする必要があります。必要なロジックブロックとI/Oの数は設計から容易に決定できますが、必要なルーティングチャネルの数は、同じ量のロジックを持つ設計間でも大きく異なる場合があります。たとえば、クロスバースイッチは、同じゲート数のシストリックアレイよりもはるかに多くのルーティングを必要とします。未使用のルーティングチャネルは、何のメリットももたらさずにFPGAのコストを増加させ(そしてパフォーマンスを低下させる)ため、FPGAメーカーは、ルックアップテーブル(LUT)とI/Oの観点から適合するほとんどの設計をルーティングできるように、必要最低限のチャネルを提供するように努めています。これは、レントのルールから導き出された推定値や、既存の設計を用いた実験などによって決定されます。」[ 24 ]
一般的に、ロジックブロックはいくつかのロジックセルで構成されます。典型的なセルは、4入力LUT、全加算器(FA)、およびD型フリップフロップで構成されます。LUTは2つの3入力LUTに分割される場合があります。通常モードでは、これらは最初のマルチプレクサ(mux)を介して4入力LUTに結合されます。算術モードでは、それらの出力が加算器に供給されます。モードの選択は2番目のmuxにプログラムされます。出力は、 3番目のmuxのプログラミングに応じて、同期または非同期のいずれかになります。実際には、スペースを節約するために、加算器全体またはその一部が関数としてLUTに格納されます。[ 25 ] [ 26 ] [ 27 ]
最新のFPGAファミリは、上記の機能をさらに拡張し、シリコンに固定された高レベル機能を搭載しています。これらの共通機能を回路に組み込むことで、必要な面積が削減され、論理プリミティブから構築する場合と比較して、これらの機能のパフォーマンスが向上します。例としては、乗算器、汎用DSPブロック、組み込みプロセッサ、高速I/Oロジック、組み込みメモリなどが挙げられます。
ハイエンドFPGAには、高速マルチギガビットトランシーバーや、プロセッサコア、イーサネットメディアアクセス制御ユニット、PCIまたはPCI Expressコントローラ、外部メモリコントローラなどのハードIPコアが含まれる場合があります。これらのコアはプログラマブルファブリックと並んで存在しますが、 LUTではなくトランジスタで構成されているため、ファブリックリソースを大幅に消費することなくASICレベルの性能と消費電力を実現し、ファブリックのより多くの領域をアプリケーション固有のロジックに利用できます。マルチギガビットトランシーバーには、高性能信号調整回路に加え、高速シリアライザとデシリアライザも含まれていますが、これらはLUTでは構築できません。ラインコーディングなどの上位レベルの物理層(PHY)機能は、FPGAの種類によっては、ハードロジックでシリアライザとデシリアライザと並んで実装される場合とされない場合があります。

ハードマクロプロセッサを使用する別の方法として、 FPGAロジック内に実装されたソフトプロセッサIPコアを利用する方法があります。Nios II、MicroBlaze、Mico32は、よく使われるソフトコアプロセッサの例です。多くの最新のFPGAは実行時にプログラムされるため、再構成可能なコンピューティングまたは再構成可能なシステム 、つまり目の前のタスクに合わせて自身を再構成するCPUという概念が生まれました。さらに、FPGA以外の新しいアーキテクチャも登場し始めています。Stretch S5000などのソフトウェア構成可能なマイクロプロセッサは、同じチップ上にプロセッサコアのアレイとFPGAのようなプログラマブルコアを提供することで、ハイブリッドアプローチを採用しています。
2012年には、従来のFPGAのロジックブロックと相互接続を組み込みマイクロプロセッサと関連周辺機器と組み合わせることで、プログラマブルチップ上に完全なシステムを形成するという、粗粒度アーキテクチャアプローチがさらに一歩進められました。このようなハイブリッド技術の例としては、FPGAのロジックファブリック内に1.0GHzデュアルコアARM Cortex-A9 MPCoreプロセッサを組み込んだXilinx Zynq-7000オールプログラマブルSoC [ 28 ] [ 29 ]や、800MHzデュアルコアARM Cortex-A9 MPCoreを組み込んだAltera Arria V FPGAなどが挙げられます。Atmel FPSLICもそのようなデバイスの一つで、 AtmelのプログラマブルロジックアーキテクチャとAVRプロセッサを組み合わせて使用しています。 Microsemi SmartFusionデバイスは、 ARM Cortex-M3ハードプロセッサコア(最大512kBのフラッシュメモリと64kBのRAMを搭載)と、マルチチャネルA/DコンバータやD/Aコンバータなどのアナログ周辺機器を、フラッシュメモリベースのFPGAファブリックに組み込んでいます。
FPGA内部のロジックの大部分は、クロック信号を必要とする同期回路です。FPGAには、クロックとリセット専用のグローバルおよびリージョンルーティングネットワークが搭載されており、通常はHツリーとして実装されているため、スキューを最小限に抑えて供給できます。FPGAには、新しいクロック周波数を合成し、ジッタを管理するために、アナログ位相同期ループまたは遅延同期ループコンポーネントが含まれている場合があります。複雑な設計では、周波数と位相関係が異なる複数のクロックを使用でき、それぞれが独立したクロックドメインを形成します。これらのクロック信号は、発振器によってローカルで生成することも、データストリームから復元することもできます。クロックドメインをまたぐ回路を構築する際には、メタステーブル状態にならないように注意する必要があります。一部のFPGAには、異なるクロックで動作できるデュアルポートRAMブロックが搭載されており、クロックドメインを橋渡しするFIFOやデュアルポートバッファの構築に役立ちます。
FPGAのサイズと消費電力を縮小するために、TabulaやXilinxなどのベンダーは3Dまたはスタックアーキテクチャを導入しました。[ 30 ] [ 31 ] Xilinxは、 28nm 7シリーズFPGAの導入後、これらのFPGA製品ラインの中で最も高密度な部品のいくつかは、3D構造とスタックダイアセンブリ用に開発された技術を使用して、1つのパッケージに複数のダイを使用して構築されると述べました。
ザイリンクスのアプローチでは、複数の(3つまたは4つの)アクティブFPGAダイをシリコンインターポーザ (パッシブ相互接続を担う単一のシリコン片)上に並べて積層します。[ 31 ] [ 32 ]また、マルチダイ構造により、FPGAファブリック自体と超高速28 Gbit/sシリアルトランシーバではプロセス要件が異なるため、FPGAの異なる部分を異なるプロセス技術で作成することも可能です。このように構築されたFPGAは、ヘテロジニアスFPGAと呼ばれます。[ 33 ]
Alteraのヘテロジニアスアプローチでは、単一のモノリシックFPGAダイを使用し、Intelの組み込みマルチダイ相互接続ブリッジ(EMIB)テクノロジーを使用して他のダイやテクノロジーをFPGAに接続します。[ 34 ]
FPGAの動作を定義するために、ユーザーはハードウェア記述言語(HDL)または回路図で設計を提供します。HDL形式は、すべての部品を手作業で描くのではなく、高レベルの機能動作を指定できるため、大規模な構造を扱うのに適しています。ただし、回路図入力は、設計とその構成モジュールをより簡単に視覚化できるという利点があります。
電子設計自動化ツールを使用して、テクノロジーマップ付きネットリストが生成されます。次に、配置配線と呼ばれるプロセスを使用して、実際のFPGAアーキテクチャにネットリストを適合させます。このプロセスは通常、FPGAメーカー独自の配置配線ソフトウェアによって実行されます。ユーザーは、タイミング解析、シミュレーション、およびその他の検証および妥当性確認手法を使用して結果を検証します。設計および検証プロセスが完了すると、通常はFPGAベンダー独自のソフトウェアを使用して生成されたバイナリファイルを使用して、FPGAを(再)構成します。このファイルは、シリアルインターフェース(JTAG )を介してFPGAに転送されるか、 EEPROMなどの外部メモリデバイスに転送されます。
最も一般的な HDL はVHDLとVerilogです。National InstrumentsのLabVIEWグラフィカル プログラミング言語 ( Gと呼ばれることもあります) には、FPGA ハードウェアをターゲットにしてプログラムするための FPGA アドイン モジュールが用意されています。Verilog はプロセスを簡素化し、HDL をより堅牢で柔軟にするために作成されました。Verilog は C 言語に似た構文を持ち、Adaをベースにした VHDL とは異なります。[ 35 ]
FPGAにおける複雑なシステムの設計を簡素化するために、設計プロセスを高速化するためにテストおよび最適化された、定義済みの複雑な関数および回路のライブラリが存在します。これらの定義済み回路は一般的に知的財産(IP)コアと呼ばれ、FPGAベンダーやサードパーティのIPサプライヤーから入手できます。これらは無料であることは稀で、通常は独自のライセンスでリリースされます。その他の定義済み回路は、OpenCoresなどの開発者コミュニティから入手できます(通常はGPL、BSDなどの無料かつオープンソースのライセンスでリリースされます)。このような設計はオープンソースハードウェアとして知られています。
一般的な設計フローでは、FPGAアプリケーション開発者は設計プロセス全体を通して複数の段階で設計のシミュレーションを行います。まず、VHDLまたはVerilogで記述されたRTL記述を、システムをシミュレートして結果を観察するためのテストベンチを作成することでシミュレーションします。次に、合成エンジンが設計をネットリストにマッピングした後、ネットリストをゲートレベルの記述に変換し、シミュレーションを繰り返して合成がエラーなく完了したことを確認します。最後に、設計をFPGA上にレイアウトし、その時点で伝搬遅延値をネットリストにバックアノテーションして、これらの値を使用してシミュレーションを再度実行します。
最近では、プログラマーはFPGAが提供するパフォーマンスと電力効率を活用するためにOpenCL (Open Computing Language)を使用しています。OpenCLを使用すると、プログラマーはCプログラミング言語でコードを開発できます。[ 36 ]詳細については、高位合成とCからHDLを参照してください。
ほとんどのFPGAは、 SRAMベースの方式でプログラムされます。これらのFPGAはシステム内でプログラム可能で再プログラム可能ですが、外部ブートデバイスが必要です。例えば、フラッシュメモリやEEPROMデバイスは、ルーティングとロジックを制御する内部SRAMにコンテンツをロードします。SRAM方式はCMOSに基づいています。
SRAM方式のより稀な代替案としては、以下のようなものがある。
2016年、長年の業界ライバルであるザイリンクス(現在はAMDの一部)とアルテラがFPGA市場のリーダーでした。[ 38 ]当時、両社は市場のほぼ90パーセントを支配していました。
XilinxとAlteraはどちらも、WindowsとLinux用の独自の電子設計自動化ソフトウェア(ISE / VivadoとQuartus)を提供しており、エンジニアは設計、解析、シミュレーション、合成(コンパイル)を行うことができます。[ 39 ] [ 40 ]
2010年3月、Tabulaは、高密度アプリケーションでコスト削減の可能性を主張する、時分割多重ロジックと相互接続を使用するFPGA技術を発表しました。 [ 41 ] 2015年3月24日、Tabulaは正式に閉鎖しました。[ 42 ]
2015年6月1日、インテルはアルテラを約167億米ドルで買収すると発表し、2015年12月30日に買収を完了した。[ 43 ]
2020年10月27日、AMDはXilinxを買収すると発表し[ 44 ]、2022年2月に約500億米ドル相当の買収を完了した[ 45 ]。
2024年2月、アルテラは再びインテルから独立した。[ 46 ]
その他のメーカーには以下が含まれます。
FPGAは、計算可能なあらゆる問題を解決するために使用できます。FPGAは、Xilinx MicroBlazeやAltera Nios IIなどのソフトマイクロプロセッサを実装するために使用できます。しかし、FPGAの利点は、並列性および特定のプロセスで使用されるゲート数に関して最適であるため、一部のアプリケーションで大幅に高速であることです。 [ 52 ]
FPGAは当初、プリント基板のグルーロジックを実装する複雑プログラマブルロジックデバイス(CPLD)の競合製品として導入されました。サイズ、機能、速度が向上するにつれて、FPGAは追加機能を担うようになり、現在ではフルシステムオンチップ(SoC)として販売されているものもあります。特に1990年代後半にFPGAアーキテクチャに専用乗算器が導入されたことで、従来はデジタル信号プロセッサ(DSP)の専有領域であったアプリケーションが、代わりにFPGAを使用するようになりました。[ 53 ] [ 54 ]
FPGAの進化により、これらのデバイスの使用が増加しており、そのアーキテクチャにより、3D MRI画像セグメンテーション、3D離散ウェーブレット変換、断層画像再構成、PET/MRIシステムなどの複雑なタスクに最適化されたハードウェアソリューションの開発が可能になっています。[ 55 ] [ 56 ]開発されたソリューションは、並列処理による集中的な計算タスクを実行でき、動的に再プログラム可能で、低コストであり、医療画像処理に関連する厳しいリアルタイム要件を満たしています。
FPGAの利用におけるもう一つのトレンドはハードウェアアクセラレーションであり、FPGAを使用してアルゴリズムの特定の部分を高速化し、FPGAと汎用プロセッサ間で計算の一部を共有することができる。検索エンジンBingは、 2014年に検索アルゴリズムにFPGAアクセラレーションを採用したことで知られている。 [ 57 ] 2018年現在FPGAは、MicrosoftのProject Catapult [ 11 ]を含むAIアクセラレータとして、また機械学習アプリケーション向けの人工ニューラルネットワークの高速化のために、ますます利用されるようになっている。
当初、FPGAは生産量が少ない特定の垂直アプリケーション向けに限定されていました。このような少量生産アプリケーションでは、プログラマブルチップの単位当たりのハードウェアコストに企業が支払うプレミアムは、ASICの開発に費やされる開発リソースよりも手頃です。多くの場合、カスタムメイドのチップは大量生産すれば安価になりますが、製品を迅速に市場に投入するためにFPGAが選択されることがあります。新しいコストとパフォーマンスのダイナミクスにより、実行可能なアプリケーションの範囲が広がりました。[ 58 ]
FPGAのその他の用途としては、以下のようなものがある。
FPGAは、現代の軍事通信、特に統合戦術無線システム(JTRS)のようなシステムや、タレスやハリス・コーポレーションなどの企業のデバイスにおいて重要な役割を果たしています。その柔軟性とプログラマビリティにより、カスタマイズ可能で安全な信号処理を提供する軍事通信に最適です。米軍が使用するJTRSでは、FPGAは適応性とリアルタイム処理を提供し、さまざまな通信規格や暗号化方式に対応するために不可欠です。[ 65 ]
FPGAは、ソフトウェアシミュレーションではなくサイクル精度のハードウェア再現を提供するため、ModRetro M64やAnalogue 3Dなどのデバイスでレトロゲームコミュニティによって使用されています。 [ 66 ] [ 67 ]これにより、従来のエミュレータでよく見られる入力遅延、オーディオグリッチ、タイミングエラーが解消されます。[ 66 ] FPGAは、チップの内部ロジックを物理的に再構成して元のコンソールの回路を模倣することで、ゲームを元のコンソールで実行したときとほぼ同じように実行できるようにします。[ 66 ] [ 68 ]
ハードウェアセキュリティに関して、FPGAはASICやセキュアマイクロプロセッサと比較して利点と欠点の両方があります。FPGAの柔軟性により、製造中の悪意のある変更のリスクが低くなります。[ 69 ]以前は、多くのFPGAで、FPGAが外部メモリから設計ビットストリームをロードしている間(通常は電源投入時)、設計ビットストリームが公開されていました。現在、主要なFPGAベンダーはすべて、ビットストリームの暗号化や認証など、設計者向けのさまざまなセキュリティソリューションを提供しています。たとえば、AlteraとXilinxは、外部フラッシュメモリに保存されているビットストリームに対してAES暗号化(最大256ビット)を提供しています。物理的に複製不可能な機能(PUF)は、独自の署名を持つ集積回路であり、非常に少ないハードウェアスペースでFPGAを保護するために使用できます。[ 70 ]
Microsemi社のProAsic 3やLattice社のXP2プログラマブルデバイスのように、構成情報を不揮発性フラッシュメモリに内部保存するFPGAは、ビットストリームを公開しないため、暗号化は不要です。より高い耐タンパー性を求める顧客は、 Microsemi社などのベンダーが提供する、書き込み専用でヒューズ耐性のあるFPGAを使用できます。
AlteraはStratix 10 FPGAおよびSoCでセキュアデバイスマネージャと物理的に複製不可能な機能を導入し、物理攻撃に対する高度な保護を提供しました。[ 71 ]
2012年、研究者のSergei SkorobogatovとChristopher Woodsは、一部のFPGAが悪意のある意図に対して脆弱であることを実証しました。彼らは、Actel/Microsemi ProAsic 3の一部としてシリコンに重大なバックドアの脆弱性が製造されていることを発見し、暗号化キーとアクセスキーの再プログラミング、暗号化されていないビットストリームへのアクセス、低レベルのシリコン機能の変更、構成 データの抽出など、多くのレベルで脆弱になっていることを明らかにしました。[ 72 ]
2020年に、すべてのXilinx 7シリーズFPGAに重大な脆弱性(Starbleedと命名)が発見され、 ビットストリーム暗号化が無効になりました。回避策はありません。Xilinxはハードウェアの改訂版をリリースしませんでした。当時すでに市場に出回っていたUltrascale以降のデバイスは影響を受けませんでした。[ 73 ]
歴史的に、FPGAは固定ASICに比べて動作が遅く、エネルギー効率が悪く、一般的に機能も劣っていました。2006年の調査では、FPGAに実装された設計は、対応するASIC実装に比べて平均で40倍の面積を必要とし、12倍の動的電力を消費し、動作速度は3分の1であることが示されました。[ 74 ]
FPGAの利点としては、現場で機器を再プログラムしてバグを修正したり、その他の改善を行ったりできることが挙げられます。一部のFPGAには部分再構成機能があり、デバイスの一部を再プログラムしながら、他の部分は実行を継続できます。[ 75 ] [ 76 ]その他の利点としては、市場投入までの時間の短縮や、非反復的なエンジニアリングコストの削減などが挙げられます。ベンダーはFPGAプロトタイピングによって中間的なアプローチを取ることもできます。つまり、プロトタイプハードウェアをFPGA上で開発し、設計が確定した後に最終バージョンをASICとして製造するという方法です。これは新しいプロセッサ設計の場合にもよく見られます。[ 77 ]
CPLDとFPGAの主な違いはアーキテクチャにあります。CPLDは、比較的制約の多い構造を持ち、1つ以上のプログラマブル積和論理アレイが比較的少数のクロック付きレジスタに供給されます。そのため、CPLDは柔軟性に欠けますが、伝搬遅延がより予測しやすいという利点があります。一方、FPGAアーキテクチャは相互接続が中心です。そのため、FPGAははるかに柔軟性がありますが、設計がはるかに複雑になるか、少なくともより複雑な電子設計自動化(EDA)ソフトウェアが必要になります。FPGAとCPLDのもう1つの違いはサイズです。FPGAは通常、リソースの点でCPLDよりもはるかに大きくなります。一般的に、加算器、乗算器、メモリ、シリアライザ/デシリアライザなどのより複雑な組み込み機能を備えているのはFPGAだけです。もう1つの一般的な違いは、CPLDは構成を保存するための組み込みフラッシュメモリを備えているのに対し、FPGAは通常、構成をSRAMに保存し、電源投入時に初期化するために外部の不揮発性メモリを必要とすることです。設計で単純な即時起動が求められる場合、一般的にはCPLDが好まれます。場合によっては、単一のシステム設計でCPLDとFPGAの両方が使用されることもあります。そのような設計では、CPLDは一般的にグルーロジック機能を実行します。[ 78 ]