FPGAはそのようなプロジェクトに実行可能ですか?


12

私は現在、画面表示プロジェクトであるSuper OSDに取り組んでいます。http://code.google.com/p/super-osdにすべての詳細があります。

現在、私はdsPIC MCUを使用して仕事をしています。これは非常に強力なDSP(40 MIPS @ 80 MHz、3レジスタシングルサイクル操作およびMACユニット)であり、重要なことには、DIPパッケージで提供されます(ブレッドボードを使用してプロトタイプを作成しているため)。 OSDを実行することにより、パフォーマンスの最後のすべてのビットが本当に得られます-チップの出力ステージでピクセルあたり約200nsまたは10サイクルあるため、この部分でコードを非常に最適化する必要があります(このため、常に書き込まれますアセンブリ。)

このようなチップの並列アーキテクチャにより、OSDを実行する単純なロジックプログラムを使用できるため、FPGAの使用を検討していました。線の描画やアルゴリズムコードのようなものはMCUで処理されますが、実際の出力はFPGAで行われます。そして、速度を向上させるために、FPGAに統合したいピクセルの設定や水平線と垂直線の描画などの簡単なこともあります。

いくつか質問があります:

  1. 大幅に費用がかかりますか?私が見つけた最も安いFPGAはそれぞれ£5で、dsPICはそれぞれ£3です。それでもっと費用がかかりますが、いくらですか?
  2. dsPICはSO28パッケージに収まります。SO28やTQFP44よりも大きくなりたくありません。私が見たほとんどのFPGAは、BGAまたはTQFP> 100パッケージで提供されていますが、せん断サイズと自分ではんだ付けするのが難しいため、現時点ではオプションではありません。
  3. FPGAはどのくらいの電流を使用しますか?dsPICソリューションは現在約55mA +/- 10mAを消費しますが、現時点では問題ありません。FPGAは多かれ少なかれ消費しますか?それは可変ですか、それともdsPICのようにほとんど静的ですか?
  4. OSDグラフィックを保存するには、少なくとも12KBのグラフィックメモリが必要です。FPGAはチップ上でこの種のメモリを利用できますか、それとも外部チップでのみ利用可能ですか?

回答:


7

原則として、これはFPGAベースの設計に適しています。要件について:

ad 1. FPGAは、選択するデバイスによって異なりますが、おそらくより高価になります。一見すると、ザイリンクスの最小のSpartan 3(XC3S50AN)で十分です(Farnellから10ポンド以内)。これはコストの上限であると想定できると思います(内部に56kBのRAMがあるため、必要以上です)。ザイリンクス製品または競合他社のアルテラとラティスからより安価なデバイスを見つけることができます。

ad 2.パッケージは難しい問題であり、フットプリントの小さいFPGAも見ませんでした。ただし、より小さなパッケージ(PLCCまたはQFN)に含まれている可能性のあるCPLDデバイス(CPLDは小さなFPGA)を使用できます。プラス側では、マイナス側の方が安くなり(単一の$でさえ)、おそらくRAMが内蔵されていません。CPLDでは、おそらく外部SRAMチップが必要になるでしょう。

ad 3. FPGAおよびCPLDの消費電流は、プログラムされた設計に大きく依存します。ただし、FPGAおよび特にCPLD設計が現在のソリューションよりも消費する可能性は十分にあります。

ad 4. FPGAにはそのようなメモリがありますが、CPLDにはありません。これは、外部のスラムチップ(または2つ)で解決できます。例えば:

| SRAM 1 | <-> | CPLD | <-> | uC |
| SRAM 2 | <->

uCがSRAM 1に書き込んでいるときのこのような配置では、CPLDはSRAM 2からのデータを表示します。CPLDは両方のタスクを同時に処理できる必要があります。

もちろん、これも他の方法で解決できます:
1)より高速なuController(たとえばARM
)を使用します2)内部でプログラム可能なファブリックとuCを備えたデバイスを使用します(たとえばAtmelのFPSLICですが、そのようなデバイスは使用したことがなく、それらについて少し)

標準免責事項->設計は未解決の問題であり、多くの制約と考えられる解決策があるため、上記で書いた内容は当てはまらない場合があります。ただし、これらのオプションを確認する価値があると思います。


4

アルテラのMAX IIパーツなどのFPGAではなくCPLDを使用できます。FPGAとは異なり、QFP44パッケージで提供されます。実際には小さなFPGAですが、アルテラはその側面を軽視しています。CPLDは、オンチップコンフィギュレーションメモリを備えているという点で、ほとんどのFPGAに比べて利点があります。FPGAは一般に外部フラッシュチップを必要とします。もちろん他のCPLDもありますが、私はMAX IIが好きです。

