FPGAにマイクロコントローラーを実装する理由


16

現在、FPGAの「調査中」、何ができるか、どのように行うかなどを調査しています。

複数の場所(たとえば、ここ)で、FPGAを備えたシンプルなマイクロコントローラーを実装するプロジェクトを見てきました。

だから私の質問:
私は知りたいのですが、そのような実装を行う目的は何ですか?マイクロボードを搭載する代わりに、FPGAで実装されたマイクロコントローラーを使用する理由 利点は何ですか?そして、おそらくまた欠点は何ですか?


これらの多くは固定IPコアを使用しますが、独自のIPコアを使用することは素晴らしい学習体験になります。
クリスストラットン

1
@ChrisStratton-缶詰IPコアに関する詳細を教えてください、またはリンクを投稿できますか?はい、素晴らしい学習体験になると確信しています。しかし、それが私がこの質問をしている理由の一つです。単なる学習体験以上のものではないかと思います。
ジェームズC

1
それを行うほとんどの人は、Microblaze、Picobloze、Nios IIなどのようなものを使用しています。これらは、基本的に「缶」(ライブラリ)のプロセッサ設計であり、ライセンスを付与してプロジェクトに入れることができます。対照的に、おそらくあなたの典型的なCS101講義で提示されたブロック図から、HDLソースで自分で開発することになります。講義図面を実用的なハードウェアに変える際に取り組むべき多くの興味深い実用性があります。
クリスストラットン

1
オープンソースCPUコアの多くの例については、「オープンコア」を参照してください。
-RBerteig

3
例があります。古い製品のためにマイクロコントローラーを廃止しました。適切な周辺機器の組み合わせを備えた適切な代替マイクロコントローラを見つけることができませんでした。組み込みプロセッサを備えたFPGAを使用することで、FPGAに周辺機器の理想的な組み合わせを実装できました。
kkrambo

回答:


24

利点:

  • マイクロコントローラとオンチップのカスタムインターフェイスまたはI / Oロジック間の非常に高速なインターフェイス。
  • カスタマイズ可能なプロセッサおよびデバッグインターフェイス
  • また、多くの場合、VHDLなどで制御コードを記述するよりも簡単な制御ロジック

欠点:

  • FPGAにカスタムロジックを配置するだけの場合と比較して、マイクロコントローラーとカスタムロジックの両方に適合するには、おそらくより高価なFPGAが必要です。
  • 特にメモリを使用する場合やコアが複雑な場合は、別のチップ上にある既製のマイクロコントローラよりも実装が難しい可能性があります。

3
追加の利点:シンプルな設計、1つ少ないチップ。
DoxyLover

4
追加のマイナス面:より多くのIPのライセンス
ミハイル

マイナス面としての消費電力はどうですか?
クレイグマックイーン

@CraigMcQueen理論的には、スタンドアロンのハードウェアとしてまだ生産されていないFPGAでマイクロコントローラを生成することが可能です。その場合、比較する電力消費はありません。いずれにせよ、それはデバイス固有であり、一般的な利点/欠点です。
マスト

すべての非常に良いコメント。また、一般的にFPGAの消費電力は大きいと思います。これは、通常、マクロセル内でのロジックの使用率が100%を大きく下回るためです。これは、FPGAが洗練された電力最小化技術を使用できるという事実によって少し相殺されます。製造プロセス(テクノロジ)は、FPGAと同じ時代のプロセッサ間で非常に似ている場合があります。プロセッサには、専用のメモリブロックとFPGAがあります。これらがニーズに合っているかどうかは、ニーズに完全に一致するFPGAを見つけることができる幸運次第です。
PkP

26

プロジェクトで単調な作業にFPGAを使用し、空き容量がある場合、FPGAに実装するだけでチップを追加する必要があるのはなぜですか?

多くの手続き型制御環境では、VHDLまたはVerilogで行うよりも、Cなどの言語で必要なセットアップを実装する方がはるかに簡単です。マイクロコントローラーをFPGAに追加することで、ロジックとインターフェイスシステム用のVHDL / Verilogなどのパワーと、コア制御および管理システム用の手続き型言語のシンプルさの両方の長所を活用できます。


10
この答えの最初の文が主な理由です。これは主に、とにかくボード上にいくつかの予備容量を持つFPGAが既にある場合に行われます。(少なくとも)チップとボードの複雑さが1つ少なくなります。FPGAを搭載したマイクロコントローラーを実装するためだけにFPGAをボードに配置することはありませんが、FPGAが既にある場合は、部品コストとボードの複雑さを削減するのに最適な方法です。少なくともそれが私たちがそれをする理由です。
レイラブ

13

MajenkoとPkPの回答の拡張:

CPUをFPGAデザインに組み込むこの傾向により、次のような異種システムがいくつか発生しています。

  • ザイリンクスのZynq-7000ファミリ
  • アルテラのArria / Cyclon / Stratix SoC FPGA
  • MicroSemiのSmartFusion FPGA

市場にはIntel Atom + Altera FPGAチップもあります:http : //www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

FPGA用のほとんどの無料のマイクロコントローラーは、ツールチェーンのサポートが不十分です。組み込みARM CPUには、トレース/デバッグサポート、コンパイラ(gccツールチェーン)、および完全なLinuxサポートが付属しています。FPL 2014で発表された調査は次のとおりです。http//dx.doi.org/10.1109/FPL.2014.6927482

