デジタルプロジェクトの評価に使用できる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パッケージに複数の電源を使用し始めます。
設計要件を絞り込むための手順は次のとおりです。
FPGA / CPLDのすべての入力と出力を特定します。これは通常、設計段階の簡単な部分です。このようにして、どのパッケージを見ているのか、そしてどれだけ近づいてそのマージンまでカットできるのかを知ることができます。
内部ロジックのブロック図を描きます。ブロックがシンプルに見える場合(各ブロックにロジックゲートとレジスタがいっぱいある)、おそらくCPLDを使用できます。ただし、ブロックに「イーサネットトランシーバー」、「PCI-Express x16インターフェース」、「DDR2コントローラー」、または「h264エンコード/デコード」などのラベルが付いている場合、FPGAを確認してHDLを使用していることになります。
- インターフェイスに特別な電圧、LVDS、DDR、または高速SERDESなどの特別なI / O要件があるかどうかを確認します。追加のトランスレータチップを入手するよりも、それをサポートするチップを入手する方が簡単です。
CPLDアプリケーションの例:
- SPIインターフェースを備えたマルチチャネルPWM
- I / Oエクスパンダー
- CPUアドレス空間のデコード
- 時計(計時)
- マルチプレクサを表示する
- シンプルなDSP
- 一部の単純なプログラムはCPLDデザインに変換できます
Hobbyist FPGAアプリケーションの例:
- 小型システムオンチップ(SoC)設計
- ビデオ
- 複雑なプロトコルブリッジ
- 信号処理
- 暗号化/復号化
- レガシーシステムエミュレーション
- ロジックアナライザー/パターンジェネレーター
ほとんどの趣味の仕事では、BGAパッケージをはんだ付けしない限り、比較的小さなFPGAに制限されます。大規模なCPLDまたは安価なFPGAのどちらかを選択し、サイズ/速度の要件により、どれが必要かが決まります。