FPGAとは?仕組みやASICとの比較ををわかりやすく解説

機械メーカーなどが組込み機器開発にあたりプロセッサを選定する際、コストや処理速度などを考慮し、機能に過不足がないものを探します。

大手半導体メーカーは顧客の幅広い要望を満たすためにさまざまなスペックの製品を展開し、開発者は必要な機能があらかじめ備わっているプロセッサを選択します。

そうした中でニーズが高まっているのが、製造段階ではなく現場で回路を設計できるFPGA(読み方:エフピージーエー)が搭載されたプロセッサです。

FPGAは集積回路の種類の一つで、「現場で書き換え可能な論理回路の多数配列」を意味する「Field Programmable Gate Array」の略です。名前の通り、ユーザーが現場(Field)でプログラムを書き換えられます。

FPGAが注目される背景

規格が変更される度にハードウェアの設計をし直すとコストがかかりますが、プログラムデータを書き換られるFPGAを使うことで柔軟に対応できます。

FPGAは、携帯電話の基地局や、それらを支える各種ネットワーク機器、地上波デジタル局などで使用されています。

携帯電話の基地局やネットワーク機器などは規格の変更が頻繁に発生しますが、規格変更の度にハードウェアの設計を行うとコストがかかってしまいます。

そこで、プログラムデータを書き換え可能なFPGAを使えば、スムーズに新しい規格に対応できます。

また医療機器分野においては、MRIや超音波断層診断装置、内視鏡などの装置にFPGAが使用されています。マン・マシン・インターフェースの改善や、専門医による要望にも柔軟に対応できるからです。

ただし、実作業としてのハードウェア設計は不要でも、回路を設計するためのハードウェアの知識は求められます。

FPGAの回路の仕組み

FPGAはゲートアレイ方式の回路を使う

FPGAは、製造段階ではなく現場で回路構成を変更することが可能な集積回路で、ゲートアレイ方式をベースにしています。

ゲートアレイはASICの設計・製造手法の一つで、トランジスタで構成されたゲートが敷き詰められたアレイ(配列)を用意し、配線層を作って回路を構成していきます。

ゲートアレイは一般的には配線層を作ると修正できませんが、フィールドプログラマブル・ゲートアレイであるFPGAは、現場で何度でも配線の変更や修正ができます。

FPGAの内部構造、配線

出典:FPGAはどのようにして書き換えられるのか?

上記の図は、アイランドスタイルと呼ばれるFPGAの一般的な構造です。プログラム可能な論理ブロックが格子状に配置されています。

一般的なFPGAの構成は、下記の通りです。

  • IOB(Input Output Block)
  • LB(Logic Block)
  • CB(Connection Block)
  • SB(Switch Block)

それぞれの概要は、次の通りです。

IOB(Input Output Block)=ピンの入出力

FPGAのI/Oブロックは、外部と繋がるピンの入出力を行います。FPGAのI/Oピンには、用途が決まったピンのほか、ユーザーが自由に入出力極性を決められるI/Oもあります。このユーザーが自由に利用可能なI/Oを、GPIO(読み方:ジーピーアイオ―)と言います。GPIOは、「汎用入出力」を意味するGeneral Purpose I/Oの略です。

LB(Logic Block)=論理回路の構成部分

FPGAの中心となる部分です。この中にLUT(ルックアップテーブル)やフリップフロップ(FF)が入っています。LBでは、LUTとFFのペアを基本として論理回路が構成されます。

ルックアップテーブル(LUT)とは

ルックアップテーブル(LUT)とは、任意の真理値表を実現するための回路。FPGAでは、主に4入力1出力のものが使用される。

フリップフロップ(FF)とは

1ビットの情報を記憶できる論理回路。

CB(Connection Block)=配線

CBは、多数のロジックブロックやI/Oを接続するための配線です。FPGAは、同じ論理であっても配線長によって遅延時間が変化するため、配線を短くして遅延を減らすことで性能を上げることができます。

