What are SPLDs, CPLDs and FPGAs?
There are three types of microelectronic devices. Two of them are usually known. These two are memory and microprocessor. Everybody at least know what such devices are. There is one another group of devices, that is not so commonly known. I speak about logic devices. Logic devices, shortly speaking, are basic building block of all digital microelectronic devices. Logic devices are used to implement specific functions, such as device interfacing, data communications, digital signal processing and so on. Actually, logic devices can handle every function that is needed in digital device.
About 50 years ago, logic devices were discrete. It means, system was built using thousands of single chips, that were connected together with tons of wires. Everything is OK, if systems are small and need no improvement. But the problems appeared in circuit design stage. It was too difficult to modify such systems after it were built. That was the reason, why PLDs and other programmable devices appeared.
PLD stands for Programmable Logic Device. Basically, it is an electronic component that is used to build reconfigurable digital circuits. Typical logic elements have functions, that are defined in the process of manufacturing. The PLD's functions are undefined, so it can be programmed. Let's say you have several TTL logic elements. They can be simple replaced by one of PLD device, so the circuit becomes not so complex. PLD is used to describe all different types of programmable devices. There are 3 main groups of such devices. It is SPLD (Simple PLD), CPLD (Complex PLD) and FPGA (Field Programmable Gate Array). Sometimes PLD term is used while speaking about SPLD devices. There are many various SPLD devices such as PLA (Programmable Logic Array), PAL (Programmable Array Logic) and GAL (Generic Array Logic).
SPLDs have many advantages, comparing to typical logic elements. First of all, the one element can be used instead of several logic elements. One element requires less board area. The number of pins is smaller, so the tracing process becomes not so complex. Also one element consumes less power. Also, such elements allow to make changes in the logic circuit without rewiring. The SPLD simply can be changed with another one. This can be used for fixing errors or updating the whole system.
The structure of SPLD device is quite simple. It consists of many connected cells. These cells usually contains AND and OR gates and some flip-flops. Boolean logic equations can be built into those cells. There are specialized programming languages used to program logic functions into these cells. The hardware realization can be made using ABEL or PALASM programming languages. Also it can be built using schematic capture tools. It allows user to draw logic circuit that is needed.
The next step in evolution of PLD devices were CPLD devices. It is Complex Programmable logic devices. Basically, this type of PLD contains many SPLD type devices, that interconnect with each other. PLD blocks are called macro-cells. They are connected by global interconnection matrix. So, it comes, that each PLD block (macro-cell) can be programmed. Also, the interconnection matrix also can be programmed. The advantages comparing it with SPLD are it's usability and capacity. CPLD can handle much more logical elements and functions that typical SPLD device. Also, CPLD devices can be reprogrammed.
FPGA stand for Field Programmable Gate Array. It is named as field programmable, because its internal structure can be programmed on the field. It means, that an engineer, can make FPGA to work as it is needed. FPGA is capable to handle almost any hardware design. It is used to develop new devices that will be manufactured as ASICs. Also, FPGA can be used to develop various custom systems that meet specific needs.
The FPGA evolved from CPLD devices but its architecture is completely different. The structure has 3 parts: logic blocks, interconnection blocks and input/output blocks. Input/output blocks are connected with I/O pins on the package. Logic blocks consists of LUTs (look-up-tables) and flip flops. They are used to implement various logic functions. The interconnection blocks allow to connect logic blocks together. Interconnection also can be programmed.
FPGA has more flexible architecture than CPLD has. Various systems can be implement on FPGA. It can work as DSP, micro-controller or even micro-processor. Verilog or VHDL programming languages are used while working with FPGA. The possibilities of FPGA help engineers to develop new products and systems.
Main brands of PLD devices
There are several market leaders that produce various SPLD, CPLD and FPGA chips. The 2 market leading companies are Xilinx and Altera. Lattice is the 3rd player with distinctively lower market share.
Xilinx is well known market leader in FPGA manufacturing for many years. Xilinx offers various products and solutions. Spartan series became very popular among students and small companies. While other lines like Virtex and others are quite popular in high-end companies.
Altera is another well-known market leader that provides Cyclone, Arria and Stratix series. Quite huge amount of users chooses Altera because of better development software solutions comparing to Xilinx.
Lattice Semiconductors is known for low cost and low power solutions and has its place among users.
The device brand and tools choice always depends on problem that you are solving. It is very useful to analyze products and solutions provided by all manufacturers and make a final decision. The product choice may also depend on your personal experience, cost and user community you are working with. If you are a student it is likely that your first choise will be made by your university and you meet one of those devices in the lab. The same will happen with programming language choice.
Wich language you prefer?
HDL programming languages
Hardware description languages (or simply HDLs) are used to program a PLD. SPLD device such as PAL or GAL can be programmed using PALASM, ABEL or CUPL languages. Verilog and VHDL are higher-level HDLs and are used to program CPLD and FPGA devices.
Both VHDL and Verilog are HDLs used to describe digital and mixed signal systems. It is hard to tell which language to learn (Verilog or VHDL). It mostly depends on your personal needs and tools you are using. Some FPGAs will do better with VHDL and some with Verilog. It also depends on user community you are in. If most of your colleagues are working with VHDL it is likely that you will start using VHDL and vice versa.
Some time ago a real language war was running. Simple wars usually take place on the Internet community. Remember Intel vs AMD, PIC vs AVR and similar discussions. Both HDL languages mentioned have their advantages and disadvantages. To put arguments in short it can be said that VHDL is more complex and more academic language. It has complex syntax and requires completely different mindset comparing to traditional languages (e.g. C). While programming with VHDL programmer must write more code, it end up with many errors but it ends up with perfect result. Verilog is simpler language, its syntax is similar to C, and it does not require starting thinking differently. The code compiles smooth but it can end up with hidden tricky bugs.
It is not important wich language you choose. It is important to understand how to use it.
VHDL and Verilog Comparison
Can be deterministic only in some cases
Very different comparing to C syntax
C like syntax