A CPLD is a family of programmable logic devices, such as FPGAs and PLAs. They are less complex than FPGAs, yet more complex than PLAs
The architecture of a CPLD is based on macrocells. A macrocell is a piece of programmable logic, used to generate sum of products terms. These macrocells are grouped together to form function blocks. These blocks, both the macrocells and the function blocks, are joined together using programmable interconnects. The data for these interconnects is stored in nonvolatile memory, preserving the program even when the power is turned off. Output type may also be reconfigured in certain types of CPLD devices, such as the Xilinx CoolRunnerII
There are several uses for a CPLD in modern devices. One of the most prevalent uses for CPLDs now is to implement reconfigurable glue logic. CPLDs also may be useed as configuration devices for higher-power FPGAs, due to their use of nonvolatile memory. CPLDs also may be sued to implement logic on a mobile device, where the low power consumption and small size of a CPLD is a great benefit to the designer.