CPLD (Complex Programmable Logic Device)とは、プログラマブルロジックデバイスの一種で、PALとFPGAの中間の集積度を持ち、これら両方のアーキテクチャの特徴を持っている。CPLD で作られるブロックはマクロセルであり、これには加法標準形での表現とより特殊な論理的操作が実装されている。
PALと共通する特徴は以下のようである。
FPGAと共通する特徴は以下のようである。
CPLDとFPGAのアプリケーション上重要な違いのひとつに、CPLDはチップ上の不揮発性のメモリでコンフィギュレーションされている、ということがある。この特徴のために、CPLDは電源投入時のブートローダのためのデバイスとして使われている。典型的な例として、不揮発性メモリからFPGAへコンフィギュレーションデータをロードするのにCPLDを使う、というものがある。しかし、最新FPGA製品にはコンフィギュレーションメモリを組み込んだモデルも存在する。
CPLDは、それ以前に普及していたより小さな規模のPLA(これは最初にシグネティックスによって出荷された)やPALといったデバイスから進歩してきたものであり、PLAやPALは、プログラム機能を提供せずいくつかの汎用ロジックICをワイヤで接続することによってプログラムする方法から進歩してきた。
FPGAとCPLDのデバイスアーキテクチャ上の主な違いは、FPGAが内部的にはルックアップテーブル(LUT)をベースにしているのに対し、CPLDはチャネルレス型ゲートアレイ(SOG)による論理機能によっていることである。