Q: What's the difference between CPLD and an FPGA? What's the difference between a CPLD and an FPGA?

A: CPLDs are generally only used for replacing a relatively small amount of discrete logic.  Namely, things like a bunch of address decoders and bus interface circuitry.  CPLDs contain very little memory; genrally the number of flip-flops is of the same order of magnitude as I/O pins (i.e. a 32 macrocell CPLD has ~30 pins and ~30 flip-flops).  The combinatorial logic in a CPLD is implemented on a programmable logic array, which generally is not useful at very high speeds.  CPLDs are also usually flash-based or have internal flash memory, simplifying board design requirements and improving protection against reverse-engineering.  CPLDs are also not built with 'bleeding edge' logic processes.  
FPGAs are designed for very high performance computation and high bandwidth interfacing.  Internally, they use a very different architecture than CPLDs.  FPGAs have a lot more internal state (registers and block RAM) than they have I/O pins.  Combinatorial logic is implemented on high speed lookup tables that can run to several hundred MHz.  The LUTs and other components are interconnected with a high performance routing network.  FPGAs also contain specialized hard cores that provide efficient implementations of various components.  Block RAM and multipliers/DSP slices are very common.  FPGAs can also contain ethernet MACs, hard processor cores, PCI express interfaces, and other specialized blocks.  Multi-gigabit transcievers are also a common feature of high-end FPGAs that permit transfer of data at up to 50 Gbit/sec per pin pair.  FPGAs generally do not contain any nonvolatile memory, so external flash memory is required to load the configuration.  Encryption can be implemented to improve design security with a battery-backed key stored in the FPGA.  

A: Differences:


*

*Capacity - CPLD usually has less capacity of logic. The largest CPLD may be at a similar level of the smallest FPGA in the mainstream market.

*Storage of the image - CPLD can boot by itself while most of the FPGA need to fetch the configuration bitstream from non-volatile storage because they are SRAM based. This impacts the security of the system.

*Feature - CPLD only provides gates, or said, logic cells, that can do all kinds of logic algorithms. In addition, FPGA also embedded a lot of hard blocks such as BlockRAM, DSP, TEMAC, PCIe, MGT, microprocessor, etc to make a single chip of FPGA capable of building a integrated full featured system.