FPGAの開発においては、配線長が長くなり、許容できない遅延時間が生じて回路が意図しない動作をする問題が発生しがちです。そのため、配線長によるタイミングの制約を考慮した設計が求められます。

SB(Switch Block)=信号の切り替えポイント

SBは、スイッチのように信号をどこに送るか切り替える箇所です。これにより配線経路の自由な設定が可能です。このため、配線群だけでは実現できない柔軟性を補うことができます。

ポイント
  • FPGA=製造段階ではなく実際に使用する現場で、回路構成を変更することが可能な集積回路
  • FPGAの一般的な構造は、「アイランドスタイル」

FPGAのコンフィグレーションやプログラミングの仕組みとは?

FPGAにはコンフィグレーションやプログラミングが必要

前述の通り、FPGAはユーザーがプログラム可能なチップです。LBの中身を書き換え、任意の配線図で繋ぐことで、FPGAは思い通りの回路を作ることができます。

そこで重要なのが、「コンフィグレーション」と「プログラミング」です。

FPGAのコンフィグレーションとは

「コンフィグレーション」=FPGAへのプログラムデータの書き込み

一般的なIT用語として、「コンフィグレーション」は「設定」を意味します。ソフトウェアにおいては設定項目のことを指し、ハードウェアにおいては環境設定として使われることが多いです。

なお、FPGAにおけるコンフィグレーションは、「FPGAへのプログラムデータの書き込み」を意味します。

FPGAはコンフィギュレーションメモリの種類によって主に3つのタイプに分類されます。

  • SRAMベース:最も主流な構造、高性能
  • エンベデッドFlash型SRAMベース:1チップ構成、超低消費電力で動作
  • Flashベース:1チップ構成、別の不揮発性メモリの用意が不要ここにコンテンツを記載

本記事では、最も広く用いられているSRAMベースについて紹介していきます。

SRAMベースFPGA

SRAMとは、半導体メモリの一種です。データの読み出し・書き込みが行えるRAMのひとつで、RAMと同様に電源を切るとデータが失われる性質(揮発性)を持ちます。

このため、SRAM方式のFPGAは、電源を投入する度にプログラムデータをロードする必要があります。

RAMや揮発性については、下記の記事をご覧ください。

マイコンやスマホのROM(ロム)とRAM(ラム)の違いは何ですか?

SRAM方式のFPGAは電源が投入されると、外部記憶メディアであるフラッシュメモリやEEPROMから、プログラムがSRAMにロードされます。

フラッシュメモリとは

フラッシュメモリとは、記憶装置の1つであり、電源を切っても記憶内容が維持される、不揮発性の半導体メモリ・ROM。本来、ROMは、データの消去や書き込みができないが、フラッシュメモリは、例外的にデータの消去や書き込みができるROM。

フラッシュメモリ(フラッシュROM)とは?定義・意味・特徴をわかりやすく解説

そして、ロードされたデータは、FPGA上で実現される回路の情報となります。この時ロードされるデータを、「ビットストリームデータ」と言います。

ビットストリームデータとは

ビットストリームデータとは、FPGA/PLDのコンフィグレーションに用いられるデータを指す。伝送の際、ビットの流れ(ストリーム)が発生することから、ビットストリームデータと呼ばれる。

FPGAのコンフィグレーションの方法

FPGAのコンフィグレーションの方法としては、一般的には、コンフィグレーション用の外付けROMを使用します。電源投入後のコンフィグレーションは、通常は自動的に開始されます。

そのために、事前に外付けROMにプログラムデータを書き込んでおく必要があります。

FPGAの「プログラミング」=FPGAの外付けROMへのプログラムデータの書き込み

既に触れたとおり、FPGAは、事前に外付けROMにプログラムデータを書き込んでおく必要があります。このように、事前の外付けROMへプログラムデータを書き込む作業を、FPGAでは「プログラミング」と表現します。

「プログラミング」により、事前に外付けROMへプログラムデータを書き込むことによって、その後自動的なコンフィグレーションが可能になります。

