FPGAはいつ使用でき、マイクロコントローラー/ DSPは使用できませんか?


28

高度なマイクロコントローラーのコースと、高度なFPGAのコースを選択する必要があります。

私は両方の科目で入門講座を受講しましたが、今私が困っているのは、マイクロコントローラーのファームウェア開発がすでにかなり上手であり、FPGAで作成できる製品/プロジェクトとマイクロコントローラー/ DSPでは作成できない製品/プロジェクトが見当たらないことです。

マイクロコントローラやDSPでは不十分なアプリケーション/製品/プロジェクトを思い付くことができますか?その理由は?

カメラ?高速度カメラ?高速画像処理?


4
主な理由は、1。100%確定的な反応、2。並列処理の大きな可能性です。しかし、多くのデザインが取り入れソート・コア、それはハードウェアの場合よりも、プロセッサのための狂気のロジックをプログラムする方がはるかに簡単だから、FPGAでCPUを。
Dzarda

各デバイスで可能なことの違いはあまり明確ではありません。それぞれに利点があり、どちらの側にも問題の解決策があります。それぞれの入門コースを受講しているので、これを理解していただけると思いますので、あなたが何を求めているのかを正確に知りたいと思います。
フィルフロスト14年

私は、ほとんどの場合マイクロコントローラーでは十分ではないアプリケーション、またはFPGAが明白な選択となるアプリケーションを探しています。
ジョル

4
入門コースで理解しやすいのはどれですか?次に、(おそらく)自分で簡単な方を勉強できるので、もう一方の上級者を選択します。
woliveirajr 14年

回答:


21

FPGAとマイクロコントローラーもご覧ください。

高速な画像またはビデオ処理が良い例です。または、レーダーやレーザーベースのシステムなど、簡単な光学画像ではない「画像」を処理します。

考慮すべき重要なことは、スループット待機時間の要件です。マイクロコントローラーは、マイクロ秒ごとに1回(非常に大まかに)割り込みを処理できます。一度に1つの割り込みしか処理できません。精巧な方法で処理する必要がある場合、特定の時間にサービスできる数が制限されます。

FPGAを使用すると、通常、入力イベントにすぐに(次のクロックサイクルで)応答できます。多数の処理ユニットを並行して使用できます。フィルターに20サイクルかかることがわかっている場合、それは他の処理から完全に独立しています。

特に複雑なデータ依存関係がある場合、高並列整数集中計算はFPGAで最適に機能します。ただし、多くのオンボードメモリはありません。DRAMをサイドに追加できますが、遅延が発生します。

周辺機器用に、または高速デジタルバスを使用したい場合もあります。HDMIをマイクロコントローラーの内外にビットバンすることはできません。1枚のPCIカードを作成することはできません。


16

さて、私はFPGAでHDビデオのリアルタイム処理を行います。私がしていることのいくつかは、GPUチップでできますが、マイクロコントローラーやDSPではできません。FPGAはより柔軟です。

多くのシステムは、FPGAとMCU / DSPを組み合わせて、両方の利点を最大限に活用しています。私が近々取り組んでいるプロジェクトの1つは、ビデオストリームでのオブジェクト認識に関するものです。予備ステップ(ノイズ除去、正規化、エッジ検出など)はFPGAで行うのが最適ですが、どの低レベルの機能が認識されるオブジェクトの一部であるかを決定する高レベルのロジックは、CPU(いずれかFPGAの内部または外部)。

最終的に、あなたは両方の分野で精通したいと思うでしょうので、それは本当にあなたが最初にどちらをするかという問題です。


14

つまり、FPGAは大量のデータを少し処理する必要がある場合に適しています。CPUは、少量のデータを大量に処理する必要がある場合に適しています。

HDMIビデオストリームは大量のデータです。一般的なビデオの場合、CPU、GPU、またはASICで実行できますが、少し作業を行う必要がある場合(たとえば、オーバーレイを追加する場合)、FPGAを選択できます。

オーディオストリームは大量のデータではありませんが、音声認識を実行する必要がある場合は、FPGAよりもCPUを優先します。

CPUでソフトウェア無線を行うことはできますが、CPUよりも簡単にFPGAでスペクトルの大部分を処理できます。

FPGAからキーボードコントローラーを作成することもできますが、マイクロコントローラーはFPGAよりも安価で、消費電力が少なく、高度なキーボードソフトウェア(マクロ、ゲーム機能、再マッピング)を簡単に開発できます。

もちろん、それらのいずれかでトレードオフを使用して何でもできますが、両方に熟練している場合は、トレードオフをより有能に比較検討することができ、部品の高コストや、選択を要する開発時間を回避できます特定の問題に対する間違った解決策。


12

通常、ジョブを実行できる場合は、マイクロコントローラーを使用します。マイクロコントローラーは、シーケンシャル命令を実行することでロジックを実行します。

FPGAは、ハードウェアゲートが論理的に配線されているため、ロジックを実行します。それは、それがはるかに速く物事を行うことができ、同時にそのような物事の多くができることを意味します。一般に、FPGAでマイクロと同じロジックを作成およびデバッグするのはより複雑で困難であるため、余分な速度と低レイテンシが必要な場合はFPGAを使用します。


8

