技術情報・技術コラム

FPGAとは?FPGAの特性、開発・設計のフロー

FPGA

組み込みハードウェア

近年非常に注目・重宝されているFPGAについて、皆さんは詳しく知っていますか。当記事ではそんなFPGAについて詳しく解説します。FPGAの基礎を学びたい方に是非読んでいただきたい内容となりますので、是非ご確認ください。

※当社では、FPGAボードの設計・開発を承っていますので、詳しくは下記よりご覧ください。

FPGAとは?

FPGAとは、(Field-Programmable Gate Array) の略で直訳すると、「現場で書き換え可能な論理回路の多数配列」の意味を指します。この意味の通り、FPGAは柔軟なデジタル回路を実装するためのプログラム可能な集積回路(IC)です。

通常のICと異なり、FPGAは任意の論理ゲートや回路をプログラムで構築できる特徴があります。これにより、特定のアプリケーションに合わせてカスタマイズされたデジタル回路を構築することが可能です。

近年では、ADコンバータやマイコンを内蔵したFPGAも登場しています。デバイスの見た目は回路構成を変更できないLSIと何ら変わりなく、製造プロセスも同じですが、デバイス内部の処理内容を設計者が変更できる点が異なります。

FPGAとマイコン・CPLD・CPU・GPU・ASICとの違い

FPGAは、マイコンやCPU・GPU・ASIC・ASSPなどのICとよく比較されます。下記にて各ICについて簡単にご説明します。

マイコン

マイコン(マイクロコントローラユニット:MCU、マイクロプロセッサユニット:MPU)とは、自動車、家電製品など、あらゆる電気製品に用いられている最も汎用的な演算用のLSIのことです。ただし、マイコンの定義は非常に曖昧であるため、注意が必要です。

マイコンを用いることで、電子機器の複雑な制御が可能となります。そのため、制御が複雑で多機能、高性能が求められる電子機器には必ずといっていいほど、使用されています。マイコンの中核はCPUであり、このCPUがメモリからプログラムを読み出し→データをロード→演算といった処理単位1つ1つを順番に処理を行います。

CPLD

CPLD(Complex Programmable Logic Device)とは、FPGAと同様に製品の購入後にユーザーによるプログラムの書き換えができるICを指します。FPGAとの大きな違いは規模であり、数万ゲート以上の大きさを持つFPGAに対し、CPLDは数千ゲート程の集積度です。つまり、簡単に言うと、FPGAと比較すると、やや柔軟性が低く、自由度が低い特性があるといえます。

CPU

CPU(Central Processing Unit)とは、周辺機器やソフトウェアから来る指示を処理したり、メモリなどを制御したりするIC全般を指します。厳密に定義されているわけではありませんが、CPUを搭載した演算処理を行う半導体デバイスをマイコンと呼ぶ場合があります。

GPU

GPU(Graphics Processing Unit)とは、3Dグラフィックスなどの画像の描画を行う半導体デバイスを指します。CPUとGPUは混同されることがありますが、GPUが画像処理をする役割であるのに対し、CPUはパソコン全体のデータを処理する役割を担います。いわば、CPUが電子機器を司る司令塔であり、GPUは画像描画などの専門家ともいえます。

ASIC

ASIC(Application Specific Integrated Circuit)とは、特定のアプリケーションに最適化された高性能なICを指します。ASICは特定の計算やデータ処理を行うために設計されており、その分野においては他のICと比較しても、高速に動作します。一方で、ASICの設計・製造には多大なコストと期間が必要となるため、注意が必要です。

FPGAの特性

FPGAの主な特性としては、下記が挙げられます。

いつでもプログラムの書き換えができる

製造後にも基板に実装した後でも、プログラムを書き換えることができます。通信規格の変更や新たな処理内容の追加があっても、FPGAを使用した機器は簡単に対応できます。これにより、製品寿命中のアップデートや改良が容易に行えます。

演算性能が非常に高い

近年、FPGAはCPUやGPUと比較して、高度に並列処理が可能であるため、演算の高速化や低レイテンシ化を実現するアクセラレータとして広く利用されています。これにより、超高速証券取引や機械学習によるサーバーアプリケーションなど、特定の分野での利用が進んでいます。

ちなみに、マイコンのみだと、高速処理することができないケースに、マイコンと掛け合わせてFPGAを活用するケースもあります。

