FPGA、ASIC、および汎用マイクロコントローラーの違いと類似点は何ですか?


25

私はこの投稿を読みましたが、私の質問全体には答えていません。

マイクロコントローラは、メモリ、レジスタを備え、LOAD、STORE、ADDなどの一連の命令を処理できるものと考えています。その役割を実行するための論理ゲートなどが含まれていますが、その主なタスクはビットのユニバーサルプロセッサになることです。Microntrollerは、命令を保存および処理する機能を作成する相互接続されたASICデザインのシステムと考えています。

ASICデバイスは、論理的および電気的コンポーネントを使用して1つのタスクを実行するために特別に構築された回路であり、他のタスクも追加のハードウェアも含まれていないと考えています。

FPGAデバイスは、特定の真理値表を実装するために使用されるASICデバイス(低レベルデバイス)+残りの未使用のものと考えています。

その名前にもかかわらず、FGPAは新しい「異なるタスク」を実行するために再配線する必要があるため、非常に「アプリケーション固有」と感じます。これにより、ASICとの混乱が生じます。ただし、FPGAを再配線する場合は、必要なすべてのハードウェアが存在する必要があります。また、FPGAはプログラム可能であることを目的としていますが、それはマイクロコントローラーの目的ではありませんか?

私が参照した上記の投稿では、私がよく知っているHDLについても言及しています。HDLをASICとFPGAの両方に使用したり、プロキシによってマイクロコントローラー全体を設計することはできませんか?


1
あなたの質問が何であるかは明確ではありません。FPGA対ASICに関する関連質問を読んだことがありますか?HDLは実際にASICおよびFPGA実装の設計に実際に使用されており、HDLでマイクロコントローラーを設計できます。
pjc50

3
アルテラは、FPGAs for Dummiesという無料の電子ブックを提供しています。これは、FPGA、ASIC、およびマイクロコントローラーの違いをよく説明しています。
kkrambo

@kkramboあなたはをダミーと呼びますか?:)申し訳ありませんが、抵抗できませんでした...私はそれをチェックします。
user58446

質問のタイトルに「類似性」という単語を追加しました。3つの異なるデバイスの関係を混乱させる可能性のある技術的な専門用語の詳細があるためです。たとえば、1つのデバイスに他の2つのデバイスの1つが含まれていたり、同様のコンポーネントですが、いくつかの重要な側面が異なります。これは、既存の回答のいくつかによってすでに触れられています。ありがとうございました。
user58446

回答:


28

ASIC vs FPGA

