フィールド・プログラマブル・ゲート・アレイ(FPGA)とマイクロコントローラーの違い
2024年6月3日。
ブログを読む

フィールド・プログラマブル・ゲート・アレイ(FPGA)とマイクロコントローラー装置(MCU)は、よく比較される2種類の集積回路(IC)で、いずれも一般的に組み込みシステムやデジタル設計で使用されます。FPGAとマイクロコントローラーはどちらも、デバイスや大規模システムに統合できる「小型コンピューター」と考えることができます。

プロセッサーとして、FPGAとマイクロコントローラーの主な違いは、プログラマビリティーと処理能力にあります。FPGAはより強力で多用途ですが、より高価でもあります。マイクロコントローラーはカスタマイズ性が低い分、コストも低くなっています。多くのアプリケーションにおいて、マイクロコントローラーは非常に優れた機能とコスト効率を備えた選択肢です。一方、並列処理を必要とするような、要求の厳しいアプリケーションや開発中のアプリケーションでは、FPGAが必要になります。

マイクロコントローラーとは異なり、FPGAはハードウェア・レベルでの再プログラマビリティーを提供します。独自の設計により、ユーザーはタスクに応じてチップのアーキテクチャーを構成および再構成できます。FPGA設計では並列入力を同時に処理することもできますが、マイクロコントローラーでは一度に1行のコードしか読み取れません。また、FPGAはマイクロコントローラーの機能を実行するようにプログラムできますが、マイクロコントローラーを FPGA として実行するように再プログラムすることはできません。

フィールド・プログラマブル・ゲート・アレイ(FPGA)とは

FPGAは1985年にXilinx社によって初めて導入され、その汎用性と処理能力で高く評価されています。その結果、多くの高性能コンピューティング(HPC)、デジタル信号処理(DSP)、プロトタイピング・アプリケーションで好まれる選択肢となっています。

従来の特定用途向け集積回路(ASIC)とは異なり、FPGA は、初期製造プロセスが完了した後に「現場で」構成(および再構成)できるように設計されています。カスタマイズできることはFPGAが提供する最大の価値ですが、FPGAはプログラムが可能というだけではなく、これを行わなければならないという点にも留意する必要があります。ASICとは異なり、FPGA は「すぐに使える」ソリューションではなく、使用する前にVerilogやVHDLなどのハードウェア記述言語(HDL)を使用して構成する必要があります。FPGAのプログラミングには専門知識が必要であり、これによりコストが増加するだけではなく、導入が遅れる可能性があります。一部のFPGAでは、電源を切ってもプログラミング命令を保持できる不揮発性メモリーが提供されていますが、通常、FPGAは起動時に構成する必要があります。

FPGAのメリット

これらの課題にもかかわらず、FPGAは、高性能、低遅延、リアルタイムの柔軟性を必要とするアプリケーションでは依然として有用です。FPGAは、次のような要件があるアプリケーションに特に適しています。

  • 迅速なプロトタイピング:FPGAは、複数の種類のカスタマイズされたデジタル回路に迅速に構成できるため、コストと時間のかかる製造プロセスを必要とせずに、迅速なデプロイメントやアセスメント、変更が可能になります。
  • ハードウェア・アクセラレーション:要求の厳しいアプリケーションでは、FPGAの並列処理機能が役に立ちます。FPGAは、信号処理、暗号化機械学習アルゴリズムなど、計算負荷の高いタスクのパフォーマンスを大幅に向上させる可能性があります。
  • カスタマイズ:FPGAは、特定のプロジェクト要件に合わせて簡単に最適化できる柔軟なハードウェア・ソリューションです。
  • 寿命:FPGAベースの設計では、進化するプロジェクトの要求や技術標準に合わせてFPGAを更新および再構成できるため、ハードウェアの寿命が長くなるというメリットが得られます。

FPGAコンポーネント

再構成可能性を実現するために、FPGAは、プログラマブルなルーティング・ファブリックによって相互接続されたプログラマブルな論理ブロックの配列で構成されています。一般的なFPGAの主なコンポーネントは次のとおりです。

  • 構成可能な論理ブロック(CLB):CLBは計算機能を提供し、論理ゲート、小さなルックアップ・テーブル(LUT)、マルチプレクサー、データ・ストレージ用のフリップフロップなどの少数の基本論理要素を含む場合があります。
  • プログラマブルな相互接続:電気的にプログラマブルなスイッチによって結合されたワイヤー・セグメントで構成されるこれらのリンクは、さまざまなFPGAリソース間のルーティング・パスを提供し、さまざまな構成とカスタム・デジタル回路の作成を可能にします。
  • I/Oブロック(IOB):FPGAと他の外部デバイス間のインターフェースは、入力出力(I/O)ブロックによって実現され、FPGAがペリフェラルからデータを受信したり、ペリフェラルを制御したりできます。