FPGAの開発フロー

そんなFPGAの設計・開発フローは、以下のステップで進行します。

①回路設計(デザインエントリ)

HDLや回路図エディタを活用して、望む機能や回路を設計します。

②論理シミュレーション

シミュレータソフトウェアを用い、設計した回路の動作が仕様通りかを確認します。

③制約の設定

タイミング制約や物理制約(ピン配置)を具体的に指定します。

④配置配線

開発ソフトウェアが自動的にロジックブロックの配置や配線経路を決定します。

⑤タイミング解析

配置配線後のタイミング制約や遅延時間を解析し、最適化を施します。

⑥コンフィギュレーションデータ生成

配置配線後の回路情報から、コンフィギュレーションデータ(ビットストリーム)を生成します。

⑦コンフィギュレーション

生成したコンフィギュレーションデータをFPGAに書き込みます。

⑧実機動作検証

評価ボードや実際の基板上でFPGAの動作確認を行い、正確な性能を確保します。

FPGA開発における課題解決事例

FPGAの開発における課題を解決してきた事例をご紹介します。

事例①:FPGA内のFIFOによるリソース使用率削減および消費電力削減

波形整形のため、複数の指定サイクル遅延分のデータを取り出したいといったご要望がございました。

(例)

データ①:(0~N)遅延

データ②:(0~M)遅延

データ③:(0~L)遅延

・・・

しかしながら、上述の手順を行うと、レジスタで構成した際の多くのレジスタが必要となり、リソース使用率大きくなります。さらに、サイクル毎にレジスタ値が変わる為、消費電力も大きくなります。そこで・・・

事例②:FPGAによる高速通信の実現

アナログ信号をADCによりデジタルデータに変換した後、それを収集し処理を行う回路にデータ転送を行いたいといったご要望を承りました。

ただし、通常、大量かつ高速性を持ったデータ転送が必要な場合、通常のパラレル転送では要求されるパフォーマンスが実現できません。FPGAを用いて・・・

事例③:FPGAによる正確性向上

ADCのサンプリング位置を1ns±1nsステップで設定したいといった要望がございました。

しかしながら、 Delayライン等を使用するとサンプリング位置のばらつきが大きくなってしまいます。FPGAの・・・

FPGAに関連する開発実績

具体的に当社がこれまで対応してきたFPGAの設計・開発実績をご紹介します。

事例①:プラント業界向け 警報装置

当警報装置では、LAN、RS232CのインターフェースをCPU(PIC)にて制御します。CPUとFPGA間通信はSPI通信を採用しています。

FPGAを用いて警報データ、音片データの合成を行い、最大音声合成時でも歪みなく合成することを実現しています。また、音片データの出力回路としてDAC、オーディオアンプ等を装備しています。

当事例では、基板設計・製作といったハードウェア領域はもちろん、ファームウェアの開発といったソフトウェア領域まで一貫して対応しております。この社内一貫対応体制により、コミュニケーションロスが少ない高品質な開発を可能としてます。組み込み機器・ボードのことならお気軽に当社にご相談ください。

事例②:リアルタイム 動画検査装置

当検査装置では、PXIレイド機能+LabVIEWによる高速保存(1ファイル1GB)を実現しています。また、C++、LabVIEWが並行で動作し、保存が終了したファイルから1枚分の画像を抜き取り要求処理を実行します。

細かな処理内容はGUIで指定しています。処理のひな型はC++より提供しています。C++にて、GUIで指定された内容で動作するように構成しています。

デシリアライザICにより、画像データをシリ/パラ変換し、CameraLinkへ出力しています。また、FPGAにより、画像データバッファリング、フォーマット変換及びクロック付替えを行い、UART通信の制御を行っています。

FPGAボードの開発なら、組み込みシステム・IoT機器開発.comまで!

組み込みシステム・IoT機器開発.comを運営する山勝電子工業では、基板設計、部品実装、機器・ボード制作といった組み込みハードウェアの開発から、組み込みソフト、インフラ開発、WEBアプリケーションまで社内一貫対応しております。

この社内一貫対応の体制により、ハードウェアとソフトウェアの協調開発ができ、コミュニケーションロスを減らし、効率的且つ、高品質なシステム開発を実現しています。組み込みシステムの開発なら、当社にお気軽にご相談ください。

技術コラム一覧に戻る