PLD(Programmable Logic Device)完全ガイド:CPLD・FPGAの違い、設計フロー、選定ポイント

概要:PLDとは何か

PLD(Programmable Logic Device)は、設計者が論理回路をプログラムして動作させられる半導体デバイスの総称です。ASICのように固定配線を製造するのではなく、出荷後に配線や論理関数を変更できる点が特徴で、プロトタイピング、カスタム制御ロジック、I/Oブリッジなど幅広い用途で利用されます。代表的なカテゴリには、小規模なPAL/GAL、ミドルレンジのCPLD、大規模かつ高機能なFPGAが含まれます。

歴史的背景

PLDの起源は1970年代のプログラム可能な論理デバイスにさかのぼります。PAL(Programmable Array Logic)やROMベースのロジックが初期の代表例です。1980年代以降、より大規模で再構成可能なアーキテクチャとしてCPLD(Complex PLD)やFPGA(Field-Programmable Gate Array)が登場し、特にXilinxが1985年に初の商用FPGAを市場投入して以降、FPGAは演算資源・I/O機能・組み込み機能を充実させて成長してきました。

PLDの主要な種類

  • PAL/GAL

    PALは初期の簡単なPLDで、数十から数百の論理ゲート相当の論理機能を提供します。GAL(Generic Array Logic)は再プログラム可能なPAL互換デバイスで、簡単な置換・修正に向きます。今日では小規模な置換ロジックや互換性確保のために限定的に使用されます。

  • CPLD

    CPLDは複数の論理ブロック(固定論理配列と相互接続マトリクス)で構成され、比較的決定論的で低遅延な動作が得られるため、状態機械や電源管理・リセット・ブートロジックの“グルー・ロジック”として多用されます。多くのCPLDは不揮発性メモリ(EEPROM/Flash)で構成されており、電源投入後に設定が保持されます。

  • FPGA

    FPGAは多数の小さな論理要素(LUT: Look-Up Table)、フリップフロップ、豊富な配線資源を持ち、DSPブロック、ブロックRAM、高速トランシーバ、PCIeやイーサネットMACなどのハードIPを統合することができます。高い並列処理性能と柔軟性が特徴で、映像処理、機械学習アクセラレータ、通信インフラなど高性能用途に使われます。多くのFPGAはSRAMベースで、電源投入時に外部または内蔵の不揮発メモリからビットストリームで設定されますが、フラッシュベースのFPGAやSoC型製品(例:FPGAとARMコア統合)も存在します。

CPLDとFPGAの比較(アーキテクチャと用途)

  • 規模と密度:FPGAは論理要素・メモリ・DSPなどのリソースが圧倒的に多く、高密度設計が可能。一方CPLDは比較的小規模で論理遅延が予測しやすい。

  • 設定保持:多くのCPLDは不揮発性であるため電源投入後も設定が保持される。一般的なFPGA(SRAMベース)は電源投入ごとに設定が必要だが、起動時間や柔軟性の点では優れる。

  • タイミング特性:CPLDは内部配線が固定的で低ジッタ/低遅延な傾向がある。FPGAは高性能クロックツリーや多段配線により高周波数設計が可能だが、タイミング収束が難しい場合がある。

  • 用途:CPLDはグルーロジック、I/Oブリッジ、初期化ロジック向け。FPGAはデータパスの高速演算、画像処理、ネットワーク処理、プロトタイピングやハードウェアアクセラレータ向け。

開発フローと設計手法

PLD設計では以下の主要ステップがあります。

  • 仕様定義:機能、クロック、I/O、電源、パワー消費、タイミング要件を明確化します。

  • 論理設計:HDL(VHDLやVerilog)または回路図エントリで機能を記述します。近年は高位合成(HLS)も用いられます。

  • シミュレーション:機能シミュレーションで振る舞いを検証します(モデルシミュレータ、テストベンチ)。

  • 合成(Synthesis):HDLを論理ゲートやLUT、フリップフロップなどのデバイス要素に変換します。合成ツールで最適化とチェックが行われます。

  • 配置配線(Place & Route):合成後の論理をデバイス上に配置し配線を行います。この過程でタイミングの問題(タイミング違反)が表面化します。

  • 時定数解析(Timing Analysis)と検証:静的タイミング解析(STA)でセットアップ/ホールド時間などを確認します。必要なら制約(SDC/SDPなど)を修正します。

  • 書き込みと実機検証:JTAGやISP(In-System Programming)でデバイスにビットストリームを書き込み、実機で動作確認を行います。

