- 発行日 2023年10月31日
- 最終変更日 2024年3月25日
- 1 分
FPGAとは?
FPGAは、製造・設置後にソフトウェアの遠隔修正を可能にし、技術の進歩に対応するための費用対効果の高いハードウェア・ソリューションです。

はじめにFPGAはチップをリモート・プログラマブルにすることでハードウェアを支援するために開発されました。このガイドでは、FPGAとは何か、FPGAがどのように機能するのか、そしてFPGAの選び方について説明します。
FPGAの意味
FPGAとは、Field Programmable Gate Array(フィールド・プログラマブル・ゲート・アレイ)の略です。FPGAは、製造されたハードウェアを、特定の目的に対してより効率的で実用的なものにするために修正またはカスタマイズしたり、工場出荷後に性能やセキュリティをアップグレードしたりするために使用されます。FGPAはカスタマイズが可能で汎用性が高く、現代の多くの電子機器や幅広い市場・産業で利用されています。
FPGAが使われる理由
FPGAは1980年代にプログラマブル読み出し専用メモリから開発されましたが、1990年代には、その多用途性、技術の急速な発展、インターネットの発展により、多くのデバイスでその用途と応用が広がっていました。
今日、FPGA は、製造前の製品をテストするためのシミュレーション設定で使用され、また、製造後のハードウェアを更新するためにも使用されています。FGPAは、デジタルテレビ、無線通信、電気医療機器、ゲーム機、コンピュータ、スマートフォン、その他多くの家庭用および産業用機器に使用されています。
FPGAはカスタマイズが可能で、非常に汎用性が高いため、一般的なソリューションとなっています。FPGAは、新しいハードウェアを導入するのとは対照的に、すでに確立されたハードウェアを技術の進歩とともに成長させる費用効果の高い方法です。
最後に、FPGASはカスタマイズが可能なため、設計の自由度が高く、設計の道筋もシンプルになります。特定の目的に適合させるために使用する前に、あらかじめプログラムされた機能を克服する必要はありません。
FPGAの仕組み

FPGAは主に、電気機器のハードウェアを再構成してその機能を調整または更新することで動作します。大まかに言えば、FPGAにはロジック・ブロックを備えたプログラマブル・シリコン・チップが搭載されており、一連の入出力ブロックを介してハードウェアの残りの部分と通信します。一度信号を受信し、再プログラムされると、通常のチップとは異なり、新しい機能を実行し始めます。
FPGAのアーキテクチャ
FPGAのアーキテクチャとは、その構造的な構築を指します。FPGAは30万以上の論理ブロックと1000以上の入出力を含むことができます。
FPGAには、プログラマブル・ロジックIC、相互接続配線、プログラマブルI/Oブロックの3つの主要部分があります。ロジック・ブロックにはロジック・ゲートが含まれ、結果を決定するためにプログラムされ、すでに内部にあるハードウェアを修正します。配線はロジック・ブロックの間を走り、それらすべてをつなぎ、出力と入力にも接続され、すべてのブロックを1つのまとまった単位にします。最後に、I/OブロックはFPGAを外部の回路やデバイスに接続するもので、FPGAはロジック・ルールを通信し、ハードウェア機能を修正することができます。
図に示すと、ロジック・ブロックは行と列に隣り合って積み重ねられ、その間を配線が走り、最後に外側を囲むようにI/Oブロックが配置され、配線とロジック・ブロックを縁取ります。
どのFPGAを選ぶべきか

使用するFPGAは最終的に設計のニーズとコストと予算によって決まります。FPGAは設計予算内に収める必要があるため、まずFPGAのコストが最初の決定要因になります。また、利用可能なオプションも意思決定プロセスを合理化します。
次の決め手は、目的です。FPGAでハードウェアをより複雑に修正する必要がある場合、ゲート数の多いFPGAを選択する方が賢明かもしれません。あるいは、FPGA設計でハードウェア内の多くのデバイスと通信する必要がある場合、より多くのI/Oブロックを持つFPGAを選択する方がよいでしょう。最終的に、最適な決断を下すのに役立つのは設計でしょう。
FPGAプログラミング:知っておくべきこと
FPGAをプログラミングする際、FPGAを正しく機能させるために知っておかなければならないことがいくつかあります。まず、使用されるプログラミングは、一度書き出された後、バイナリコードフォルダに変換され、FPGAにインストールされる前に、FPGA上に配置される必要があります。これは、プログラミングが論理ゲートの命令部分を形成するためで、論理ゲートは0と1のバイナリ、または「真」と「偽」の決定プロセスで動作するため、プログラミングは論理ゲートが読み込んで利用できる言語である必要があります。これはもちろん、開発ソフトウェアによって行われます。FPGAインストレーションプロセスのこの部分を支援するために、様々なソフトウェアプラットフォームソリューションを購入することができます。
FPGAプログラミングとは?
FPGAプログラミングはソフトウェアプログラミングとは異なり、主にハードウェアベースで行われます。FPGAを支援するために使用される言語は、ハードウェア記述言語(HDL)と呼ばれます。このFPGAコーディング言語は、FPGAの動作を設計および変更するために使用されます。コーディングとHDLプログラミングが異なる点は、その応用にあります。コーディングがソフトウェアを構成し修正するのに対して、HDLはハードウェアに物理的な変更を加えます。
FPGAのプログラミング言語
FPGAをプログラミングする際の言語オプションはいくつかありますが、最も一般的なのはVerilogとVHDLです。簡単に説明すると、Verilogは原因と結果、または検証と論理を中心に構成されています。この言語は、単純なハードウェア機能を修正する必要がある単純な回路に最適です。VHDLは高速集積回路に最適な言語であるため、複雑なFPGAの用途に効果的です。
FPGAのプログラミング方法
FPGAプログラミングの最初のステップは、HDL言語を選択することです。FPGAの市場は大幅に拡大しているため、多くの言語から選択することができますが、プログラミングを支援するソフトウェア・プラットフォームを使用する場合は、使用する言語が決まる可能性があります。
第二のステップは、コマンドを一口大に分割することです。そうすれば、FPGA全体が1つの大きくて複雑な回路になるのではなく、FPGAの各部分が1つの目標に向かって機能するようになります。
回路が完成し、コマンドがデバイスに届くように、入力と出力を必ず宣言します。FPGAに処理させるためには、言語をバイナリコードに変換する必要があります。FPGAは汎用性が高いので、書いたコードが期待した結果でなかった場合、修正したり元に戻したりすることができます。
関連ガイド
関連ページ
- FPGA開発ツール
- FPGA
- Digilent プログラマブルロジック開発ツール FPGA Basys Artix-7
- Digilent FPGA開発ツール FPGA Xilinx Spartan-7
- Digilent 開発キットアクセサリ FPGAデバイス用 プログラミングモジュール 410-308
- Trenz Electronic GmbH プログラマブルロジック開発ツール CPLD, FPGA CPLD、FPGA...
- FTDI Chip プログラマブルロジック開発ツール FPGA Altera Cyclone-II
- Digilent 開発キットアクセサリ Xilinx FPGA用 プログラマアダプタ 410-249