以上のように、「プログラミング」と「コンフィグレーション」によって、FPGAが動作します。

FPGAを提供する主なメーカーの一覧

  • AMD(Xilinx)
  • intel(Altera)
  • Lattice Semiconductor
  • Microsemi(旧Actel)
  • Achronix

AMD(Xilinx)のFPGA

AMDはアメリカの半導体メーカーで、SRAM方式のFPGAを提供していたXilinxの買収を2022年に完了しました。

AMD(Xilinx)が提供するFPGA一覧
  • Virtexシリーズ
  • Kintexシリーズ
  • Artixシリーズ
  • Spartanシリーズ
  • Zynqシリーズ
  • XCシリーズ

intel(Altera)のFPGA

intelは、アメリカの半導体メーカーです。2015年6月にFPGAの代表的企業であったAlteraを買収し、intelのFPGA部門としました。2024年にはFPGA部門がスピンアウトして再び社名をAlteraとし、FPGA製品を展開していくと発表されています。

intel(Altera)は、SRAM方式FPGA、フラッシュ方式FPGAを提供しています。

intel(Altera)が提供するFPGA一覧
  • intel Agilex FPGA
  • intel Stratix シリーズ
  • intel Arria シリーズ
  • intel Cyclone シリーズ
  • intel MAX® シリーズ

FPGA・ASICの違い

FPGAは、よく特定用途向けのICであるASICと比較されます。

ASIC(読み方:エーシック)とは

ASICとは、「特定用途向け集積回路」を意味する「Application Specific Integrated Circuit」の略。名前の通り、ある特定の用途のために設計・製造されるICのこと。そのICを利用する機器メーカー(ASICユーザー)と半導体メーカー(ASICベンダー)が共同で開発する。ASICに対し、汎用的に使用されるマイコンなどは「汎用IC」となる。

どちらも目的に合わせて内部ロジックを作りこむ、いわゆる「カスタム品」です。
では、両者の違いは何でしょうか。

FPGA・ASICの比較・一覧表

FPGA・ASIC比較・一覧表は下記の通りです。

FPGA ASIC
初期投資 ×
デバイス単価
性能
書き換え回数 ×

下記の記事で詳しく比較しています。詳細はそちらをご覧ください。

FPGA、ASICの違いは何ですか?

FPGAをサポートするRTOS「μC3(マイクロ・シー・キューブ)」

高性能リアルタイム処理向けRTOS「μC3/Standard」

32/64bitの高性能プロセッサに最適化
割り込み応答性を高め、32/64bitの高性能プロセッサ向けに最適化されたμITRON4.0仕様のカーネル。
豊富なプロセッサ・サポート
業界随一のプロセッササポート実績があり、技術サポートも充実しています。CPUの選択肢を広げ、機会費用を抑える事ができます。業界随一のCPUサポート実績があり、技術サポートも充実しています。ご使用予定のデバイスで直ぐに開発着手が可能で、ご質問に対して24時間以内の1次回答を徹底しています。
マルチコア対応
組込み機器向けに最適なAMP型カーネル。マルチコアによって、リアルタイム性能を強化します。
豊富なデバイスドライバを用意
I2C, SPI, GPIO, SDなどのデバイスドライバをオプションで用意。(UART, Timer, INTCはμC3に、EthernetドライバはμNet3に付属しています。)

AMD(Xilinx)のFPGAに関するサポート状況

AMD(Xilinx)のFPGAは、μC3/Stamdardがサポートしています。

μC3/StandardがサポートしているAMD(Xilinx)のFPGAは、下記の通りです。

  • Zynq UltraScale+MPSoC
  • Zynq-7000

intel(Altera)のFPGAに関するサポート状況

intel(Altera)のFPGAは、μC3/Standardがサポートしています。

μC3/Standardがサポートしているintel(Altera)のFPGAは、下記の通りです。

  • Arria V SoC
  • Arria 10 SoC
  • Cyclone V SoC