CPLD

CPLD (Complex Programmable Logic Device)とは、プログラマブルロジックデバイスの一種で、PALとFPGAの中間の集積度を持ち、これら両方のアーキテクチャの特徴を持っている。CPLD で作られるブロックはマクロセルであり、これには加法標準形での表現とより特殊な論理的操作が実装されている。

PALと共通する特徴は以下のようである。
 不揮発性であるコンフィギュレーションメモリである。多くのFPGAと違い、コンフィギュレーションROMは必要ない。CPLDはシステムが立ち上がるとすぐに機能する。
 多くの古いCPLDデバイスでは、ほとんどの論理ブロックは外部ピンに接続され信号を入力あるいは出力しており、内部情報の記憶や深くレイヤ化された論理に使用されることは少なくなっていた。
 これは、一般には、より大きなCPLDやより新しいCPLD製品ファミリーには当てはまらない。

FPGAと共通する特徴は以下のようである。
 多数のゲートが利用可能である。CPLDは典型的には数千から数万の論理ゲートに相当するものを持ち、中程度に複雑なデータ処理デバイスを実装することができる。PALは典型的には数百の論理ゲートに相当するものを持ち、FPGAは典型的には数万から数百万の範囲の論理ゲートを持つ。
 提供されている論理は、論理和または論理積よりフレキシブルで、マクロセル間での複雑なフィードバックパスや多くのよく使われる機能 (例えば、整数演算など)を実装するための特別な論理が含まれている。

CPLDとFPGAのアプリケーション上重要な違いのひとつに、CPLDはチップ上の不揮発性のメモリでコンフィギュレーションされている、ということがある。この特徴のために、CPLDは電源投入時のブートローダのためのデバイスとして使われている。典型的な例として、不揮発性メモリからFPGAへコンフィギュレーションデータをロードするのにCPLDを使う、というものがある。しかし、最新FPGA製品にはコンフィギュレーションメモリを組み込んだモデルも存在する。

CPLDは、それ以前に普及していたより小さな規模のPLA(これは最初にシグネティックスによって出荷された)やPALといったデバイスから進歩してきたものであり、PLAやPALは、プログラム機能を提供せずいくつかの汎用ロジックICをワイヤで接続することによってプログラムする方法から進歩してきた。

FPGAとCPLDのデバイスアーキテクチャ上の主な違いは、FPGAが内部的にはルックアップテーブル(LUT)をベースにしているのに対し、CPLDはチャネルレス型ゲートアレイ(SOG)による論理機能によっていることである。

関連項目 
 ASIC
 :en:Erasable programmable logic device (EPLD) 英語
 :en:Simple programmable logic device (SPLD) 英語
 :en:Macrocell array 英語
 :en:Programmable array logic (PAL) 英語
 プログラマブルロジックデバイス (PLD)
 :en:Field-programmable gate array (FPGA) 英語
 VHDL
 Verilog

著名なCPLDメーカー 
 アルテラ
 アトメル
 サイプレス・セミコンダクタ
 ラティスセミコンダクター
 ザイリンクス

集積回路
デジタル回路

fr:Circuit logique programmable#CPLD