設計上の重要な注意点

  • クロック管理:クロックの分配、位相、遅延、ジッタはFPGA設計で極めて重要です。PLL/MMCMなどのクロックリソースを正しく使うこと。

  • 制約の記述:ピン配置制約、クロック制約、外部インタフェースのタイミング制約を正確に定義しないとタイミング違反が発生します。

  • 電源・配線設計:大規模FPGAでは電源の分割、デカップリング、熱設計(ヒートシンク)も必要です。

  • ツールチェーンの理解:Xilinx(AMD)ならVivado/ISE、Intel(旧Altera)ならQuartus、LatticeならRadiant/Diamond/iCEcube2など、各ベンダーのツールの挙動を理解することが重要です。

性能・消費電力・コストの観点

PLDはASICより初期費用(NRE)が小さく、設計変更が容易なため低〜中量生産で有利です。ただし単価は高めで、大量生産や極低消費電力を追求する場合はASICが有利です。FPGAは並列性や専用ブロック(DSP, BRAM)により高性能を発揮しますが、SRAMベースのFPGAはビットストリームロードやリフレッシュ、SEU対策によるオーバーヘッドが必要になる場合があります。

セキュリティと信頼性

FPGA設計ではビットストリームの盗用や改ざんを防ぐために暗号化機能や認証機能が提供されています(例:ビットストリーム暗号化、認証付ブート)。また宇宙用途や高耐久性が求められる環境では、SRAMベースFPGAは放射線による単一事象アップセット(SEU)に弱いため、スクラビングやトリプルモジュラ冗長(TMR)などの耐故障設計が必要です。CPLDは一般的に不揮発性で構成されるため、電源投入時の堅牢性は高い傾向があります。

主要ベンダーと製品群

  • AMD(旧Xilinx):Spartan/Artix/Kintex/Virtex、Zynq(ARMコア統合)など。Vivadoが主な開発環境。

  • Intel(旧Altera):Cyclone/Arria/Stratix、MAXシリーズ(CPLD相当)など。Quartusが開発ツール。

  • Lattice Semiconductor:iCE40(低消費)、ECP5(中〜高性能)、MachXO(CPLD向け)など。組込み向けや低消費電力市場に強み。

選定ポイント(実務的ガイド)

  • 機能要件:必要なロジック量、メモリ量、DSPブロック、トランシーバやインタフェース(PCIe, DDR, Ethernetなど)の有無を確認。

  • 電源とパッケージ:消費電力、ボード上の実装可能なパッケージ(BGAピン数、熱設計)を考慮。

  • コストと供給:部品単価と調達の安定性、リードタイムを評価。量産なら単価優先、試作は柔軟性優先。

  • ソフトウェアとエコシステム:利用可能なIP、ツールの使い勝手、既存資産(HDL、ボード設計)の互換性。

  • 寿命とサポート:製品ライフサイクルの長さ、ベンダーの技術サポートやドキュメントの充実度。

実例:よくある用途

  • グルーロジックやI/F変換:CPLDを用いたI/Oの電圧レベル変換、バス仲介。

  • プロトタイピング:FPGAでASIC設計の検証やソフトウェアのハード加速。

  • 信号処理:FPGAの並列演算・DSPブロックを使った画像処理・フィルタリング。

  • 通信インフラ:高性能トランシーバとハードMACによるパケット処理、ASIC置換。

今後の展望

近年はFPGAとプロセッサを統合したSoC(例:Zynq)が普及し、ハードウェアとソフトウェアの協調設計が進んでいます。また、AI/ML向けのハードウェアアクセラレータ用途でFPGAが注目されており、低消費電力FPGAの需要やビットストリームのセキュリティ強化、クラウドでのFPGA仮想化(AWS FPGAインスタンスなど)も進展しています。さらに高位合成(HLS)やオープンソースツールチェーンの成熟により、設計効率が向上しています。

まとめ

PLDは柔軟性と迅速な開発を実現する重要なデバイス群です。CPLDは簡潔で堅牢なグルーロジックに、FPGAは高性能・高並列処理に向く選択肢です。設計ではアーキテクチャの理解、ツールの使いこなし、タイミング・電源・セキュリティ対策が不可欠です。用途・コスト・供給・将来の拡張性を総合的に評価して適切なデバイスを選ぶことが成功の鍵となります。

参考文献