クロック速度と実際に使用されているロジックの量に依存するため、現在の消費量を予測することは不可能です。

FPGAでは通常、使用できるオンチップメモリ​​の量に制限がありますが、CPLDを備えた外部メモリが必要です。

別のオプションはXMOSチップですが、最小のもの(XS1-L1)はQFP64パッケージに含まれています。オンチップRAMがたくさんあります-64k。


2

1)はい、FPGAはより高価になります。チップ自体が高価になるだけでなく、プログラミングを保存するためにフラッシュメモリも必要になります。FPGA +フラッシュは、おそらくdsPICの3倍のコストです。小さなFPGAで約10ドル、小さなフラッシュで約3ドルです。

2)それらは存在する可能性がありますが、私は表面実装ではないFPGAを本当に知りません。それらのほとんどはおそらくQFPまたはBGAです。

3)FPGAはおそらくdsPICの約3倍の電流を消費しますが、使用する機能に応じて増減します。FPGAには、消費電力を増やすことができる多くの機能があります。ただし、少なくとも150 mAが必要です。

4)FPGAは通常、ブロックRAMを内蔵しています。最小のFPGAを除くすべてに、同じくらいのメモリが必要です。

CPLDについて言及する人もいます。デザインを慎重にパーティション分割すると、おそらく小さいながらも高価な操作をCPLDに移行できます。ミニコプロセッサーのようなものです。


2

学習曲線が最も低い最も安価なソリューションは、より強力なプロセッサ、おそらくARMに移行することです。

VHDL / VerilogでFPGA / CPLDをプログラミングすることは、多くの人にとってCから学ぶ非常に急な学習曲線です。彼らはまた、過度に安価な部品ではありません。

まともな能力を持つARMを使用しているのはLPC1769でしょうか?(cortex-M3)また、デザインのPIC18を置き換えることもできます。

スルーホールの問題に関しては、露出したピンQFPタイプパッケージでSoCを入手できる限り、これらのアダプターのいくつかを使用して、プロトタイピングに必要なピン配置を取得してください。


彼はPIC18ではなくdsPICを使用しています。
レオンヘラー

2
彼は両方を使用しています。彼がリンクしたドキュメントの回路図を見てください。PIC18はボタン/インターフェースを実行し、I2Cを介してdsPICと通信しています。dsPICは単にビデオ処理を行います。
マーク

1

私の傾向は、プロセッサとディスプレイ間のタイミングをバッファリングするために何かを使用することです。プロセッサの介入なしでビデオのフレーム全体を表示できるハードウェアがあるといいかもしれませんが、おそらくやりすぎです。ハードウェアとソフトウェアの複雑さの間の最良の妥協点は、おそらく2つまたは3つの独立した1024ビットシフトレジスタ(ピクセルあたり2ビット、黒、白、グレー、または透明を可能にする)と、それらの切り替えの。PICにシフトレジスタをロードさせ、PICが次のレジスタをロードできるようにフラグを設定しながら、ハードウェアにシフトレジスタをシフトアウトさせます。シフトレジスタが2つある場合、PICは、シフトレジスタが利用可能であると通知される時点から、すべてのデータをシフトする必要がある時点までに64usを持ちます。3つのシフトレジスタを使用すると、

1024ビットFIFOは2つの1024ビットシフトレジスタと同等の性能を発揮しますが、CPLDではFIFOにかかるコストは1ビットあたり1マクロセルと、他のほとんどのタイプのロジックでは2ビットのシフトレジスタのみです。 FIFOの1ビットよりも安価です。

別のアプローチは、CPLDをSRAMに接続し、それを使用して簡単なビデオサブシステムを作成することです。美的には、オンザフライのビデオ生成が好きです。誰かが素敵な安価な1024ビットシフトレジスタチップを作ったなら、私は好むアプローチですが、外部SRAMを使用することは、十分なリソースを持つFPGAを使用するよりも安いかもしれません複数の1024ビットシフトレジスタを作成します。出力解像度については、12Mピクセル/秒または3Mバイト/秒でデータをクロックアウトする必要があります。メモリサイクルをインターリーブすることにより、それほど困難を伴うことなく、最大10mbpsの速度でデータを入力できるように調整することが可能であるべきです。最大のトリックは、予想される正確なタイミングで同期パルスが届かない場合にデータ破損を防ぐことです。

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