Ein Complex Programmable Logic Device (CPLD) ist ein vorkonfektionierter, frei konfigurierbarer Logikbaustein. Diese Bausteine, die eine Weiterentwicklung der Programmable Array Logic ( PAL) und der Programmable Logic Devices ( PLD) darstellen, zeichnen sich durch hohe Verarbeitungsgeschwindigkeiten, einfaches Design, vorhersagbares Timing und einfache Programmierung aus. Sie bestehen aus PAL-ähnlichen Funktionseinheiten, die über eine Switching- Matrix deren Verbindungen programmiert werden.
Zu den Funktionseinheiten der Complex Programmable Logic Devices gehören AND-Gatter und OR-Gatter, Caches, Register und Ein-/Ausgabe- Systeme, die untereinander verknüpft werden können. Dabei sind verschiedene Logikeinheiten zu größeren Makro-Funktionsblöcken in Form einer Matrix zusammen gefasst. Die komplette CPLD-Device kann bis zu 500 Logiken umfassen.
Im Gegensatz zu Simple Programmable Logic Devices ( SPLD) werden Complex Programmable Logic Devices (CPLD) aus vielen SPLDs geformt. Die einzelnen SPLD-Logiken werden mit einer Switching-Matrix miteinander verknüpft. CPLDs sind typischerweise Speicher-basierte Programmable Logic Devices (PLD), deren logisches Design in Erasable PROMs ( EPROM), Electrically Erasable PROMs ( EEPROM) oder Flash-Speichern gespeichert wird. Der wesentliche Unterschied zwischen den PLDs und den CPLDs ist deren höhere Komplexität.