ホームページ > ブログ > ナレッジベース > FPGAとマイクロコントローラ – 主な違いを理解する
マイクロコントローラとフィールドプログラマブルゲートアレイ(FPGA)はどちらも、デジタルシステム設計において広く利用されています。マイクロコントローラベースのシステムはますます普及しています。低コスト、低消費電力、そして基本的な制御タスクへの適合性から、当然の選択肢となっています。一方、FPGAの急速な普及、堅牢な開発ツールの普及、そして高い並列処理能力と高密度化により、FPGAベースのシステムは魅力的な選択肢となっています。
現在、組み込み市場向けには、8051などの従来型設計からRISCやDSPマシンまで、様々なマイクロコントローラコアが提供されています。様々な設計の中から最適なものを選ぶ際には、速度、消費電力、導入実績、再利用性、その他の技術的考慮事項といった基準が重要となります。組み込みアプリケーションは、コンピュータシステムにおいて常に拡大し続ける研究対象です。MCUは、多数の通信ポート、パルス幅変調(PWM)ユニット、そしてアナログ/デジタルコンバータ(ADC)をXNUMXつのチップに集積しており、産業用アプリケーションに最適です。
電気工学の様々な分野において、MCUは一般的に基本的な制御、通信、そして複雑性の低いタスクに使用され、フィールド・プログラマブル・ゲート・アレイ(FPGA)は高速かつタイムクリティカルな処理タスクに使用されます。しかし、民生用電子機器に統合されるデバイスをベースとしたアプリケーションには、様々な設計上の制約があります。このような状況では、消費電力、コード密度、そして周辺機器の統合が、性能要件よりも優先される可能性があります。一方、技術的な観点から見ると、FPGAの高密度化と大量生産による価格低下により、組み込みシステムを単一のFPGAチップに統合することが可能になっています。
マイクロコントローラは、マイクロコンピュータファミリーに属する電子デバイスです。マイクロコントローラのコンポーネントは、超大規模集積回路(VLSI)を用いて1つのチップに集積されます。コンピュータ・オン・チップとも呼ばれます。マイクロコントローラには、プログラムコードを格納するための一定量のRAMとROM(EEPROM、EPROMなど)、またはフラッシュメモリが搭載されています。その他、タイマー、パラレルポート、シリアルポート、割り込みポート、ADC、PWM、DACなどの機能も備えています。マイクロコントローラは、メモリとI/O機能を備えたマイクロプロセッサです。CPU、メモリ、I/O周辺機器を1つのチップに統合しているため、組み込みシステムで広く使用されています。
PCやノートパソコンは汎用マシン(ゲーム、インターネット閲覧、音楽、ワードプロセッサなど、様々なタスクに使用されます)です。一方、組み込みシステムは通常、特定のタスク向けに設計された単機能デバイスです。マイクロコントローラシステムの主な特徴は、多くの場合、本格的なオペレーティングシステム(Windows、Linux、macOS、iOSなど)を必要とせずに、特定のタスクを実行できることです。時計、MP3プレーヤー、自動販売機、その他の電子機器には組み込みシステムが搭載されています。完全なコンピューターは、デバイスの機能を妨げることがあります。食器洗い機を操作するためにWindowsを起動する必要があることを想像してみてください。図2はマイクロコントローラのアーキテクチャを示しています。
コンパイラは、高水準プログラミング言語のコードが文法とメモリ割り当ての両面で妥当かどうかを検証します。検証の結果、エラーや警告が表示されることが多く、エラーを含むコードはマイクロコントローラに保存されません。コードが正しいと判断されると、コンパイラはそれを機械語に変換し、マイクロコントローラのメモリにロードされるHEXファイルを出力します。
フィールドプログラマブルゲートアレイ(FPGAFPGA(プログラマブルFPGA)は、変更可能な(プログラム可能な)ロジックブロックと相互接続部を備えたデジタル集積回路(IC)です。設計エンジニアは、このようなデバイスをプログラムすることで、幅広い機能を実行できます。FPGAの構造によっては、一度しかプログラムできないものもあれば、繰り返しプログラムできるものもあります。当然のことながら、一度しかプログラムできないデバイスは「ワンタイム・プログラマブル」と呼ばれます。
FPGAの名称に含まれる「フィールドプログラマブル」とは、プログラミングが「現場」で行われることを意味します(コア機能がメーカーによってハードワイヤードされているデバイスとは異なります)。これは、研究室でFPGAを設定する場合や、既に実環境に導入されている電子システム内のデバイスの動作を変更する場合に当てはまります。デバイスが上位システム内でプログラミング可能な場合、そのデバイスはインシステムプログラマブルと呼ばれます。図3はFPGAの開発ボードを示しています。
FPGAは、既存のプロセッサのコプロセッサとして、時間的にクリティカルなタスクの高速化や、一般的なALUの機能を拡張するために頻繁に利用されます。例えば、マイクロコントローラを使用する場合、2項以上の方程式を計算するには、一連の算術演算や論理演算が必要となり、多くの場合、一時変数を割り当てる必要があります。FPGAは、ある程度の組み合わせロジックを使用しながら、このような計算を並列に実行することで、このようなシステムのパフォーマンスを向上させることができます。
FPGAは、カスタムコンピューティングシステムでも広く採用されています。カスタムコンピューティングシステムでは、計算デバイス全体がFPGA上に構築・実装されます。シングルチップマイクロコントローラは、多くの場合、特定のアプリケーションのニーズを満たすのに十分な性能を備えています。この場合、必要なアプリケーションのソフトウェアのみを記述すれば済みます。このようなシステムの設計にはハードウェアインターフェースが不可欠であり、多くの場合、標準の専用チップを使用して実装されます。その結果、ハードウェアの再設計なしには変更できない固定されたシステムとなります。FPGAは、これらのアプリケーションにおいて非常に高い柔軟性を提供し、ハードウェアのカスタマイズと並列処理を可能にします。図4は、FPGA開発ボードの内部ブロック図を示しています。
パフォーマンス
マイクロコントローラはクロック速度に依存するため、周波数は設計に依存するため、通常FPGAよりもパフォーマンスが低くなります。これらのアプリケーションのほとんどは、画像およびビデオ処理です。
消費電力
マイクロコントローラ(MCU)は小型であるため、FPGAよりも消費電力が少なくなっています。マイクロコントローラは、バッテリー、インバータ、コンバータの動作に最適です。一方、FPGAは画像や動画処理などのデジタル処理に優れています。
柔軟性とカスタマイズ
FPGAではハードウェア構成が柔軟であるのに対し、マイクロコントローラではすべての変更はソフトウェア開発によって行われます。そのため、マイクロコントローラはFPGAよりも柔軟性に欠けていました。MCUではソフトウェアベースのカスタマイズが有利ですが、FPGAではハードウェアベースのカスタマイズが容易です。
開発期間と複雑さ
MCUとFPGAは、メモリアーキテクチャとパフォーマンス特性が異なります。マイクロコントローラは不揮発性メモリを搭載しており、電源を切ってもメモリが保持されます。一方、FPGAはランダムアクセスメモリを搭載しているため、この機能は搭載されていません。マイクロコントローラは通常、C/C++などの高水準言語でプログラミングされますが、FPGA開発にはVerilogやVHDLなどのハードウェア記述言語が必要です。VerilogとFPGAはハードウェアをサポートする言語であるのに対し、C/C++はソフトウェアをサポートする言語です。
基本コンポーネント
マイクロコントローラは集積回路(IC)が集積されているだけで、それ自体は何も意味しません。一方、FPGAは主にICとその他の集積回路で構成されています。つまり、どちらの技術も集積回路と高水準言語の融合です。
カスタマイズ
FPGAとマイクロコントローラはどちらも製造後に再プログラム可能であり、インフラストラクチャの構築後に機能の変更も可能です。ただし、FPGAは主に高度なアプリケーションに適しており、ArduinoなどのMCUはよりシンプルなアプリケーションにも適しています。
マイクロコントローラは低価格で広く入手可能であり、電力および電子機器アプリケーション向けに幅広い機能を提供します。しかし、MCUを使用するには、C/C++などの高級言語の専門知識が必要です。一方、FPGAは高価ですが、はるかにユーザーフレンドリーです。マイクロコントローラは低消費電力で効率的に動作するため、エネルギー消費量を削減できます。一方、FPGAは高電力を必要とするため、動作に多くのエネルギーを必要とします。ソフトウェアベースのソリューションは直接カスタマイズできませんが、ハードウェアベースのソリューションは直接カスタマイズできます。インバータ、UPS、コンバータはMCUに最適なアプリケーションですが、ビデオおよび画像処理は並列処理能力があるため、FPGAに適しています。
ただし、どちらもアプリケーションによって異なります。設計者やエンジニアは、組み込みシステムにおいてMCUの方が小型であること、そしてDC-DCコンバータやその他の多くのパワーエレクトロニクスアプリケーションのようにサイズに制約があるアプリケーションが多いことから、より高度な用途に適していると感じています。一方、FPGAは人工知能、画像処理、ビデオ処理において耐久性と効率性に優れています。FPGAはユーザーフレンドリーで、MCUよりもはるかに高速に高負荷の計算を処理できます。FPGAを使用するのにMCUよりも専門知識は必要ありません。
このセクションでは、FPGA、CPLD、MCU の違いについて説明します。
FPGA と CPLD
|
比較の側面 |
FPGA |
CPLD |
|
内部構造 |
Hルックアップテーブルとして |
Has 複雑さが低く、ロジックブロックが小さい |
|
電源オン時間 |
T時間がかからない |
T時間がかかる |
|
消費電力 |
高い消費電力要件 |
低消費電力要件 |
FPGA vs マイクロプロセッサ
|
比較の側面 |
FPGA |
マイクロプロセッサ |
|
機能性と柔軟性 |
プログラム処理、暗号化、ネットワーク化など複数のタスクを実行できる優れたロジックアレイで、高い柔軟性を提供します。 |
一般的なタスクの指示を実行しますが、特定の機能向けに設計されており、柔軟性に欠けます。 |
|
タスクの実行 |
タスクを並列実行し、大規模なデータセットを効率的に処理します |
タスクを順番に実行する |
|
メモリタイプ |
揮発性メモリを使用し、停電後に再プログラミングが必要 |
不揮発性メモリを使用し、電源を切ってもデータを保持します |
|
適用例 |
高速計算、データストリーム処理、カスタムハードウェアタスクに適しています |
OS制御やI/O管理などの汎用コンピューティングに使用されます。 |
MCUとFPGAはどちらも、多くのデジタル、電気、電力アプリケーションにメリットをもたらします。マイクロコントローラは経済的で、消費電力が少なく、ソフトウェアとの親和性が高いのに対し、FPGAは高価で、消費電力が高く、ハードウェアとの親和性が高いものの、高性能で並列処理が容易です。MCUはRAMを搭載しているため、電源を切っても機能を維持できますが、FPGAは揮発性メモリを搭載しているため、この機能は備えていません。どちらも設計ベースの技術ですが、MCUとFPGAの両方を使用できるアプリケーションでは、消費電力、開発期間、並列処理、柔軟性を考慮する必要があります。
電話連絡
+86-755-27218592
さらに、 ヘルプセンター。 質問とその回答がすでに明確に説明されている可能性があるため、お問い合わせの前に確認することをお勧めします。
WeChatサポート
さらに、 ヘルプセンター。 質問とその回答がすでに明確に説明されている可能性があるため、お問い合わせの前に確認することをお勧めします。
WhatsAppサポート
さらに、 ヘルプセンター。 質問とその回答がすでに明確に説明されている可能性があるため、お問い合わせの前に確認することをお勧めします。