Programmable Logic Devices
The Field Programmable Gate Arrays are devices originating the 90's but nowadays experiencing dynamic development. The main difference between standard processor and a programmable logic device (abbr. PLD) is that their internal structure is not fixed. Taking standard CPUs as an example, one can run a program which will be executed on the internal infrastructure of logic components. Programming logic devices means describing and defining this infrastructure. Instead of fixed structure, PLDs consist of arrays of general logic blocks, which can be configured individually. Using a Hardware Description Language (abbr. HDL) and a dedicated compiler, the abstract logic functions described by the developer are translated into series of logic blocks configured and interconnected accordingly.
Photo1: FPGA device on MDC-Addon [gsi.de]
There is a lot of various programmable logic devices available nowadays on market. They can be classified under different aspects like reprogramming, available resources, configuration holding etc. We will focus only on two main families of devices: Complex Programmable Logic Devices (abbr. CPLD) and Field Programmable Logic Devices (abbr. FPGA), which are most commonly used PLDs categorized as High Capacity Programmable Logic Devices (abbr. HCPLD). The aspect that distinguish those two is the non-volatile memory of CPLDs and the amount of resources. The internal structure of the chip is constructed differently, using the so called "sea of gates" instead of configurable logic blocks found on FPGAs, allowing once loaded configuration to remain after power cycle. All logic blocks building an FPGA lose their configuration and need to be programmed after powering up. On the other hand, FPGAs deliver much more complex hardware features inside the chip and have the amount of resources higher by several orders of magnitude. The programming of FPGAs can be automated by installing a dedicated RAM memory holding configuration, which is loaded on startup. Those two aspects separate the use cases for both types. CPLDs are mostly used for simple tasks with fixed functionality like interfaces between devices or implementing glue logic. Huge amount of resources on FPGAs gives the possibility of implementing complex functions and algorithms, hence they are used as system controllers and data processors.
Miniaturization and introduction of 20 nm technology process strongly increased the amount of logic resources that could be packed into a single device, while keeping reasonable size, price and power consumption. Large jump in logic capability attracted a lot of customers from fields like networking technology, data processing, military and of course high energy physics. They no longer offer logic gates only but also complex hardware elements like high speed transceivers, memory blocks, Digital Signal Processing (abbr. DSP) blocks and even built in microprocessors platforms like PowerPC or ARM, transforming FPGAs into System On Chip (abbr. SoC) solutions.
High performance capabilities, reconfiguration and relatively low cost are the key reasons why FPGAs are often chosen to equip electronics in data acquisition systems.
Scheme1: High-level view at logic implementation
grzegorz.korcyl (at) uj.edu.pl