There are many types of Programmable Logic Devices (PLDs), beginning with simple combinations of digital logic that are integrated on one chip. Complex Programmable Logic Devices (CPLDs) and Field Programmable Gate Arrays (FPGAs) are general-purpose semiconductor devices that can be programmed after shipping. They are very design-flexible and user-customizable hardware devices that can implement any logical function that an application-specific integrated circuit could perform, but the ability to update the functionality offers advantages for many applications.
PLDs contain programmable logic components called Logic Elements (LEs) and a hierarchy of reconfigurable interconnects that allow the LEs to be physically connected. You can configure LEs to perform complex combinational functions, or merely simple logic gates like AND and XOR. The logic blocks may also include memory elements, which may be simple flip-flops or more complete blocks of memory.
CPLDs are large-scale logic devices with up to thousands of programmable logic elements, non-volatile memory, and I/O block on one chip. Connections between the logic elements on these semiconductor chips are customized by the user with software tools. CPLD architecture has a predictable timing performance and speed, offers a range of logic capabilities, and is often employed in portable, battery-operated applications. FPGAs are denser and more complex than CPLDs and are used to implement larger or more complex designs.
A FPGA is not restricted to any predetermined hardware function. An FPGA allows you to program product features and functions, adapt to new standards, and reconfigure hardware for specific applications even after the product has been installed in the field—hence the name "field-programmable". Unlike previous generation FPGAs using Input and Output (I/O) with programmable logic and interconnects, today's FPGAs consist of various mixes of configurable embedded SRAM, high-speed transceivers, high-speed I/O, logic blocks, and routing.
PLDs have many design advantages, including rapid prototyping, shorter time to market, and the ability to re-program in the field. FPGAs have evolved from their primary use as a prototyping platform to wide use in mainstream volume production today.