フィールドプログラマブルゲートアレイは、特定用途向け集積回路のプロトタイピングステージと見なすことができます。ASICの製造は非常に高価であり、一度製造すると後戻りすることはできません(最も高価な固定コストはマスク[製造のステンシル] "]とその開発)。FPGAは何度も再プログラミングできますが、目標を達成するために汎用のゲートアレイが接続されているため、ASICのように最適化されていません。また、FPGAはネイティブに動的なデバイスであるため、電源を切ると、現在の状態だけでなく設定も失われます。ただし、起動時に構成をロードするためにFLASHチップやマイクロコントローラを追加するボードが存在するため、これはあまり重要ではない傾向があります。ASICとFPGAの両方をハードウェア記述言語で構成でき、また、最終製品にFPGAが使用される場合もあります。ただし、一般に、設計が修正されるとASICが作動します。

FPGAとマイクロコントローラー

マイクロコントローラとFPGAの違いについては、マイクロコントローラは基本的にFLASH / ROMのコードを順番に処理するASICであると考えることができます。最適化されていなくても、FPGAを使用してマイクロコントローラーを作成できますが、その逆はできません。FPGAは電子回路と同じように配線されているため、プロセッサがコードから別のコードにジャンプして十分な並列性をシミュレートするマイクロコントローラーのように、真に並列回路を構成することはできません。ただし、FPGAは並列タスク用に設計されているため、マイクロコントローラーのようにシーケンシャルコードを書くのは簡単ではありません。

たとえば、通常、「レゴブリックを含むXORゲートの構築(ルックアップテーブルとラッチ)に変換され、A / Bを入力として接続する」FPGA上で「let C be A XOR B」と記述した場合Cが使用されているかどうかに関係なく、クロックサイクルごとに更新されます。一方、「読み取り命令」に変換されるマイクロコントローラーでは、アドレスAとRAMのアドレスBの変数のXORであり、結果はアドレスCに格納されます。 RAMのアドレスCにある出力レジスタをコピーします。ユーザー側では、どちらの命令も1行のコードでした。これを行う場合、HDLでは、並列コードとは別に、シーケンスを人為的に行うプロセスと呼ばれるものを定義する必要があります。一方、マイクロコントローラでは、何もすることはありません。一方、マイクロコントローラーから「並列処理」(実際に調整)を取得するには、些細ではないスレッドを操作する必要があります。さまざまな働き方、さまざまな目的。

要約すれば:

ASIC対FPGA:固定、少数の製品ではより高価(大量生産では安価)、より最適化されています。

ASIC対マイクロコントローラ:確かにツールとハンマーを比較するようなものです。

FPGA vsマイクロコントローラー:順次コード処理用に最適化されていませんが、真の並列タスクも非常に簡単に実行できます。一般に、 FPGAはHDLで、マイクロコントローラーはC / Assemblyでプログラミングされます

並列タスクの速度が問題になる場合はいつでも、FPGAを使用し、設計を進化させ、最終的には、それが長期的に(大量生産で)安くなったらASICにします。シーケンシャルタスクで問題ない場合は、マイクロコントローラーを使用します。長期的に見ても安価であれば、アプリケーション固有のICをさらに増やすことができると思います。最良の解決策はおそらく両方のビットです。

これを書いた後の簡単な検索は私に何を与えました: ここに画像の説明を入力してください ここに画像の説明を入力してください

FPGAとマイクロコントローラー、このフォーラムで


14

FPGAは、再プログラミングすることで「再配線」できます。FPGAは、電源が投入されると、構成を構成可能なロジックセルに読み込みます。これは、ハードウェアを変更せずに再プログラミングできることを意味します。

ASICは、シリコンファウンドリでフォトリトグラフマスクを変更することによってのみ再配線できます。

マイクロコントローラはASICの一種で、プログラムを実行し、結果として一般的なことを実行できます。ただし、命令セットを変更する場合、または同様の操作を行う場合は、実際のシリコンICレイアウトを変更する必要があります。


FPGAとMCUの違いはより曖昧です。基本的に、FPGAとは、ハードウェアレベルでは、多数の小型SRAMセルであり、すべて高密度のマルチプレクサに接続されています。基本的に、FPGAは、マルチプレクサとSRAMセルを再プログラミングするだけで電子的に「再配線」できるディスクリートロジックの山です。

MCUはロジックセルの特定の構成にすぎないため、FPGA 内に MCUを実際に実装できます。実際、FPGAはMCUの設計プロセスで非常に一般的に使用されています。

マイクロコントローラは、特定のロジック構成の実装です。シリコンにMCUを直接実装することにより、必要なシリコンダイスペースの全体量を大幅に最適化でき、FPGAの必要な「汎用性」が禁止する特定のパフォーマンス最適化を行うことができるためです。これにより、MCUの製造コストを大幅に削減できます。その結果、一般的なMCUは、同等のロジックを搭載できるFPGAよりもはるかに安価です。


FPGA 、MCUでは不可能な方法で論理構造を実装できるため、特定のアプリケーションで役立ちます。たとえば、X1 + Y1、X2 + Y2、X3 + Y3、およびX4 + Y4を追加する必要がある場合、MCUは各操作を順番に実行する必要があります *。FPGAは、同時に 4つの別々の ALU 持つことができるため、1/4の時間で同じ操作を実行できます(2つのデバイスが同じレートでクロックされると仮定)。

これは、FPGA(または同じタスク用に設計されたASIC)が本当に輝ける場所です。実際には、多くの多くのことを同時に行うことができます。

*(注:ここではSIMDなどを無視しています)


FPGA / ASICの区別が曖昧だとは思いません。FPGAでは、「配線」を変更できる回路は同時に独立して動作します。MCUには、配線を変更できない大量の回路があり、その動作はプログラマブルメモリアレイから断片的にアクセスされる情報によって制御されます。通常、CPUは数千から数十億の選択肢のリストから1つの操作しか実行できませんが、MCUはそのような操作を順番にまとめることで実行できるように設計されます有用な仕事。
supercat

ありがとうございました。答えになりつつあります... 10か月後ですが。+1して修正を行います。
user58446

6

これはいい質問です、

基本的に、マイクロコントローラーとASICにはハードウェア(シリコンと呼ばれることもあります)が組み込まれており、変更することはできません。FPGAは、さまざまな種類のハードウェアを表すように構成できます(これには、マイクロコントローラーが含まれます)。

マイクロコントローラーはさまざまなことを行うことができると思うかもしれませんが、これはすべて異なるプログラム(技術的にはソフトウェアですが、ファームウェアと呼ばれることもあります)を実行することによってすべて行われます。異なる入力で異なる順序。

FPGAは通常、ASICにコミットするデザインを生成するために使用されますが、FPGAの内部動作を更新したり、機能ブロックを追加/削除したりする場合、必要なのはファームウェアの更新だけです。内部動作がシリコンにコミットされているため、ASICで実行されますが、再構成はできません。

つまり、マイクロプロセッサでは同じハードウェアを使用して異なるプログラムを実行し、FPGAでは異なる機能を実行するようにハードウェアを再構成し、ASICはハードウェアを変更できないが、通常は実行するように設計されているという点でマイクロコントローラーのようなものです単一の機能が非常に効率的に。

ASICとFPGAの両方にマイクロコントローラーを含めることができ、それらを使用すると、スタンドアロンのマイクロコントローラーのようにそれらのプログラムを作成できます。これの例は、アルテラのNIOS II組み込みプロセッサです。

それでも混乱する場合は、不明な点をお知らせください。回答を明確にするために最善を尽くします。

ジプシー


3

特定のゲートの集まりのように動作する場合、FPGAは電気信号によってプログラムされません。一部のFPGAにはこの構成を保存するフラッシュメモリが含まれますが、一部はリセットされず、電源リセットのたびに再プログラムする必要があります。

ASICは、すでに構成されている生産ラインから外れます。

FPGAのバグはファームウェアのアップグレードで修正できますが、ASICのバグは経済的に修復できません。


2

その名前にもかかわらず、FGPAは、新しい異なるタスクを実行するために再配線する必要があるため、非常に「アプリケーション固有」と感じます。

これは、「アプリケーション固有」の意味の反対です。FPGAを再配線することにより、FPGAを複数のアプリケーションに使用できます。ASICは変更できないため、1つのタスクにのみ適用できます(そのタスクはマイクロコントローラーを実装している場合があります)。

ただし、FPGAを再配線する場合は、必要なすべてのハードウェアが存在する必要があります。

これが何を意味するのか分かりません。通常、FPGAを再プログラミングするためのソフトウェアインターフェイスがあります。これは、数百万[通貨単位]のハードウェアを必要とするASICです。

FPGAはプログラム可能であることを意図していますが、それはマイクロコントローラーの目的ではありませんか?

マイクロコントローラを使用すると、固定ハードウェア用に順次ソフトウェアをプログラムできます。通常のコンピューターと同じですが、非常に小さく、リソースが限られています。FPGAでは、HDLを使用して任意のハードウェアをプログラムできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.