
FPGA(読み方:エフピージーエー)は、集積回路の種類の一つです。FPGAとは、「現場で書き換え可能な論理回路の多数配列」を意味する「Field Programmable Gate Array」の略です。名前の通り、ユーザーが現場(Field)でプログラムを書き換えられます。
FPGAの回路の仕組み
FPGAはゲートアレイ方式の回路を使う
FPGAは、ゲートアレイという回路の仕組みをベースにしています。
ゲートアレイとは
ゲートアレイとは、ASIC手法の一つ。あらかじめチップの上に敷き詰められたゲート回路を注文に応じて製造段階で配線する。配線層のみの製造で済むため、製造単価が安いというメリットがある。また、開発期間を短くすることもできる。
ゲートアレイ方式では、チップ上に敷き詰められたゲート回路をデバイスの製造段階で作ります。こうしてできた回路を使用して、製造段階ではなく実際に使用する現場でデバイスの外部から書き込む集積回路を、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)とは、数本の入力と1本の出力をもつ真理値表。FPGAでは、主に4入力1出力のものが使用される。
フリップフロップ(FF)とは
1ビットの情報を記憶できる論理回路。
CB(Connection Block)=配線
CBは、多数のロジックブロックやI/Oを接続するための配線です。FPGAは、同じ論理であっても、配線によって遅延時間が変化します。遅延時間を短くすると、動作周波数を高めることができます。つまり、FPGAの性能を高めることができます。
動作周波数とは
動作周波数とは、CPUの性能を示す指標の一つで、CPUが処理を同期させるために用いる信号(=クロック)の周波数。動作周波数は、1秒当たりのクロック数を指す。動作周波数はクロック周波数とも言う。
SB(Switch Block)=信号の切り替えポイント
SBは、スイッチのように信号をどこに送るか切り替える箇所です。これにより配線経路の自由な設定が可能です。このため、配線群だけでは実現できない柔軟性を補うことができます。
ポイント
- FPGA=製造段階ではなく実際に使用する現場でデバイスの外部から書き込む集積回路
- FPGAの一般的な構造は、「アイランドスタイル」
FPGAのコンフィグレーションやプログラミングの仕組みとは?
FPGAにはコンフィグレーションやプログラミングが必要
前述の通り、FPGAはユーザーがプログラム可能なチップです。LBの中身を書き換え、任意の配線図で繋ぐことで、FPGAは、思い通りの回路を作ることができます。逆に言えば、FPGAには、思い通りの回路を作るために回路の設計が必要となります。FPGAは、電源を入れるだけでは正しく動作しないのです。
そこで重要となるのが、「コンフィグレーション」と「プログラミング」です。FPGAの回路の設計では、このコンフィグレーションやプログラミングが必要となります。
ポイント
- FPGAは、思い通りの回路を作るために回路の設計が必要
- FPGAを正しく動かすにはコンフィグレーションとプログラミングが必要
FPGAのコンフィグレーションとは
「コンフィグレーション」=FPGAへのプログラムデータの書き込み
一般的なIT用語として、「コンフィグレーション」とは、「設定」を意味します。
コンフィグレーション(configuration)とは
コンフィグレーションとは、「設定」を意味する英単語。コンピュータの分野においては、「利用者が指定できる設定」という意味で使われる。ソフトウェアにおいては設定項目のことを指し、ハードウェアにおいては環境設定として使われることが多い。「コンフィグ」ともいう。
FPGAではコンフィグレーションは、「FPGAへのプログラムデータの書き込み」を意味します。
FPGAはSRAM方式による揮発性のデータ記録
多くのFPGAでは、SRAMという方式でプログラムデータを書き込みます。
SRAM(読み方:エスラム)とは
SRAMとは、半導体メモリの一種。データの読み出し・書き込みが行えるRAMの一つ。RAMと同様、電源を切るとデータが失われる性質(揮発性)を持つ。
SRAMは揮発性のため、電源がOFFになるとデータが消えてしまいます。このため、SRAM方式のFPGAは、電源を投入する度にプログラムデータをロードする必要があります。
RAMや揮発性については、下記の記事をご覧ください。
SRAM方式のFPGAは電源が投入されると、外部記憶メディアであるフラッシュメモリやEEPROMから、プログラムがSRAMにロードされます。
フラッシュメモリとは
フラッシュメモリとは、記憶装置の1つであり、電源を切っても記憶内容が維持される、不揮発性の半導体メモリ・ROM。本来、ROMは、データの消去や書き込みができないが、フラッシュメモリは、例外的にデータの消去や書き込みができるROM。
そして、ロードされたデータは、FPGA上で実現される回路の情報となります。この時ロードされるデータを、「ビットストリームデータ」と言います。
ビットストリームデータとは
ビットストリームデータとは、FPGA/PLDのコンフィグレーションに用いられるデータを指す。伝送の際、ビットの流れ(ストリーム)が発生することから、ビットストリームデータと呼ばれる。
FPGAのコンフィグレーションの方法
FPGAのコンフィグレーションの方法としては、一般的には、コンフィグレーション用の外付けROMを使用します。電源投入後のコンフィグレーションは、通常は自動的に開始されます。
そのために、事前に外付けROMにプログラムデータを書き込んでおく必要があります。
ポイント
- FPGAにおけるコンフィグレーションは、「FPGAへのプログラムデータの書き込み」のこと
- SRAM方式のFPGAは、電源を投入する度にプログラムデータをロードする必要がある
- コンフィグレーションの際、一般的には、コンフィグレーション用の外付けROMを用いる
FPGAの「プログラミング」=FPGAの外付けROMへのプログラムデータの書き込み
既に触れたとおり、FPGAは、事前に外付けROMにプログラムデータを書き込んでおく必要があります。このように、事前の外付けROMへプログラムデータを書き込む作業を、FPGAでは「プログラミング」と表現します。
「プログラミング」により、事前に外付けROMへプログラムデータを書き込むことによって、その後自動的なコンフィグレーションが可能になります。
以上のように、FPGAでは、「コンフィグレーション」と「プログラミング」によって、ユーザーがハードウェア記述言語 (HDL) または回路図で設計を行うことができます。
ポイント
- FPGAにおけるプログラミングは、「FPGAの外付けROMへのプログラムデータの書き込み」のこと
- プログラミングを行うことで、自動的なコンフィグレーションが可能になる
FPGAを提供する主なメーカーの一覧
- Xilinx
- Intel
- Lattice Semiconductor
- Microsemi(旧Actel)
- Achronix
FPGAを提供する主なメーカーは、Xilinxとintelの二社です。List of FPGA Companiesによれば、この二社が、金額ベースで8割以上のシェアを占めています(2015年時点)。また、両社は長年ライバル関係にあります。
XilinxのFPGA
Xilinxは、FPGAを中心としたアメリカの半導体メーカーです。Xilinxは、SRAM方式のFPGAを提供しています。
Xilinxが提供するFPGA一覧
- Virtexシリーズ
- Kintexシリーズ
- Artixシリーズ
- Spartanシリーズ
- Zynqシリーズ
- XCシリーズ
intel(旧Altera)のFPGA
intelは、アメリカの半導体メーカーです。2015年6月に、FPGAの代表的企業であったAlteraを買収しました。現在はintelのFPGA部門となっています。intelは、SRAM方式FPGA、フラッシュ方式FPGAを提供しています。
intelが提供するFPGA一覧
- intel Agilex FPGA
- intel Stratix シリーズ
- intel Arria シリーズ
- intel Cyclone シリーズ
- intel MAX® シリーズ
ポイント
- FPGAを提供する主なメーカーは、Xilinxとintelの二社
- Xilinxは、SRAM方式のFPGAを提供している
- intelは、SRAM方式FPGA、フラッシュ方式FPGAを提供している
FPGA・ASICの違い
FPGAは、よく特定用途向けのICであるASICと比較されます。
ASIC(読み方:エーシック)とは
ASICとは、「特定用途向け集積回路」を意味する「Application Specific Integrated Circuit」の略。名前の通り、ある特定の用途のために設計・製造されるICのこと。そのICを利用する機器メーカー(ASICユーザー)と半導体メーカー(ASICベンダー)が共同で開発する。ASICに対し、汎用的に使用されるマイコンなどは「汎用IC」となる。
どちらも目的に合わせて内部ロジックを作りこむ、いわゆる「カスタム品」です。
では、両者の違いは何でしょうか。
FPGA・ASICの比較・一覧表
FPGA・ASIC比較・一覧表は下記の通りです。
FPGA | ASIC | |
---|---|---|
初期投資 | 〇 | × |
デバイス単価 | 〇 | ◎ |
性能 | 〇 | ◎ |
書き換え回数 | ◎ | × |
下記の記事で詳しく比較しています。詳細はそちらをご覧ください。
FPGAの用途
FPGAは現在、携帯電話の基地局や、それらを支える各種ネットワーク機器、地上波デジタル局などで使用されています。
携帯電話の基地局やネットワーク機器などは、規格の変更が頻繁に発生します。しかし、規格変更の度にハードウェアの設計を行うとコストがかかってしまいます。
そこで、プログラムデータを書き換え可能なFPGAを使うことで、スムーズに新しい規格に対応できます。
また、医療機器分野においては、MRIや超音波断層診断装置、内視鏡などの装置にFPGAが使用されています。マン・マシン・インターフェースの改善や、専門医による要望にも柔軟に対応できるからです。
ポイント
- プログラムデータを書き換え可能なFPGAを使うことで、規格変更の際にハードウェアの設計を行うことなく、スムーズに新しい規格に対応できる
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に付属しています。)
Xilinx社のFPGAに関するサポート状況
Xilinx社のFPGAは、μC3/Stamdardがサポートしています。
μC3/StandardがサポートしているXilinx社のFPGAは、下記の通りです。
- Zynq UltraScale+MPSoC
- Zynq-7000
intel社のFPGAに関するサポート状況
intel社のFPGAは、μC3/Standardがサポートしています。
μC3/Standardがサポートしているintel社のFPGAは、下記の通りです。
- Arria V SoC
- Arria 10 SoC
- Cyclone V SoC
詳しい資料をご希望の方は、下記より製品ガイドをダウンロードしてください。