MicroBlazeなどのソフトプロセッサの一般的な用途は何ですか?


8

FPGAとDSPの組み合わせは、通常、ハイエンドパワーエレクトロニクス/超音波/ MRIなどに使用されます。Spartan 3/6などのローエンドFPGAでも、ソフトプロセッサでDSPを完全に置き換えることはできますか?

追加:1つのFPGAに複数のソフトコアプロセッサを搭載する理由は何ですか?


基本的に、アプリケーションのDSP集約度に依存します。
Fizz

嫌いなwinmodemが思い浮かびますが、DSP処理を行う汎用CPUがありました。
Fizz

どうやら、Virtex 5アルテラStratixでソフトウェア無線を行うことができます
Fizz

そして、明らかにいくつかのしていることを試してみましたスパルタン6 LX45に。どんなアプリケーションを考えていますか?
Fizz

そのスレッドで見た主な問題は、Virtex用のフィルターなどを生成するために役立つ(PCベースの)Vivadoソフトウェアですが、Spartanをターゲットにすることはできません。それが単なるマーケティング[セグメンテーション]の決定だったのか、Spartanハードウェアが低すぎるのかはわかりません。
Fizz

回答:


11

読み飛ばすか、最後までスキップしてください。私は少し進んだことに気づきました!


通常 DSPの代わりにソフトプロセッサを使用することはありません。専用ハードウェアは、汎用CPUではなく特定のタスクを適切に実行するように設計するため、通常は大量のデータをより速く処理できます。

ソフトプロセッサが要素となるのは、制御と調整です。

大量のデータを処理する必要があるシステムを設計する場合、たとえば高フレームレートの画像取得では、ソフトコアプロセッサを使用してすべてのデータを処理することはできず、単にオーバーヘッドが多すぎます。 CPUで。あなたがすることは、必要な特定の取得タスクを実行するために専用のファームウェアを設計することです(例えば、データのフィルタリング、メモリへの保存など)。

ただし、いつ何かを実行するかを指示する何らかの方法が必要です。キャプチャする場合、デバイスにデータをオフロードするよう指示されている場合などです。これらのことは、専用ハードウェアで実行するのは簡単ではありません。ユーザー入力を伴うイベントのシーケンス、基本的に同じことを何度も繰り返さないタスク。この場合は、一部のタスクの手続き型コードを作成する方がはるかに簡単なので、ソフトコアプロセッサを使用します。

別の(実際の)例として、PCIeを介してデータをストリーミングする超音波取得システムに取り組んでいます。実行するタスクはユーザーから通知され、システムのさまざまな部分を構成する必要があります。システムの調整には大量のデータは必要ありませんが、代わりに柔軟性が必要であるため、この場合はCでプログラムされたソフトコアCPUに適しています。物理ハードウェアで同じことを行うには、大量のリソースが必要になりますそのほとんどは使用頻度が低いため、CPUと比較してメリットはありません。

一部のタスクはユーザー入力によって異なる場合がありますが、専用ハードウェアの方が優れていることに注意してください。実際には、コードの一部(トリガーにデータを格納するようにDMAコントローラーをプログラミング)は、元々CPUで約15行のコードで行われていましたが、トリガーが発生した瞬間にそのビットを実行する必要があるため、他のもので忙しいのは理想的ではありません。タスクは代わりにVerilogモジュールにプログラムされますが、その過程で、約15の状態とサポートロジックのヒープ全体の負荷を持つ500行の大規模なステートマシンになります。しかし、それははるかに多くのリソースを消費しますが、それはタイムクリティカルであるため、必要です。

同様に、クロックサイクルで正確なトリガーを生成する必要があるため、そのタスクを実行するためのモジュールは、CPUで実行するのではなく、システムの一部です。このコアと上記のコアの両方は、CPUを使用していくつかのタスクを実行する方法の例ですが、他の重要なコアでは、マイクロコントローラーにタイマーなどを持っているのと同じ方法で、CPU を補完するハードウェアを開発できます。


要約すると:

FPGAは優れた柔軟なツールですが、ほとんどのデザインにはソフトコアCPU、構成可能なモジュール(タイマーなど)、専用のシングルタスクハードウェアの組み合わせが必要です。

CPUは、ユーザーの操作、イベントの順序の制御、コントローラーの構成に最適です。彼らはコーディネーター、脳のようなものです。

タイマーモジュール、文字表示、ボタンのデバウンスなど、さまざまな入力に合わせて構成できるかなり反復的なタスクを実行する必要があるデザインもあります。これらはCPUで簡単に実行できますが、それらのいくつかを正確に実行したい場合は、よりトリッキーになると、同じCPUリソースを共有します。つまり、CPUに密接に接続されている専用のハードウェアにそれらを移動することです。CPUに他のタスクを実行する機会を与えます。これらは、CPUがその仕事を行い、感覚と同様に周囲と相互作用するのに役立ちます。

専用DSP、データ転送(DMA)-基本的に同じことを高速で何度も繰り返すすべてのタスク-速度および場合によっては電力の面でも、専用ロジックの恩恵を受けることができます。これらはデバイスの筋肉のようなものであり、すべての重労働を行います。

あなたは少しとりとめのない言い訳をしなければならないでしょうが、私はEEのこの分野が好きです。上記が理解可能で、FPGAのすばらしい世界への洞察が得られることを願っています。


@tcrosley私はあなたの要点を理解しますが、32ビットのプロセッサに2つの128ビットの数値を追加したい場合は、数サイクルかかります。重点が上だったかもしれません。しかし、実際にはそれはあなたが全体として何をしているかに完全に依存しています。あなたがしたいすべてが加算である場合、CPU全体を持つことはFPGAで無意味です-加算器をインスタンス化するだけです。だから私はそのビットを削除すると思います。
トムカーペンター、

1

トムが述べたように、MicroBlazeはDSPを置き換えることではなく、ボード上にある従来のマイクロコントローラーを置き換えることです。

これは、MicroBlazeソフトプロセッサコアは、MAC(乗算および累算)命令、循環バッファ、ビット反転アドレッシング、サチュレーションロジックなどの特別なDSP機能がないため、DSPの特に良い代替品ではないためです。

したがって、ザイリンクスのVirtex-4についてこのホワイトペーパーで説明さているような別のDSPソフトコアの方が適しています。

FPGAを含むほとんどのデジタルデザインは、何らかの汎用マイクロコントローラーも必要とするため、多くのDSPデザインは、両方のソフトコアを持つことから利益を得ます。FPGAで利用可能な十分なリソースがある限り(以下を参照)、MicroBlazeなどのソフトプロセッサはBOMの一部を削除するだけでなく(もちろん、それに関連するコストも)、FPGAのピンを解放します。 FPGAとマイクロコントローラを相互接続する必要はありません。2つのパーツ間のトレースに必要なスペースも解放されます。

MicroBlazeは、Virtex-5 で210 MHz実行できます。MMUを備えたバージョンはLinuxを実行できます。最小のMicroBlazeには約600のLUTが必要であり、FPU、MMU、キャッシュ、およびその他の機能が追加された場合、最大4000まで成長する可能性があります。上記のDSPソフトプロセッサは1700 LUTを使用しました。

Virtext-5 FPGAは30,000から200,000以上のLUTを持つことができるため、これらのソフトコアの両方を含めても、チップの一部しか表しません。両方を組み込むと、必要に応じて、従来のオペレーションとDSPオペレーションの両方を並行して実行できますが、2つの同期の複雑さが増します。

MicroBlazeのIPは、ザイリンクスFPGAで使用し、ISE Design Suite Embedded Edition(または同等のもの)のライセンスを取得している限り無料です。

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