FPGAの選択方法は?


17

10 kHzで8本のアナログラインでデジタル信号処理を行う必要があります。これは非常に困難な作業であり、FPGAが正しいアプローチかもしれないと考えていました。現在、ザイリンクスの開発キットを検討していますが、FPGAの経験がないため、適切なチップの選択方法を知るのは非常に困難です。開発キットを使用し、I / Oピンを使用して8チャンネルのA / Dチップと8チャンネルのD / Aチップに接続することで拡張することを想像しました。

Spartan、Virtex、Alteraなどの使用の違いは何ですか?必要なゲート数を見積もる方法すらわかりません。そのための経験則はありますか?クロック速度が十分であることを確認するには(加算数と乗算数の関数として)。FPGAで浮動小数点処理を行うのは難しいですか?固定小数点演算に固執する必要がありますか?始めるための最良の方法は何ですか?

Linuxを使用してプログラム可能なソリューションが必要です。ザイリンクスはこれを提供していますが、制限が何であるかはわかりません。


5
どのようなアルゴリズムを実装する必要があるかを知ることは大いに役立ちます。FPGAをまったく必要としない可能性があります。これにより、開発時間を大幅に節約できます
;

geschemaに同意します。FPGAは必要ないかもしれません。たぶん、DSPがより良いソリューションです。いずれにせよ、uCの経験しかなければ、簡単に使い始めることができます。FPGAは非常に異なっています!
-stevenvh

回答:


13

FPGAは使用しません。

FPGAの経験がなく、FPGAでデジタル信号処理を行うことに興味があると言います...数値操作+信号処理は、プログラミングツールが一般的なコンピューター/ DSP /マイクロプロセッサーで正しく動作するのに十分困難ですプログラミング。最初のFPGAプロジェクトにデジタル信号処理プロジェクトを使用することは、フラストレーションのレシピになる可能性が高いように思えます。

FPGAを学習する場合は、ステートマシンや通信パケット処理など、開発ツールにより適したものを試してください。

説明したようなDSPプロジェクトの場合は、代わりに DSPまたはCypress PSOCまたはAnalog Devices Microconverter(= ADC + DAC内蔵のマイクロコントローラー)をお勧めします。

(完全な開示、アドバイスのコンテキストを提供します。FPGAは自分では使用しません。まれにプログラマブルロジック= PLDを使用しました。オフィスメイトはFPGAを頻繁に使用します。彼はビット操作に適していることを知っています。彼はFPGAの経験が豊富な経験豊富なエンジニアです。最近の会話で、ビット幅の異なる整数についてかなり簡単な計算をしていました。適切に減算するために短いビット幅の数で符号拡張を行うと、彼は「ああ、私は符号拡張を行う必要はありません...」のように顔にこの外観を取得しましたFPGAではそれほど難しくありませんが、加算と減算以外に、ツールとライブラリを実際に知る必要があります。そして、浮動小数点処理??!?!! ??!?!!?)


2
MyHDLは、これらの問題のいくつかを修正しようとします。
ショーンJ.ゴフ

FPGAはマイクロほど使いにくいとは思いません。単に異なる注意点があります。
コナーウルフ

10

それらはすべてかなり良いです。そのような単純なことをするためにFPGAをあまり必要としないので、初心者のFPGA(Spartan-3ラインなど)で十分です。

ただし、FPGAのプログラミングはC ++、C、perlなどとは異なり、LOOOOTTTTTTです。Verilogから始めることをお勧めします。VHDLは非常にCOBOLに似ていますが、 verilogは、現代のプログラミング言語により似ています。

クロック速度について:心配しないでください。FPGAを使用する利点は、それらが超並列であるため、50MHzクロックは今日の標準ではとてつもなく遅いように見えるかもしれませんが、3GHzの「通常の」CPUは物事をキューに入れなければならないことに注意してください一度に1つずつ。これは、FPGAを使用する利点です:並列処理。そのため、何か特別なものについては、速度についてそれほど心配する必要はありません。

しかし、他のコメントのように、それはまったく異なるパラダイムです。学習曲線は急ですが、言語を理解すると、すべてが理にかなっています(構成要素を理解していることを確認してください)。

ハッピーFPGA'ing :)


2
VHDLは実際にはAdaに基づいています!レオン
レオン・ヘラー

2
また、VerilogまたはVHDLを選択する際には、将来の市場性への投資であることを考慮して、言語を検討してください。米国では、VerilogはVHDLよりもIC /チップ開発で人気があるため、Verilog(およびその拡張バージョンであるSystem Verilog)を知っている方が、長期的な投資になりやすいでしょう。また、EDAの大企業はすべて、Verilogとシステムverilogに投資しているようですが、VHDLはあまり注目されていません。(vhdlを使用したVCS混合シミュレーションとVCS verilogシミュレータのパフォーマンスの違いを確認します)。(炎を消す)はい、両方を学ぶことができますが、優先順位を付けないでください。
ロスロジャース

どちらの言語でも作成できます。ザイリンクスツールは、同じプロジェクトであってもVerilogとVHDLを使用できます。FWIW、私はアメリカにいますが、Verilogを使用したことはありません。
ajs410

1
「VHDLは非常にCOBOLに似ています」。100万マイルではありません!
-stevenvh

9

