FPGAs and CPLDs are two of the well-known types of digital logic chips. When it comes to the internal architecture, the two chips are obviously different.
FPGA is short for Field-Programmable Gate Array, is a type of a programmable logic chip. It is great chip as it can be programmed to do almost any kind of digital function. FPGA’s architecture allows the chip to have a very high logic capacity. It is used in designs that require a high gate count and their delays are quite unpredictable because of its architecture.
The FPGA is considered as ‘fine-grain’ because it contains a lot of tiny logic blocks that could reach up to 100,000. It is with flip-flops, combination logic, and memory. It is designed for more complex applications.
On the other hand, CPLD (Complex Programmable Logic Device) is designed by using EEPROM (electrically erasable programmable read-only memory) . It is more suitable in small gate count designs. Since it is a less complex architecture, the delays are much predictable and it is non-volatile.
CPLD is often used for simple logic applications. It contains only a few blocks of logic and reaches up to 100. Having said that, CPLDs are considered as ‘coarse-grain’ type of devices. CPLDs are cheap and it also offers a much faster input to output duration because of its simpler, ‘coarse grain’ architecture.
FPGAs are cheaper per gate but expensive when it comes to package.
Working with FPGAs requires special procedures as it is RAM-based. To program the device, you have to first describe the ‘logic function’ with the use of computer, either by drawing a schematic or simply describing the function on a text file. Compilation of the ‘logic function’ usually requires a software. It creates a binary file to be downloaded into the FPGA and then the chip will behave just what you have instructed in the ‘logic function’.
Deciding on what to use, whether FPGA or CPLD, would really depend on the design goals.
1. FPGA contains up to 100,000 of tiny logic blocks while CPLD contains only a few blocks of logic that reaches up to a few thousands.
2. In terms of architecture, FPGAs are considered as ‘fine-grain’ devices while CPLDs are ‘coarse-grain’.
3. FPGAs are great for more complex applications while CPLDs are better for simpler ones.
4. FPGAs are made up of tiny logic blocks while CPLDs are made of larger blocks.
5. FPGA is a RAM-based digital logic chip while CPLD is EEPROM-based.
6. Normally, FPGAs are more expensive while CPLDs are much cheaper.
7. Delays are much more predictable in CPLDs than in FPGAs.