編集1:
サイプレスのPSoC(Programmable System on Chip)デバイスのクラスもあります。これらのデバイスには、マイクロコントローラー(M8C、8051、ARM Cortex M0またはCortex M3)および従来のSoC統合I / Oコントローラーまたはデバイス(I²C、SPI、タイマー、CAN、DAC、ADC、OpAmpなど)が含まれます。およびプログラム可能部。このデバイスは、従来のFPGAほど細かくプログラムすることはできませんが、追加のI / Oコントローラーまたは組み込みハードウェアアクセラレーターを実装するために使用できます。PSoCでは、設計でアナログコンポーネントを使用できます。
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

PSoCの概要: PSoC


10

マイクロコントローラが必要なだけで、FPGAがない場合、マイクロコントローラファームウェアでFPGAを使用することはまれです。ただし、すべてのプロジェクトがその方向に成長するわけではありません。多くのタスクにはFPGAの必要性が明確にありますが、最終的にはVHDLソリューションには適さないタスクに出くわします。問題は、単に汎用CPUで処理するのが最適です。または、逆の場合もあります。一部のタスクは汎用CPUに適していないため、並列処理が必要です。

そのとき、あなたは選択肢があります。デバイスにチップを追加するか、使用していないFPGAに多数の予備ゲートがあることに気付くことができます。少しのIPのライセンスを取得すれば、すぐに機能する汎用CPUを使用できます!

別の興味深い詳細は、いくつかのマイクロコントローラーのファームウェアをカスタマイズできることです。Power PCを組み込んだプロジェクトを知っていますが、浮動小数点サポートに必要なすべてのゲートを取り除き、分岐予測のかなりの部分を削除しました。これにより、VHDLベースのファームウェアと隣り合わせに収まるほど小さくなりました。


9

FPGAでマイクロプロセッサまたはマイクロコントローラをインスタンス化するには、いくつかの正当な理由があります。3つあります。

  1. プロセッサの操作について学びたいだけです。FPGAを使用すると、プロセッサがコードを実行する際にプロセッサ内部で何が起こっているのかを調べることができます。これは学習用です。

  2. FPGAのハードウェアレベルの速度(マイクロプロセッサで実行するソフトウェアよりも高速)を必要とする大きなシステムを実装していますが、設計には複雑なステートマシンが必要です。これは、Xilinx PicoBlazeなどの単純なプロセッサで実行するソフトウェアを使用してより簡単に実装できますハードウェアFSMよりも。PicoBlazeは最新のFPGAプロセステクノロジーで240MHzの速度で実行でき、PicoBlazeプロセッサは2クロックサイクルごとに命令を実行するため、ソフトウェアで簡単にプログラムできる高速で一貫性のあるステートマシンを取得できます。

  3. (2)を展開すると、割り込みを処理できる状態マシンが必要です。プロセッサは、割り込みを処理する前後に状態を安全に保存および復元する方法を既に知っているため、これに非常に適しています。

1つの注意点があります。標準の命令セットと大きな開発エコシステムを備えた高速プロセッサが必要な場合は、Xilinx Zynq SoCの2つのARM Cortex-A9のような高速ハードコアプロセッサが必要です。Zynq SoCのFPGAファブリックでは、プログラム可能なロジックでより多くのプロセッサコアをインスタンス化できますが、ARM Cortex-A9はLinuxなどの標準オペレーティングシステムやAndroidなどの標準IDEを実行できます。

ARM Cortex-A9とPicoBlazeの間には、多くのソースから利用可能なプログラマブルロジックで実装できる多くのソフトプロセッサがあります。一部の人々は自分のプロセッサーを転がすのが好きで、それは素晴らしい教育活動です。ただし、マイクロプロセッサにはソフトウェア開発ツールが必要であり、これらのツールの作成/デバッグには、プロセッサ自体を作成するよりもはるかに多くの労力が必要です。プロセッサコアとツールを作成/デバッグするために必要な時間と労力に対して、カスタムマイクロプロセッサの可能な利点を常にトレードオフする必要があります。

完全な開示:ザイリンクスで働いていますが、FPGAが常にソリューションであるとは言いませんでした。50セントのマイクロコントローラーで仕事ができるなら、それを使ったほうがいいでしょう。FPGAおよびZynq SoCは、マイクロコントローラーの能力を超える重い持ち上げを必要とするプロジェクト向けです。


スティーブン、大歓迎!
PkP 2015年

1
良い答えですが、割り込みを処理できる状態マシンが必要なのは誰ですか?外部刺激の処理にはISRを実行するためにプロセッサを排他的に使用する必要があるため、fetch-decode-executeプロセッサには割り込みが必要です。FPGAでは、外部刺激は別のロジックブロックで処理されますが、ステートマシンも実行を続けます。状態を保存および復元する必要はありません。基本的に、割り込みは、そもそもHDLにはない問題に対する不完全な解決策です。
ベンフォイト

もちろん、ハードウェアで実装されたステートマシンは正しいです、ベン。「割り込み」ピンは、別のステートマシン入力としていつでも配線できます。ただし、多くの複雑なステートマシンは、Cを実行するプロセッサを使用して実装した場合に単純に、または少なくとも一部の開発者にとってはより分かりやすくなります。割り込みが必要なときです。
スティーブンレイブソン

2

FPGAを使用する場合があります。これは、復活させたい、古くて利用できない物理プロセッサで実行されるソフトウェアがあるためです。ピン互換性はありませんが(DIPスタイルのマウントは見られますが)、これによりサイクル精度が向上します。汎用マイクロプロセッサでの純粋なソフトウェアエミュレーションは、そうなる可能性は低いです。たとえば、apple2fpga

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