You can use two criteria to evaluate a digital project that helps you decide which part best matches your criteria. The first is the size/complexity of the project – how much logic is involved. The second is input and output requirements in terms of pin counts. Speed can be taken into account if you can estimate what your slowest function would be.
PAL/PLA
They are intended to replace small to medium sized circuits that you can normally implement as LSI logic chips. They can offer better board layouts due to I/O remapping and many simple logic functions. These chips contain non-volatile memory and do not require startup setup time. There is no data storage function.
FPGA
Applications where FPGA modules are most commonly used include digital signal processing, aerospace and defense systems, medical imaging systems, computer vision systems, voice recognition, bioinformatics, computer hardware emulation, ASIC prototypes, and more. FPGA stands out for its re-programmable ability. The main disadvantage of FPGA modules is that since the configuration is stored in SRAM, every time the device is turned on, the FPGA must load its programming into that SRAM. Some FPGA modules have an on-chip flash to store their data, but most use separate memory chips. FPGA often have cable-connected multipliers and other logic functions to improve computing speed. Large blocks of on-chip RAM are also available. You can also use high performance I/O specs. Find out more information here.
Example of FPGA Hobbyist applications –
- Small System-on-Chip (SoC) Projects,
- Video,
- Complex protocol bridges,
- Signal processing,
- Encryption / Decryption,
- Legacy system emulation,
- Logic analyzer / pattern generator,
CPLD
They are larger cousins of PLA. Projects can be small state machines or even a very simple microprocessor core. Most of the CPLD chips do not have SRAM on the chip. CPLD modules are more likely to be reprogrammed with flash memory and do not require setup time at startup. CPLD example applications –
- Multichannel interface,
- I/O Expander,
- CPU address space decoding,
- Time Keeping,
- Display multiplexers,
- Some simple programs can be converted to a CPLD design.
How to decide what is right for you
The best way is to finish your code and then use the vendor’s tools to try to tweak it as little as possible. Tool allows you to change programming targets quite easily, so you can choose smaller FPGA and then smaller CPLD until your project usage gets close to 75%. If you need performance, try to choose devices that have features that lower logic speed requirements. Again, vendor tools will help you identify if you need to upgrade or if you can downgrade. Ease of use is another major factor when we talk about which module to choose for your project.
Using PAL/PLA/GAL logic is probably more effort than building the function using discreet logic gates. CPLD typically requires only a single supply voltage and do not require additional circuitry. They are effectively independent. FPGA starts using multiple power supplies for I/O and logic core, complex I/O patterns, separate program memory, multi-layered PCBs and packages.