Similarities between FPGAs and CPLDs
In order to better explain the difference between FPGAs and CPLDs, we first have to clarify what they have in common. Both have Both have so called “Logic Array Blocks”. These are areas in which there are several logic elements. These LABs are connected to the rest of the chip (other LABs or pins of the chip) by a fixed number of connections. The circuits in the LABs contain many small gates and can be “programmed” to behave as desired. For this purpose, the many small gates are “programmed” into a circuit. And this circuit is then connected to the rest of the chip. So you can create more complex circuits by connecting multiple LABs.
Differences between FPGAs and CPLDs
CPLDs have their own “program memory”. After applying a voltage, they “program” themselves again directly. In almost all cases, however, they only have the “program memory” and just a few LABs compared to FPGAs.
FPGAs are significantly more complex with significantly more LABs and in almost all cases have no internal program memory. They lose their “programming” as soon as the voltage is removed. Therefore they need an external “program memory”. This “programs” them when the corresponding circuit is started up. But FPGa have more complex elements. These includes separate areas with RAM and hardware multipliers for more complex mathematical calculations.