複雑さの異なるプログラマブルロジックICは何に使用されますか?


10

プログラマブルロジックは、数個のゲートの書き込みやMUXの使用から、マイクロコントローラーとIOペリフェラルが組み込まれた最新のFPGAまで、さまざまなスペクトルでウィジェットに実装できます。もちろん、ARMのPrimeCell GPIOなど、より具体的な例もあります。どのようなアプリケーションで、プログラマブルロジックデバイスのさまざまなレベルの複雑さが使用されていますか?グループ化はそれらの極端な定義の近くで混ざり合っているように見えますが、これは許容できるリストだと思います:

  1. PAL / PLA / GAL:プログラマブルロジックアレイ; Digikeyで'Embedded-PLDs'としてリストされているように見え、50MHzまでの非同期10/8 I / O(ATF16V8C)、192マクロセル(CY7C341B)をカバーしており、ほとんどが再プログラム可能です。
  2. CPLD:複雑なプログラマブルロジックデバイス。Digikeyは、それらを7.5ns 10 I / O(ATF750C〜233MHz、428 I / O「FPGA密度のCPLD」(CY39100V484B)で利用できるものとしてリストしています。
  3. FPGA:フィールドプログラマブルゲートアレイ; 58 I / O(XC2064〜1023I / O BGAビースト(EP1S80F1508C7N)で利用可能。
  4. ハードMCUを備えたFPGA:これは、MCUがエミュレートされておらず、FPGA ICに物理的に配置されている場合です。

ウィキペディアの引用:

FPGAとCPLDの違いは、FPGAは内部的にルックアップテーブル(LUT)に基づいているのに対し、CPLDはゲートオブゲート(製品の合計など)を使用してロジック機能を形成することです。CPLDはより単純な設計向けであり、FPGAはより複雑な設計向けです。一般に、CPLDは幅広い組み合わせロジックアプリケーションに適しており、FPGAは大型のステートマシン(マイクロプロセッサ)に適しています。

これは、233 MHz、400 I / O CPLD同等のFPGAの使用の違いを説明していません。または192マクロセルPLD同等のCPLDの間。デザインオプションを絞り込むための信頼できるガイドラインを作成することはできません。現在、私は特定のアプリケーションを考えていませんが、「何をするために何を使うのですか?」

特定の要件に関して優れたアドバイスをオフサイトで受けましたが、この質問は、PLDの1つのファミリよりも他のファミリが同等またはより適切であると思われる場合に、いくつかの例が優先することから利益を得ることができると思います。


XC2064は古い部分です。CY7C341BとCY39100V484Bがまだ製造されているかどうかはわかりません。比較/決定を行うときは、それを考慮する必要があります。
Brian Carlton

2
参考までに、これらのパーツのいずれかを使用すると、メーカーが文献に提供するさまざまな製品と、実際に手に入れると期待できるゲート数/パッケージ/速度と温度の組み合わせのはるかに小さい品揃えの間には大きな違いがあります半年未満のリードタイムで少量。したがって、それらを使用して設計する場合は、最初に実際の可用性を確認してください。私は購入が配布からそれらを取得することを望んでいることを知っていても、よりプロトタイプ指向のサプライヤーが実際にそれらを必要に応じて私に手元に持っていることを知っているデバイスを選択することを好みます。
Chris Stratton、2010

良いアドバイス、@ ChrisStratton。これは通常、ほとんどの部品で最初に確認することですが、PLDで特に問題があることを知っておくのは良いことです。
tyblu 2010

回答:


7

デジタルプロジェクトの評価に使用できる2つの基準があり、基準に最も一致する部分を決定するのに役立ちます。1つ目は、デザインのサイズと複雑さです。どの程度のロジックが関係しているかです。2つ目は、ピン数に関する入力と出力の要件です。最も遅い関数が何であるかを推定できる場合は、速度を考慮に入れることができます。ベンダーのツール(Altera Quartus II、ザイリンクスISEなど)は、適切な球場に入ったときに役立ちます。

  • PAL / PLA / GAL:これらは、通常LSIロジックチップ(7400、4000シリーズ)として実装する可能性のある中小規模の回路を置き換えることを目的としています。これらは、I / O再マッピングと多くの単純なロジック機能により、より良いボードレイアウトを提供できます。これらのチップには不揮発性メモリ(または1回限りのプログラム可能なヒューズ)が含まれており、電源投入時の構成時間は不要です。データストレージ要素を含めることはできません。

  • CPLD:これらはPLAのより大きな従兄弟です。デザインは、小さなステートマシンでも、非常にシンプルなマイクロプロセッサコアでもかまいません。私が見たほとんどのCPLDチップには、オンチップSRAMがありませんが、リンクした大きなサイプレスCPLDにはあります。CPLDは、フラッシュメモリを使用して再プログラムできる可能性が高く、電源投入時にコンフィギュレーション時間を必要としません。

  • FPGA:CPLDとは異なり、ロジックブロックはフラッシュメモリではなくSRAMに基づいているため、ロジック処理が高速になります。FPGAの主な欠点は、構成がSRAMに保存されるため、デバイスの電源が投入されるたびに、FPGAがプログラミングをこのSRAMにロードする必要があることです。デザインのサイズと不揮発性ストレージの速度によっては、電源投入から完全に機能するまでに顕著な遅延が発生する可能性があります。一部のFPGAは、データを保存するためのオンチップフラッシュを備えていますが、ほとんどの場合、個別のメモリチップを使用しています。多くの場合、FPGAにはハードワイヤード乗算器、PLL、およびその他のロジック機能があり、計算速度が向上します。オンチップRAMの大きなブロックも利用できます。また、LVDS、PCI、PCI-Expressなどの高性能I / O仕様を使用することもできます。

  • マイクロプロセッサハードコアを備えたFPGA:私はこれらに精通していませんが、設計がマイクロコントローラプログラミングを中心とし、FPGAがマイクロコントローラを強化すると想像します。識別したパーツは、マイクロコントローラーとFPGAから設計を開始し、2つを1つのチップ/パッケージに結合するように見えます。

どちらが適切かを判断する方法:

最善の方法は、コード(Verilog / VHDL)を完成させ、ベンダーのツールを使用して、可能な限り最小の部分にコードを適合させることです。アルテラのツールを使用すると、プログラミングターゲットをかなり簡単に変更できるので、デザインの使用率が約75%に達するまで、より小さなFPGAを選択し、次により小さなCPLDを選択し続けることができます。パフォーマンスが必要な場合は、ロジックの速度要件を下げる機能(高速乗算器)を備えたデバイスを選択してください。この場合も、ベンダーツールは、アップグレードが必要かどうか、またはダウングレードできるかどうかを識別するのに役立ちます。

使用する部分のもう1つの要素は、使いやすさです。PAL / PLA / GALロジックの使用は、ディスクリートロジックゲート(74HC *、4000など)を使用して関数を構築するよりもおそらく手間がかかります。CPLDは通常、単一の電源電圧のみを必要とし、追加の回路を必要としません。それらは実質的にスタンドアロンです。FPGAは、I / Oおよびロジックコア、複雑なI / O規格、個別のプログラムメモリ、多層(> 2)PCB、およびBGAパッケージに複数の電源を使用し始めます。

設計要件を絞り込むための手順は次のとおりです。

  1. FPGA / CPLDのすべての入力と出力を特定します。これは通常、設計段階の簡単な部分です。このようにして、どのパッケージを見ているのか、そしてどれだけ近づいてそのマージンまでカットできるのかを知ることができます。

  2. 内部ロジックのブロック図を描きます。ブロックがシンプルに見える場合(各ブロックにロジックゲートとレジスタがいっぱいある)、おそらくCPLDを使用できます。ただし、ブロックに「イーサネットトランシーバー」、「PCI-Express x16インターフェース」、「DDR2コントローラー」、または「h264エンコード/デコード」などのラベルが付いている場合、FPGAを確認してHDLを使用していることになります。

  3. インターフェイスに特別な電圧、LVDS、DDR、または高速SERDESなどの特別なI / O要件があるかどうかを確認します。追加のトランスレータチップを入手するよりも、それをサポートするチップを入手する方が簡単です。

CPLDアプリケーションの例:

  • SPIインターフェースを備えたマルチチャネルPWM
  • I / Oエクスパンダー
  • CPUアドレス空間のデコード
  • 時計(計時)
  • マルチプレクサを表示する
  • シンプルなDSP
  • 一部の単純なプログラムはCPLDデザインに変換できます

Hobbyist FPGAアプリケーションの例:

  • 小型システムオンチップ(SoC)設計
  • ビデオ
  • 複雑なプロトコルブリッジ
  • 信号処理
  • 暗号化/復号化
  • レガシーシステムエミュレーション
  • ロジックアナライザー/パターンジェネレーター

ほとんどの趣味の仕事では、BGAパッケージをはんだ付けしない限り、比較的小さなFPGAに制限されます。大規模なCPLDまたは安価なFPGAのどちらかを選択し、サイズ/速度の要件により、どれが必要かが決まります。


あなたの答えを少し拡張すると、設定時間なしですぐに起動できるため、PAL / PLA / GALをPLD / CPLDと同じバスケットにグループ化する傾向があり、ベンダーはPLD / PLA / GALデバイス。たとえば、いくつかのラティスデバイスを使用していますが、それらのCPLDファミリICは大幅に安価で、PAL / GAL / PLAのいとこよりも多くのゲートを提供しています。後者のコストは、前者と比較して彼らが提供するものには法外です。
smashtastic

ラインは間違いなく少しぼやけています。リストされている部品のタイブルを調べるまで、PAL / PLA / GALにストレージエレメントやCLPDにSRAMがあるとは思いませんでした。PAL / PLA / GALは、コアパーツというよりは、デザインのアヒルテープに似ているようです。
W5VO

3

優れた「経験法則」リストは次のようになります。

  • PAL / PLA / GAL: PCB上のディスクリートICロジックゲートの代わりに使用
  • CPLD:複雑な、DSP以外の、そして場合によってはタイムクリティカルなタスクが必要な場合に使用(メモリからFPGAにブートコードをロード、DACのLUT正弦波ジェネレーターなど)
  • FPGA:タイムクリティカル、乗算、またはDSP機能が必要な場合に使用されます(FIRフィルター、FFTなど)。
  • ハードMCUを備えたFPGA FPGA機能が必要で、FPGAのペリフェラルにアクセスする必要がある場合(温度センサー)、または簡素化のためにVHDLではなくCで時間に依存しないタスクを実装できるようにする場合(UART /シリアルポート機能、 PCBハウスキーピングなど)

安価なCPLDが少量であり、レガシーアプリケーションを除いて、PAL / PLA / GALはほとんど機能しません。
Chris Stratton、2010

私はそれを主張しません。低(バッテリー)電力/小さいサイズが制約となる可能性がある場合、CPDLよりも有利である可能性があるため、まだ使用できる可能性があることをイメージすることしかできませんが、私の場合、最小/電力効率の良いCPLDを使用します設計。
Joel B

2

簡単な答えは、2つの方法があるということです。

1.まず、高い抽象化レベル(たとえば、HDLまたは回路図)でシステムを設計します。次に、それをPAL / CPLD / FPGAに適合させて、要件を満たすもの(ゲート数/ロジック要素、パフォーマンスなど)を選択し、次に、定義する内容に応じて最も安価なものを選択します(開発コストと。生産コストなど)。

2.しかし、通常、HDLコーディングまたは回路図の開発を開始する前に、システムの複雑さ(8ビットMCUまたは32ビットMCUが必要であるか、またはマイクロコントローラーがない場合に必要なゲート数)をすでに見積もることができます。すべて)。これに基づいて、プログラム可能なデバイスも選択できます。これは精度は低くなりますが、プログラム可能なハードウェアおよびソフトウェア(存在する場合)と並行して、プログラム不可能なアナログおよびデジタルハードウェアを設計できます。


2

ハードコアを備えたFPGAは、独立したマイクロコントローラーよりも面積が小さく、ソフトコアマイクロプロセッサーよりも高速であるため使用されます。ただし、価格は通常、FPGAや独立したマイクロコントローラーよりも最悪です。一般的なソフトウェア、したがってマイクロコントローラーは、パラメーターの構成やエラー処理などの(比較的)遅くてまれなケースに適しています。ロジックは連続プロセスに適しています。たとえば、パケット処理では、メモリへの書き込みは論理的に行う必要があります。存続時間のタイムアウトの処理は、ソフトウェアで行う必要があります。

FPGAスペース内には、安価で低消費電力の部品と高価で高速な部品があります。一般に、マイクロコントローラーは高価なものだけです。これにより、FPGAソリューションでは、ディスクリートMCUと比較してコストトレードがさらに悪化します。

少なくとも10年以上、新しい設計でPALを使用する人はいません。CPLDはそのニッチを引き継ぎました。

最後の5か?年CPLDは内部ではFPGAに似ていますが、構成をオンチップで保持するためのメモリを備えています。FPGAは数百MHzになっているので、速度が10〜15年前よりもCPLDにロジックを配置する理由にはなりません。ただし、FPGAには、マルチプライヤ、シリアライザ、および多くのメモリなどの他の機能があり、それほど多くのロジックがなくてもデザインを強制的に1つにすることができます。


1
CPLDを維持する理由の1つは、現在の低コストCPLDが依然として単一電源電圧テクノロジで作成されている一方で、現在のほとんどのFPGAには複数の電源電圧が必要であることです。したがって、ボードにcpldを配置する方がコストを大幅に削減する必要がない場合-ただし、大規模なCPLDについて話している場合は、ローエンドのfpgaの方が安く、将来の拡張の余地が多くなります。他の理由で、コア電圧電源がすでに利用可能になっています。
Chris Stratton、2010

@BrianCarlton、およびコメント@ChrisStrattonに回答いただきありがとうございます。与えられた例と現在の意見は素晴らしい情報です。
tyblu 2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.