現在、FPGAの「調査中」、何ができるか、どのように行うかなどを調査しています。
複数の場所(たとえば、ここ)で、FPGAを備えたシンプルなマイクロコントローラーを実装するプロジェクトを見てきました。
だから私の質問:
私は知りたいのですが、そのような実装を行う目的は何ですか?マイクロボードを搭載する代わりに、FPGAで実装されたマイクロコントローラーを使用する理由 利点は何ですか?そして、おそらくまた欠点は何ですか?
現在、FPGAの「調査中」、何ができるか、どのように行うかなどを調査しています。
複数の場所(たとえば、ここ)で、FPGAを備えたシンプルなマイクロコントローラーを実装するプロジェクトを見てきました。
だから私の質問:
私は知りたいのですが、そのような実装を行う目的は何ですか?マイクロボードを搭載する代わりに、FPGAで実装されたマイクロコントローラーを使用する理由 利点は何ですか?そして、おそらくまた欠点は何ですか?
回答:
利点:
欠点:
プロジェクトで単調な作業にFPGAを使用し、空き容量がある場合、FPGAに実装するだけでチップを追加する必要があるのはなぜですか?
多くの手続き型制御環境では、VHDLまたはVerilogで行うよりも、Cなどの言語で必要なセットアップを実装する方がはるかに簡単です。マイクロコントローラーをFPGAに追加することで、ロジックとインターフェイスシステム用のVHDL / Verilogなどのパワーと、コア制御および管理システム用の手続き型言語のシンプルさの両方の長所を活用できます。
MajenkoとPkPの回答の拡張:
CPUを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の概要:
マイクロコントローラが必要なだけで、FPGAがない場合、マイクロコントローラファームウェアでFPGAを使用することはまれです。ただし、すべてのプロジェクトがその方向に成長するわけではありません。多くのタスクにはFPGAの必要性が明確にありますが、最終的にはVHDLソリューションには適さないタスクに出くわします。問題は、単に汎用CPUで処理するのが最適です。または、逆の場合もあります。一部のタスクは汎用CPUに適していないため、並列処理が必要です。
そのとき、あなたは選択肢があります。デバイスにチップを追加するか、使用していないFPGAに多数の予備ゲートがあることに気付くことができます。少しのIPのライセンスを取得すれば、すぐに機能する汎用CPUを使用できます!
別の興味深い詳細は、いくつかのマイクロコントローラーのファームウェアをカスタマイズできることです。Power PCを組み込んだプロジェクトを知っていますが、浮動小数点サポートに必要なすべてのゲートを取り除き、分岐予測のかなりの部分を削除しました。これにより、VHDLベースのファームウェアと隣り合わせに収まるほど小さくなりました。
FPGAでマイクロプロセッサまたはマイクロコントローラをインスタンス化するには、いくつかの正当な理由があります。3つあります。
プロセッサの操作について学びたいだけです。FPGAを使用すると、プロセッサがコードを実行する際にプロセッサ内部で何が起こっているのかを調べることができます。これは学習用です。
FPGAのハードウェアレベルの速度(マイクロプロセッサで実行するソフトウェアよりも高速)を必要とする大きなシステムを実装していますが、設計には複雑なステートマシンが必要です。これは、Xilinx PicoBlazeなどの単純なプロセッサで実行するソフトウェアを使用してより簡単に実装できますハードウェアFSMよりも。PicoBlazeは最新のFPGAプロセステクノロジーで240MHzの速度で実行でき、PicoBlazeプロセッサは2クロックサイクルごとに命令を実行するため、ソフトウェアで簡単にプログラムできる高速で一貫性のあるステートマシンを取得できます。
(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は、マイクロコントローラーの能力を超える重い持ち上げを必要とするプロジェクト向けです。
FPGAを使用する場合があります。これは、復活させたい、古くて利用できない物理プロセッサで実行されるソフトウェアがあるためです。ピン互換性はありませんが(DIPスタイルのマウントは見られますが)、これによりサイクル精度が向上します。汎用マイクロプロセッサでの純粋なソフトウェアエミュレーションは、そうなる可能性は低いです。たとえば、apple2fpga