Complex programmable logic device
A complex programmable logic device is a programmable logic device with complexity between that of programmable array logic and Field-programmable [gate array|field-programmable gate arrays], and architectural features of both. The main building block of the CPLD is a macrocell, which contains logic implementing disjunctive normal form expressions and more specialized logic operations.
Features
Some of the CPLD features are in common with PALs:- Non-volatile configuration memory. Unlike many FPGAs, an external configuration ROM is not required, and the CPLD can function immediately on system start-up.
- For many legacy CPLD devices, routing constrains most logic blocks to have input and output signals connected to external pins, reducing opportunities for internal state storage and deeply layered logic. This is usually not a factor for larger CPLDs and newer CPLD product families.
- Large number of gates available. CPLDs typically have the equivalent of thousands to tens of thousands of logic gates, allowing implementation of moderately complicated data processing devices. PALs typically have a few hundred gate equivalents at most, while FPGAs typically range from tens of thousands to several million.
- Some provisions for logic more flexible than sum-of-product expressions, including complicated feedback paths between macro cells, and specialized logic for implementing various commonly used functions, such as integer arithmetic.
Distinctions
CPLDs were an evolutionary step from even smaller devices that preceded them: programmable logic arrays and PALs. These in turn were preceded by standard logic products, which offered no programmability and were used to build logic functions by physically wiring several standard logic chips together.The main distinction between FPGA and CPLD device architectures is that CPLDs are internally based on a collection of PLDs accompanied by a programmable interconnection structure, while FPGAs use logic blocks.