しばらく前に、ザイリンクスとアルテラの2つのFPGAベンダーから、エントリーレベルのFPGAボードの比較チャートをまとめました。彼らはFPGAの2つの主要なプレーヤーで、PIC対AVRまたはSony対任天堂のようなものです。彼らは最高のバックバングを提供します。特定の機能を提供するベンダーは他にもありますが、通常は追加料金を支払うか、機能/処理能力を失うことになります。

これは特定の質問に直接答えるものではないことは承知していますが、FPGAボードの使用を開始しようとしている人にとっては役立つはずです。


7

非常に多くの質問; 順番に答えてみましょう:

  1. 信号処理のリソース要件:どのハードウェアを使用/構築する必要があるかを判断するには、問題の信号に対して実行する処理量を把握する必要があります。8 kHz @ 10 kHzはそれほど高いデータレートではないため、要件が非常に特別でない限り、ほとんどのFPGAとDSPはデータを処理できるはずです。
  2. 適切なデバイスを選択するにはどうすればよいですか?信号処理の要件に基づいて、アプリケーションに必要なデバイスを把握できるはずです。重要なポイントは、メモリ要件、ハード乗算器、特別なIOの考慮事項などです。ほとんどのFPGAベンダーには、そのような要因に基づいてポートフォリオを検索できるツール(Webベース)があります。
  3. DSPの使用を開始するにはどうすればよいですか?DSPは、通常、信号処理に関連するSIMD [単一命令、複数データ]命令を持つ通常のコンピューターです。始めるには、「組み込み」ハードウェアとCコンパイラの制限を理解するだけで、通常のPCでコードをテストできます。
  4. FPGAの使用を開始するにはどうすればよいですか?FPGAはハードウェア記述言語でプログラムされています。これらは、CやJavaなどのシーケンシャル言語とは大きく異なります。FPGA用に開発するには、実際のハードウェアの並行性を理解する必要があります。開始するために必要なツールは、Simili(小規模なデザインでは無料)やModelsimなどのHDLシミュレーターです。これにより、PCでコードをシミュレートできます。その後、HDLコードをFPGAのコンフィギュレーションに使用されるビットファイルにコンパイルするベンダー固有の合成ツールが必要です。アルテラ、アクテル、またはザイリンクスからスターターキットを入手する場合、必要なツールはすべてキットの一部です。
  5. Linuxサポート:ほとんどのベンダーのFPGAツールはLinuxで実行されますが、DSPの分野では、DSPがGCC(AnalogのBlackfinおよびTexas Instrumentsのいくつかのモデルがサポートしている)でない限り、通常Windowsのみのコンパイルを使用する必要があります。

「8チャネル@ 10 kHzはそれほど高いデータレートではありません」の+1-まだ誰もそれを言っていないとは信じられません。
ケビンフェルメール

彼は... 8チャンネルのFFTをやっていない場合
ajs410

DSPは、多くの場合、それぞれが異なる命令を実行できるシングルスレッド並列処理ユニットです(すべてのユニットが同じ命令を共有するSIMDとは異なります)。
ベンフォークト


4

ほぼすべてのFPGAベンダーが行います。IntelとAMDのようなものです... XilinxとAlteraには違いがありますが、機能的には非常に似ています。価格範囲内の開発キットを購入します-私は個人的にザイリンクスのSpartan 3が好きで、それで実行します。

ゲート数に関しては、開発キットは通常非常に大きく、できれば必要以上に大きくなります。独自のPCBに移行する準備が整うと、合成ツールは設計に必要なゲート数を推定します。これを使用してより小さなFPGAを選択できますが、パッケージの制約(QFP対BGA)も重要な役割を果たすことがわかります。

適切な設計手法があれば、クロック速度は問題になりません。実際、通常は12 MHzなどの比較的低速のクリスタルを使用でき、FPGAははるかに高速のクロック(またはより高速のクロック!)を合成できます。これらの計算を高速化できる専用DSPスライス。しかし、FPGAは超並列であるため、膨大な作業を行うために多すぎるMHzを必要としません。

可能であれば、私は間違いなく固定小数点を使い続けます。浮動小数点を実行することは可能であり、ザイリンクスには浮動小数点コアを提供するコアジェネレーターもありますが、固定小数点ははるかに高速で、必要なゲートがはるかに少なくなります。もう1つの利点は、奇妙な固定小数点を実行できることです。必要な数のビットを使用でき、2のべき乗のビットカウントである必要はありません。また、中間ステージに大きな固定小数点を使用できます。

FPGAを使い始めるための最良の方法は?クラスやセミナーなどを見つけます。技術に慣れていない場合、開発ツールは非常に混乱します。多くの問題が発生する可能性があるためです。MCU向けのツールははるかに寛容であり、基盤となるアーキテクチャとの親密さをあまり必要としません。

ああ、FPGAのデータシートを最初から最後まで読んでください。



0

ゲート数を見積もる場合は、ハードウェアをまだ購入する必要はありません。主要なFPGAメーカーは無料のソフトウェアを所有しており、多くのユーザーがdspの実行に関するメモを用意しています。ハードウェアを使用せずに設計とシミュレーションを行うことができ、ソフトウェアは使用されているリソースを通知します。ただし、信号処理の場合、通常はdspが最初のステップであり、FPGAが処理能力を使い果たした場合のみです。

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