I am student and seeking advice on the different between FPGA vs CPLD
FPGAs are currently the maximum evolution of PLDs (Programmable Logic Device), defined as integrated circuits in which you can program Boolean logic equations, both combinatorial and sequential. There are currently a large variety of these chips, and some of them can contain up to 10,00,000 logic gates. Likewise, FPGA (Field Programmable Gate Array) is programmable logic circuits directly by the user, which requires tools of relatively low cost, such as the development software and the recording device. The recording or programming of one of these devices can be carried out in milliseconds.
A CPLD (from the English acronym Complex Programmable Logic Device) is an electronic device that extends the concept of a PLD to a higher level of integration since it allows to implement more efficient systems, because they use less space, improve the reliability of the design, and reduce costs.
Both CPLDs and FPGAs contain a large number of programmable logic elements. If we measure the density of programmable logic elements in equivalent logical gates (number of equivalent NAND gates that could be programmed in a device) we could say that in a CPLD we would find the order of tens of thousands of equivalent logical gates and in an FPGA of the order of hundreds of thousands to millions of them.
Apart from the differences in density between both types of devices, the fundamental difference between FPGAs and CPLDs is their architecture. The architecture of the CPLDs is more rigid and consists of one or more sums of programmable products whose results go to a reduced number of flip-flops Synchronous (also called flip-flops). The architecture of the FPGAs, on the other hand, is based on a large number of small blocks used to reproduce simple logical operations, which in turn have synchronous bistables. The enormous freedom available in the interconnection of these blocks gives FPGAs great flexibility.
Another important difference between FPGAs and CPLDs is that in most FPGAs you can find high-level functions (such as adders and multipliers) embedded in the interconnection matrix itself, as well as memory blocks.