FPGAのユースケース

FPGAは本質的に汎用性が高く、さまざまな業界やアプリケーションで広く使用されています。

  • 航空宇宙産業および防衛:FPGAは、データ取得に役立つ高速並列処理を提供し、レーダー・システム、画像処理、安全な通信に最適です。
  • 産業管理システム(ICS):電力網、石油精製所、水処理場などのインフラストラクチャーを監視するために使用される産業用管理システムでは、さまざまな業界の固有のニーズに合わせて簡単に最適化できるFPGAが使用されています。これらの重要な業界では、FPGAを使用した各種オートメーション機能やハードウェアベースの暗号化機能を実装し、効率的なサイバーセキュリティーを実現できます。
  • ASIC開発:FPGAは、新しいASICチップのプロトタイプ作成によく使用されます。
  • 自動車産業: 高度な信号処理が可能なFPGAは、先進運転支援システム(ADAS)、センサー・フュージョン、GPSなどの車載用アプリケーションにも最適です。
  • データセンター:FPGAは、高帯域幅、低遅延のサーバー、ネットワーク、ストレージ・インフラストラクチャーを最適化することで、データセンターに価値を付加します。

FPGAの機能

  • 処理コア:設定可能な論理ブロック
  • メモリー:外部メモリー・インターフェース
  • ペリフェラル:設定可能なI/Oブロック
  • プログラミング: ハードウェア記述言語(VHDL、Verilog)
  • 再構成可能性:高度に再構成可能で再プログラマブルな論理
マイクロコントローラーとは

マイクロコントローラーは、プロセッサー・コア(1コア以上)、メモリー(RAM)、およびマイクロコントローラー上で実行されるカスタム・プログラムを格納するための消去可能なプログラマブルな読み取り専用メモリー(EPROM)を搭載したコンパクトな既製のASICの一種です。「システムオンチップ (SoC)」ソリューションとして知られるマイクロコントローラーは、本質的には、独立して使用することも、より大規模な組み込みシステムで使用することもできる単一のハードウェアに統合された小型コンピューターです。

Arduino Starter KitやMicrochip Technology PICなどの消費者向けマイクロコントローラーは、アセンブリー言語または一般的なプログラミング言語(C、C++)を使用して構成でき、コスト効率に優れているため、愛好家や教育者に選ばれています。マイクロコントローラーは、より複雑で重要なタスクを処理することも可能で、産業用アプリケーションでは一般的です。ただし、処理能力とメモリー・リソースが減少すると、要求の厳しいアプリケーションではマイクロコントローラーの有効性が制限される可能性があります。

マイクロコントローラーのメリット

制限はあるものの、マイクロコントローラーには次のような多くのメリットがあります。

  • コンパクトな設計:マイクロコントローラーは、必要なすべてのコンポーネントを小さな単一チップに統合し、サイズと重量が優先されるアプリケーションで役立つ小さなフットプリントを実現します。
  • エネルギー効率:低電力で動作するように設計されたマイクロコントローラーは、バッテリー駆動のデバイスや、電力消費が懸念されるその他のアプリケーションに適しています。
  • コスト効率が高い:マイクロコントローラは、追加のペリフェラルやコンポーネントの必要性を減らす完全な SoC ソリューションを提供します。低コストの汎用マイクロコントローラーを使用すると、プロジェクト全体の費用を大幅に削減できます。
  • 柔軟性:マイクロコントローラーはFPGAほど多用途ではありませんが、さまざまなアプリケーションに合わせてプログラム可能です。マイクロコントローラーはハードウェア・レベルで再プログラムすることはできませんが、ソフトウェア・レベルでは簡単に再構成、更新、最適化できます。

マイクロコントローラのコンポーネント

