FPGA対MCU:どちらのプロセッサを使用すべきか?

投稿日 2020/06/18, 木曜日
更新日 2024/07/1, 月曜日
fpgavcmuワイド

最近、クライアントのために高電力の電圧コンバーターを組み立てましたが、設計を通じてMCUの使用を避けようとしていました。クライアントが基板に調光機能を追加したいと言い出したとき、10万サイクルのEEPROMを搭載した小さなコンポーネントを追加せざるを得ませんでした。私にとって、これは1枚あたり0.33ドルを費やしてこの機能を追加し、後でシステムを再構成できるようにすることはそれほど大きな問題ではありませんでした。これにより、面白い疑問が浮かびました:いつFPGAをMCUより選ぶべきか?

私が協力する設計者は、Arm、STM、TI、NordicのMCUモジュール/SoCを主にSDKを通じたメーカーのサポートのおかげで生活しています。では、FPGAはどうでしょうか?同じレベルのサポートを期待できますか、そして組み込みコンポーネントにFPGAを使用すべきですか?このタイプの質問への答えは常に単純ではありません。FPGAとMCUを選択する際に考慮すべきことと、基板用の新しいコンポーネントをどこで見つけるかについて説明します。

FPGAとMCUの能力

電子設計で真剣に取り組み始め、さまざまなコンポーネントの頭字語のスープを読み通すようになったときのことを覚えています。最初は、いくつかのデジタルプロセッサーの違いを見分けるのが難しかったですが、異なるアプリケーションにおける各コンポーネントの限界を理解することが、各タイプのコンポーネントを選択する際に役立ちました。これらのプロセッサーにプログラムできる限界も、各タイプのコンポーネントを選択する際に理解するのに重要でした。

これらの側面についてはすぐに取り組みますが、時々若い設計者からの質問があります:FPGAとMCUとは何ですか?どちらもコンピューティングパワーを提供するので、完璧な代替品であるべきですよね?それは、実行する必要があるアプリケーションによります。

FPGAとMCUコンポーネントの違いを感じるために、ASICと比較すると役立ちます。ASICの「A」は、コンポーネントがより大きなシステム内の特定のアプリケーション用に設計されていることを示しています。例には以下が含まれます:

リストはこれだけではありません。任意のASICは、狭い範囲のタスクのために非常に特定の、時にはプログラム可能な機能を提供します。ASICの統合レベルもチップによって異なります。マイクロコントローラーもある程度プログラム可能であり、実行できるタスクはASICのファームウェアに組み込まれているものよりも広範です。MCUは適応可能であり、メーカーのSDKでデバイスにプログラムできる任意のタスクを実行するように構築されています。

FPGAの楽しさと複雑さについてです。FPGAをカスタマイズ可能なASICと考えるのが好きです。矛盾していると感じるなら、FPGAをASICの設計時のプロトタイピングの一部として使用できることを知っておいてください。FPGA上のすべてのロジックブロックは設定可能です(基本的にはSRAMセルです)。ファームウェアを一から構築し、デバイス上でタスクがどのように実行されるかをハードウェアレベルで定義できます。これは、MCUやASICではできないことです。

FPGAとMCUコンポーネントの比較

FPGA vs. MCU vs. ASICs: 特定対汎用のスペクトラム。

SoCs/SiPs/SoMsについては?

SoCsの面白いところは、計算能力の面で特定から汎用までどこにでも位置づけられることです。コンポーネントメーカーは、新しい集積回路が複数の分離された集積回路を必要としていたタスクの範囲を実行する限り、「SoC」、「SoM」、「SiP」という用語を付けます。これらのコンポーネントは高度に統合されており、特定対汎用のスペクトラム上のどこにでも位置づけられます。

MPUs: より汎用的

上記のグラフィックのFPGAの右側にはMPUsが位置します。これらのデバイスはオペレーティングシステムを実行し、複数の周辺機器とインターフェースし、一般的なコンピューティングの作業馬です。MCUとFPGAを汎用性の面で入れ替えるべきだと主張する人もいますが(下記参照)、FPGAもMCUもMPUと同じタイプの一般的なコンピューティングには設計されていません。

FPGAとMCUの選択

以下の表は、MCUとFPGAのいくつかの最も重要な側面の簡単な比較を示しています。各タイプのコンポーネントには利点があり、設計者が自分のシステムに最適なものを決定することが求められます。個人的には、C言語での作業経験があるためMCUを好みますが、HDLを学んだことがありません。しかし、FPGAは特殊なASICと同じ機能を持つようにプログラムすることができます。

| | FPGA | MCU | | ---------- | ---------- | ---------- | | 再プログラミング| ハードウェアレベルで完全に再プログラム可能 | 変動あり: 組み込みオペレーティングシステム、動的に依存 | | プログラミング時間 | 長い: すべてをマシンコードに再コーディングして再コンパイルする必要がある | 短い: メーカーのSDKやライブラリによって支援される | | プログラミングの容易さ | 学習曲線が急であると見なされる | 簡単: 一般的な言語に精通している人なら誰でもコード可能 | | 消費電力 | 高い | 低い | | 並列化 | プログラミング中に設定可能 | ハードウェアアーキテクチャによって制限される | | 固定小数点対浮動小数点 | 固定小数点に設定されているが、プログラミング中に浮動小数点を実装可能 | 両方がアクセス可能 | | 言語 | ハードウェア記述言語 (HDL) | C/アセンブリ言語、RTOSがサポートする場合はその他(例: Python) |

新しい開発者にとってFPGAのプログラミングが難しいと見なされることが多いため、MCUは組み込みデバイスに最適なプロセッサと見なされています。これは、オープンソースコミュニティによって大いに助けられており、一部のオープンソースプロジェクトは新製品の基本アーキテクチャや概念実証として使用できます。これにメーカーからのサポートが加わり、MCUのプログラミングに利用できるツールが豊富にあります。

FPGAのプログラミングに学習曲線があるにもかかわらず、ファームウェアアーキテクチャの観点からは、より多くの設定が可能です。デバイスには、利用可能なLUTとALUの数に応じて、並列処理をプログラムすることができます。これにより、ファームウェアを非常に特定のアプリケーション用に設計する必要がある場合、FPGAは素晴らしい選択肢となります。例としては、AIでの推論、画像処理、ハードウェア制御アルゴリズム、繰り返し(または並列)計算を必要とするその他のタスクがあります。

適切なコンポーネントなしには、次の組み込みシステムはどこにも行きません。電子部品検索エンジンであるOctopartを使用すると、必要なコンポーネントを見つけることができます。高度なフィルタリング機能を使用すると、必要なコンポーネントを絞り込み、次のシステムにFPGAとMCUのどちらを選ぶかを迅速に決定するのに役立ちます。FPGAMCUはOctopartで見つけることができます。

最新の記事を読むために、私たちのニュースレターにサインアップしてください。

関連リソース

ホームに戻る
Thank you, you are now subscribed to updates.