まだ言及していないアプリケーションの1つは、マイクロエレクトロニクスエンジニアリングまたはMCU / CPU / GPU / ASICチップ自体の設計です。これらのチップは、多くの場合、HDLで設計してプロトタイプを作成し、FPGAに実装します。これにより、最終的にHDLを使用してプロセッサまたはASICで実際のシリコンを製造するために必要なレイアウトを作成する前に、テストと修正が簡単、安価、迅速になります。

コメント者は、これをソフトコアチップの形で言及しました(タイプミスがあり、ソートコアチップと呼ばれていました)。ARM / 8051 / etcを取ることができます。ソフトコアおよび必要なソフトコア周辺機器はすべて、基本的にFPGAに実装された独自のカスタムマイクロコントローラーを設計します。次に、リソースがあれば、これを独自のマイクロコントローラーに組み込むことができます。

この種のアプリケーションが興味のあるものである場合は、OpenCoresを見て、可能なことを確認してください。


6

FPGAを広範囲に使用するレーダー機器(主に合成開口)を構築しています。マイクロコントローラで厳しいタイミング要件を簡単に満たすことはできないと思います。多くのLIDAR機器もFPGAを使用していると思います。

基本的に、タイミング要件がナノ秒単位の場合は、FPGAまたはASICが必要です。


5

マイクロコントローラーは、一度に1命令ずつデータを順番に処理するだけなので、非常に費用のかかる操作がある場合は、何らかの方法で計算を並列化することができます。オーディオ/ビデオの処理は、この良い例です。そのニーズを満たすために、特定のタスクを並行して実行できるデジタルシグナルプロセッサが開発されましたが、任意のアルゴリズムを実装できるほど一般化されていないため、これらのプロセッサはすべてのタスクではなく多くのタスクで機能します。FPGAは、一般化されたハードウェアです。基本的に、独自のハードウェアの設計を定義し、それをFPGAにダウンロードできるため、十分なリソースがあれば、考えられる任意のアルゴリズムを実装できます。

具体例:Ken Perlinは、シンプレックスノイズアルゴリズムのハードウェア実装を提案しています。従来のCPUまたはマイクロコントローラーで比較的高速に実行できますが、カスタムハードウェアで超高速にできます。DSPがこれには機能しないと思うので、最も簡単なのはFPGAです。難しい方法は、もちろん、実際の物理的なチップを製造することです。これは非常に高価です。http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf


5

ここにない答えの1つは、データ収集です。ADCを使用して200Mhzで信号(たとえば、RF信号)をサンプリングして処理したい場合、マイクロコントローラーはデータを十分な速度で処理できません。一般的なDAQ FPGAボードは、DDCを受信、フィルタリング、実行し、RFデータをはるかに低い周波数でCPUに渡します。FPGAは、RFスペクトルに対してFFTおよびチャネル化操作も実行できます。

別のアプリケーションは、パケットルーティングです。たとえば、それぞれ10Gb / sで動作する1つ(または複数)のXAUIイーサネットインターフェイスを管理するデバイスです。これらのFPGAは、さまざまな宛先のパケットキューをフィルタリングおよびスケジュールします。マイクロコントローラー/従来のCPUは、これらのインターフェースの帯域幅を処理できません。


4

マイクロプロセッサーとマイクロコントローラーが比較的少量の回路でこれほど多くのことができる基本的な理由は、マイクロが1秒間に1,000回の複雑な計算を実行するだけで20マイクロ秒かかる場合(マイクロが計算2 %の時間)、その計算に使用されるハードウェアのほとんどは、残りの98%で他の目的に使用できます。したがって、マイクロコントローラーは、適度な量のハードウェアを使用して、機能が同時に必要でない限り、非常に多くの個別の機能を実行できます。

FPGAの回路の量は、多くの場合、マイクロコントローラーの量に匹敵します(FPGAは、マイクロコントローラーと同様にサイズが数桁異なりますが、範囲が重複しています)。ただし、多くの非同時タスクでの使用を容易にするように回路要素が接続されるマイクロコントローラーとは異なり、FPGAはその回路の一部をさまざまなタスクに「フルタイム」で捧げるように設計されます。マイクロコントローラに100個の入力のそれぞれで発生するパルス数をカウントさせたい場合、すべての入力がパルスできる場合、コントローラーが個別に連続してそれらを処理できるほど十分に遅いパルスのカウントに制限されます独立して、高速なコントローラでさえ、入力あたり毎秒数千パルス以上のカウントに問題があります。対照的に、


1

FPGAは、ハードウェアロジック回路または機能ブロックを実装します。理論的には、必要なものはすべて実装できます。そして、これらのブロックは、従来のMCUが行ごとにプログラミングを実行する可能性が低いため、同時に実行されています。したがって、FPGAのパフォーマンスはMCUよりもはるかに優れていますが、構文、スタイル、概念の点でプログラミング言語とは異なるHDLまたはVHDL言語を知っている必要があります。


先ほど述べたように、あらゆるものを実装できるため、機能ブロックを備えたMCUを実装して高性能で開発を促進できることは驚くことではありません。そのため、FPGAで組み込みシステムプログラムを実行することもできます。


たとえば、プログラム可能なオーディオイコライザーを実装したい場合、FFTなどの最も重い計算部分は、ソフトウェア計算を実行する代わりに機能ブロックで実装できます。しかし、LCD、I / Oインターフェイスなどの単純なタスクの一部は、MCUで実行できます。また、FPGAを使用すると、MCU組み込みシステムとハードウェア機能ブロックを同時に使用できます。

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