再プログラマビリティーが優先事項でない場合は、自己完結型マイクロコントローラーが小型ながら高性能な代替手段となります。以下は、マイクロコントローラーの主要コンポーネントです。

  • 中央処理装置(CPU):「頭脳」とも呼ばれる中央処理装置(CPU)は、命令の実行と操作の制御を担うコア・コンポーネントとして機能します。
  • メモリー:マイクロコントローラーには、システムの電源が失われた場合に失われる可能性のある一時データを保存する揮発性メモリー(RAM)と、マイクロコントローラーのプログラミング・コードを保存する不揮発性メモリー(ROM、FLASH)の両方が含まれています。
  • ペリフェラル:対象アプリケーションに応じて、マイクロコントローラーには、I/Oインターフェース、タイマー、カウンター、アナログ/デジタル・コンバーター(ADC)、通信プロトコル(UART、SPI、I2C)など、幅広い周辺コンポーネントが含まれる場合があります。

マイクロコントローラーのユースケース

FPGAとは異なり、小型で手頃な価格の不揮発性マイクロコントローラーは最新のエレクトロニクスに普及しており、次のような特定のタスクのために頻繁に導入されています。

  • 自動車システム: マイクロコントローラーは、エンジン制御、エアバッグ、車載インフォテインメント・システムに使用されています。
  • 家電:マイクロコントローラーは、スマートフォン、スマートテレビ、その他の家電製品、特にモノのインターネット(IoT)に統合されるデバイスにとって重要です。
  • 産業オートメーション:マイクロコントローラーは、機械の制御、システムの監視、プロセスオートメーションなどの産業用アプリケーションに適しています。
  • 医療機器:マイクロコントローラーは、ペースメーカー、血糖値モニター、診断ツールなどの救命機器によく使用されています。

マイクロコントローラーの機能

  • 処理コア:固定CPU
  • メモリー:内蔵RAMおよびROM/フラッシュ
  • ペリフェラル:内蔵I/Oインターフェース
  • プログラミングソフトウェア(C、アセンブリ)
  • 再構成可能性:限定的、ファームウェア更新
FPGAとマイクロコントローラーの主な違い

FPGAとマイクロコントローラーを比較する場合、ハードウェア・アーキテクチャー、処理能力、消費電力、開発者の要件など、いくつかの重要な違いを考慮することが重要です。

  • ハードウェア構造
    • FPGA:高度に構成可能なプログラマブルな論理ブロックと相互接続により、再プログラマブルでカスタマイズされたデジタル回路が可能になります。
    • マイクロコントローラー:定義済みのコンポーネント(CPU、メモリー、ペリフェラル)が 1 つのチップに統合された固定アーキテクチャー。
  • 処理能力
    • FPGA:高度な並列処理により、複数の同時操作が可能になります。
    • マイクロコントローラー:順次処理用に設計されたマイクロコントローラーは、一度に1つの命令しか実行できません。
  • 消費電力
    • FPGA:通常、マイクロコントローラーよりも多くの電力を消費します。
    • マイクロコントローラー:低消費電力に最適化されており、バッテリー駆動のアプリケーションに適しています。
  • プログラミング
    • FPGA:構成およびデバッグには、ハードウェア記述言語に関する専門知識が必要です。
    • マイクロコントローラー:Javascript、Python、C、C++、アセンブリ言語などのソフトウェア開発言語を使用してプログラムできます。
  • コスト
    • FPGA:FPGA ハードウェアは、より高いパワーを提供しますが、高度なスキルが必要であり、消費電力の増加と専門のプログラマーの才能による追加コストがかかるため、通常はより高価になります。
    • マイクロコントローラー:一般的に、すぐに入手可能で、消費電力が低く、よりアクセスしやすいプログラミング言語をサポートした、よりコスト効率の高いソリューションです。
  • 多機能性
    • FPGA:FPGAはマイクロコントローラーよりもはるかに柔軟性が高く、ハードウェア・レベルでのカスタマイズが可能です。
    • マイクロコントローラー:マイクロコントローラーは幅広いアプリケーションに適していますが、FPGAと比較すると表面的なカスタマイズしか提供しません。
IBMインフラストラクチャー・ソリューションの詳細はこちら

多用途でパワフルなFPGAプロセッサーをお探しの場合でも、コスト効率に優れた小型のマイクロコントローラーをお探しの場合でも、IBMの最先端のインフラストラクチャー・ソリューションでお客様のビジネスを次のレベルに引き上げることをご検討ください。新しいIBM FlashSystem 5300は、パフォーマンスとサイバー・レジリエンスを向上させます。新しいIBM Storage Assuranceは、ストレージの所有権を簡素化し、ITライフサイクルの課題に対処するのに役立ちます。

 
著者
Josh Schneider Senior Writer, IBM Blog