Where are FPGAs used?

Where are FPGAs used?

I bet you’ve heard a lot about FPGAs but I feel that you’ve asked yourself: “Where are these FPGAs?“, “Have I seen one until now?“, “Are you sure that there are common applications for this types of exotic chips?“.  Fact is that FPGAs are present starting from the deep bottom of the ocean (submarines) and going way far into deep space at the edge of our solar system (satellites). Let’s check out how FPGAs are used by various industries and how we silently intersect with them day-by-day.

DATA CENTERS

Chances are high that between you and reading this post a lot of FPGAs are involved in search engines, data compression, or data encryption. FPGAs are used in data centers because of their parallelism, high throughput and low-latency. Amazon WEB Services even lets yow rent FPGA fabric inside their datacenters and connect it with your application as a hardware accelerator (Amazon EC2 F1). Video processing, machine learning and data compression are just a few of possible applications that these FPGAs are used in the Amazon datacenters by their clients.

Sometimes FPGAs are used by large service providers like Google, Facebook or even banks to provide high quality data center services for a large amount of concurrent users. When 10k users search for different content in the same time, you need to have an extremely fast infrastructure that can accommodate them.

 

AUTOMOTIVE

The modern day car accommodates a large variety of chips, like microcontrollers, CPUs, GPUs and even FPGAs.  A first example for FPGA usage inside a car would be the Advanced Driver Assistance System (ADAS) which is used to give extra safety when the car is in the traffic by processing large amounts of data from various sensors (video, Lidar, pressure, temperature, motor, speed, driver gestures, etc…) and integrating them into complex algorithms to decide if the car, the driver and other traffic participants are circulating in a safe manner for everyone. An FPGA is best suited here because it can aggregate large amounts of different data types, has hundreds of I/O pins and can be reconfigured if something needs to be updated later in the production chain, or after the car is sold.

FPGAs are also used for motor control algorithms in electric / hybrid cars, in the security gateway or in the infotainment system. Since cars use so many chips the market has been highly affected by the current semiconductor crisis.

 

DEFENSE

Modern military technologies use state-of-the-art electronics devices, with high requirements for quality, safety and operating conditions. FPGAs are used for radar, sonar, electronic warfare, secure communication systems, encryption, avionics control equipment, unmanned aerial vehicles, smart munitions, etc…

The key features of an FPGA that recommends it for the defense sector are: configurability, fast IO, low latency and parallel processing power of multiple sensor sources [1].

 

 

Space

Space equipment as satellites have a lifetime of 10+ years so the chips inside them have to keep the pace with the updates of the telecom standards and algorithm updates [2]. A radiation-hardened FPGA, both by capsule materials and by the use of design techniques as Triple Module Redundancy and Hamming Codes, is a low-power reprogrammable device that can be updated with a new functionality even when the device is thousands of miles away in the harsh space environment.

The most popular applications for Space FPGA applications are: digital signal processing, high resolution optical and radar imagery, machine learning and AI [3].

 

 

Aerospace

This electronics used in this field are categorized as being safety-critical because the malfunction of even one subsystem can lead to life losses and huge material damage. Past aerial accidents related to electronic hardware lead to implementation of production safety standards for electronic airborne systems collected under the DO-254 standard. The software that operates this hardware has to be validated using the DO-178 standard.

Sometimes is easier and cheaper to validate the same behavior of a hardware circuit rather than a software implementation that should have the same behavior. All the design and verification process has to be thoroughly validated and documented using the strict procedures, sometimes taking several years.

 

 

TELECOM

Telecommunication infrastructure has to provide high-bandwidth, high-quality and high availability systems for the massive numbers of everyday users. If you’re browsing for cat videos on your phone using 5G services, there is a high chance that an FPGA is used inside a base-station to encode and decode the data transmission between your phone and the cat video server. Since there are a multitude of communications standards which are evolving once every few years, FPGAs are a perfect match for radio base stations because they can be remotely reconfigured whenever needed.

FPGAs are used to perform a wide range of fast and complex mathematical transforms (Fourier Transform, Digital Filtering, etc…) and to create custom digital signal processing chains according to every applications needs. They can offer low-power, fast-to-market, reconfigurable capabilities for any radio / wireless protocol.

 

 

HIGH-FREQUENCY TRADING

High-Frequency Trading (HFT) means to apply powerful math algorithms for stock exchange trading. The sole difference here is the astonishing speed these operations are performed which is in the nanoseconds range (1 second is 1 billion nanoseconds). In this fields the low-latency and high speed processing systems are key to large profits. While there are custom processors and servers designed specifically for this task, the low-latency and high processing power of an FPGA makes it ideal for this types of applications.

In this filed taking a decision a few tens of seconds later than your competition could mean high financial losses so taking it with a few tens of nanoseconds before you competition could result in massive profit. Another good example for FPGAs in the financial world is that JP Morgan implemented a High-Performance Computing cluster with FPGA accelerators that lets them analyze the risk of their trading transactions in near-real time.

 

ASIC PROTOTYPING

FPGA prototyping is the process of implementing/synthesizing an ASIC RTL code (Verilog or VHDL) on a physical platform that contains one or more FPGAs. These kind of platforms are used before tape out (sending the ASIC code to the factory) to check how your design responds to real-life stimulus. You can test a design with scenarios that are more complex that the ones you have simulated at RTL level. For example for, some protocols, simulating a 1ms of traffic using Modelsim (or other simulator) could take 2h, but on a real-life platform it will take 1ms. With these platforms you can find bugs that would occur only in heavy-duty real-life testing conditions.

Another role of these platforms is to start firmware development for the final chip way before the chip is mass produced. Since this is usually done by another department than the ones developing the chip, it bring a huge advantage in reducing overall costs and development time.

These development boards usually have multiple FPGAs, each having millions of logic cells (billions of transistors), with a total cost of hundreds of thousands of dollars. Even so their overall use brings costs reductions of millions if they are used efficiently.

CRYPTOCURRENCY MINING

Because of the cryptocurrency revolution and blockchain hype people tried to find ways to mine these cryptocurrencies in a energy-efficient manner on devices that bring the maximum performance. Mining cryptocurrency means to find a solution to a complex mathematical problem and present it to a network before the other members. Initially this was done using your processor, but this was consuming lots of time and was not energy-efficient. The next step was to design ASICs that were extremely fast, but as the number o cryptocurrencies expanded, and the initial ones having algorithm updates, the equipment developers migrated towards GPUs and FPGAs. While GPUs are more power hungry and harder to find in stocks than an FPGA, this gives FPGAs a great profitability advantage over others kinds of chips.

This  brought massive media exposure for FPGAs, gave them a piece of the hype the crypto stage is enjoying, and attracted development talent from other areas to FPGAs. FPGA mining is still a niche area in crypto mining because the mining workflow is considered to be extremely complex compared to ASIC / GPU mining.

 

WANT TO LEARN FPGA DESIGN?

As you can see there are many interesting high-tech fields where FPGAs are deployed and having a job there means and a wonderful career full of challenges and accomplishments, that also offers financial stability. The FPGA market is expected to grow with almost 10% per year until 2027 so there is a high need for professionals to fill these high-end jobs.

Working in FPGA design and verification is somehow similar to academic research and it involves a great imagination an creative problem-solving abilities. FPGAs are usually “programmed” using Hardware Description Languages and the one this blog is specialized is called Verilog HDL. FPGA design and Verilog as marketed as “difficult to learn”, or “complex”, but remember that it is NOT rocket science…

I had the same kind of problem when I started with FPGAs more 12 years ago and I had some hard times because I didn’t knew the technology, nor how a hardware description language works and how to code with it… I lost hundreds and hundreds of hours just to learn what I shouldn’t do… After a 10 years career in ASIC / FPGA design and verification plus a Ph.D in designing FPGA accelerators, I built this simple, hand-on tool that will help you master the secrets of Verilog very fast. If you are interested learning Verilog in a easy way, you can read more here….

 

Types of FPGA architectures

Types of FPGA architectures

Field Programmable Gate Arrays (FPGAs)  are general-use, reconfigurable chips that are used for a particular workload or for ASIC prototyping. An FPGA allows massive data parallelism and can achieve speed and energy consumption improvements in orders of magnitude compared with a generic processor.  They are very popular in video processing, digital signal processing, cryptography, data compression, machine learning and AI, auto, aerospace and military applications. An FPGA can be programmed multiple times until the desired functionality for a circuit is obtained or it can updated even if a bug is found later in the production stages. ASICs don’t have this kind of flexibility and bugs found in production may sometimes be catastrophic for the chip’s functionality. FPGAs are composed of configurable logic blocks or CLB (contains look-up tables, combinational logic and flip-fops), programmable interconnects (interconnects + switch matrix), and I/O pads. To “program” an FPGA means to emulate the functionality of a digital circuit using the FPGA fabric. This is usually achieved by using a Hardware Description Language like Verilog or VHDL. The Synthesis tool will map the circuit to the existing FPGA configurable logic and will use the programmable interconnects to connect these blocks between them. The FPGA is configured by downloading a bitstream inside it and the 1/0 bits will enable or disable the functionality of the CLBs and of the interconnects.

 

Types of FPGA

If we analyze the internal structure of an FPGA we have three categories: Symmetrical Arrays, Row-based architecture, and Hierarchical PLDs.

 

Symmetrical Arrays FPGAs

 

This architecture consists of a rectangular array of logic blocks separated by channels containing routing resources (interconnects + switches). These blocks can be programmed to implement any desired function and are connected with the outside environment by using the I/O blocks. The function of the I/O blocks are used for tri-state control, output transition speed, pullp-up ori pull-down. The fastest interconnection is between adjacent blocks while the delay increases with the distance between the CLBs.

Row-based architecture

 

The CLBs are grouped in rows with programmable interconnects placed between them. The I/O blocks are at the edge of the structure. Complex circuits are emulated by connecting adjacent rows via vertical interconnects.

 

 

Hierarchical PLDs

Hierarchical PLDs have a more complex layout. The top level is composed of logic blocks and interconnects. The logic blocks contain logic modules, which have combinatorial and sequential functional elements. The functional elements are controlled by the configuration bitstream stored inside the FPGA. The I/O blocks are placed at the edge of the system, shrouding the logic blocks and the interconnects.

FPGA programming technologies

Since the FPGA fabric is reconfigurable it needs a storage mechanism for the bitstream that will enable / disable the configurable logic and the programmable switches. There are three main technologies:

  1. SRAM-based FPGAs: When the power source is turn on static RAM cells are loaded with the bitstream value. The FPGA requires an external flash memory for storing the bitstream while the power is OFF. The FPGA loses its configuration each time the power is shut down returning to its unconfigured state (volatility).
  2. Antifuse-based FPGAs: This makes the FPGA one-time programmable because a fuse is burnt when the bitstream is loaded. This makes the FPGA non-reprogrammable but the advantage is that it will retain the functionality even with no power.
  3. Flash-based FPGAs: The FPGA has internal FLASH memory to retain the configuration when powered down. This eliminates the need for an external memory and the device can be reprogrammed while the FLASH cells are functional.

Modern FPGAs

Cyclone V FPGA (source)

Modern FPGAs are composed of Adaptive Logic Modules (ALM) and Logic Elements (LEs) connected using programmable interconnects. Besides the ALMs and LEs a modern FPGA may have a processor core (like the Xilinx Zynq family), Transceivers, Hard IP blocks like PCIe, dedicated Digital signal Processing engines, and even analog modules like programmable PLLs (Phase Locked Loop – used to generate clock signal), and integrated Analog-to-Digital Converters (XADC from Xilinx)

Why use an FPGA?

It is a very cheap solution for prototyping and also for low-volume flexible products. In terms of costs FPGAs vary from tens of dollars to thousands of dollars and you always must select one that fits the throughput and financial budget of your system. The same RTL code (Verilog or VHDL) can be implemented in an ASIC if needed later, and it is an important for measuring the performance of a specific circuit. For example companies that sell soft cores (Intellectual Property or IP) use FPGAs to profile the performance of their circuits in terms of maximum frequency, power, consumed logic gates and throughput. FPGAs are also a great solution as accelerators in heterogeneous systems where a standard low-power CPU is used to control a system and the FPGA is used to process compute intensive payloads while the CPU is idle or performs other task (video, encryption, etc…).

Is it hard to become an FPGA designer?

Most posts on the Internet promote that it is very hard to understand Hardware Description Languages (like Verilog) that’s why many engineering students choose other niches to work after they finish their faculty. If I look back at my journey the hardest part about Verilog and FPGAs was the fact that I wasn’t aware about what I was doing. The most challenging part was to know how to code synthesizable designs for FPGA using Verilog. If you’re a beginner (you don’t have high speed / large area / complex designs) a good path to follow would be to first understand how Verilog HDL code works for Digital Circuits Design and Functional Verification, and your FPGA journey will become much easier. I had the same problem for years and faced much bigger challenges that I should of because I didn’t knew back then how important is to understand the correspondence between Verilog code and actual digital circuits. Another thing that I didn’t had were some clear practical steps to develop my skills in Verilog… After 10 years of industry experience and a Ph.D involving FPGAs and Verilog, I developed a simple practical tool that will help you easily master Verilog HDL. It contains all things I wished I’d knew when I started my journey 10 years ago.  Find out more…

Types of ASIC architectures

Types of ASIC architectures

 

ASICs (Application Specific Integrated Circuits) are digital / analog / mixed signal integrated circuits designed based on the requirement of a particular application (a chip to interface a processor and an Ethernet link, a chip used for WIFI, a chip used to access the 5G network, etc…). These types of products are preferred only when large production scale is involved because the production costs being in the million dollar range and involving a large number of financial, logistical and engineering resources (most of the time split around the globe in multiple companies).

Digital ASICs are designed starting from a set of requirements and are implemented following the Modern Digital Design Flow (watch short video). Each ASIC has requirements that characterize all seven Abstraction Levels: System, Algorithm, Register Transfer Level, Gate, Circuit, and Material (watch short video).

Types of ASICs

The fixed-structure ASIC types are the following:

  1. Full Custom
  2. Semi Custom (Gate Array Based or Standard Cell based)

1. Full custom design ASICs

This type of ASIC design is tailored for a specific application so the designers have to engineer all the logic cells down to transistor level for this circuit. All the chips masks are fully customized and the structure of the chip remains fixed. These kind of ASICs are used for maximum performance, minimized area and high degree of flexibility. The design process includes both Analog and Digital engineering and the design flow is risky, lengthy and extremely expensive.

A good example for a Full Custom ASIC is your laptop or desktop CPU (central Processing Unit) which was engineered to transistor level following multiple methodologies, technological flows, simulations tools a vast amount of human, know-how and physical resources (Modern Intel CPU).

 

2.1 Semi Custom – Gate Array Based

Gate Arrays offer the lowest level of customization because these ASICs use predefined transistors on a silicon wafer. The designer can change the interconnect between transistors by using the metal layers of the die. By opening certain switches you get the desired functionality but the overall possibilities are very limited. You can find out more about Gate Array ASICs here.

2.2 Semi Custom – Standard Cell Based

For this type of ASICs some of the logic cells (XOR, AND gates, multiplexers …) are predesigned using different configurations and stored inside a library also known as a standard cell library.  There cells are grouped into rows of cells which can be connected to obtain the desired functionality. Besides these flexible blocks there are larger blocks like microprocessors or microcontrollers which can be inferred. These large functional blocks are also called Mega cells, Mega functions, System Level Macros, Full Custom Blocks or Fixed Blocks. This type of design has some advantages over Full Custom design like cost efficiency, faster time to market and less risk. The main disadvantage of this flow is the effort involved in designing a Standard Cell library.

 

 

ASIC usage

The ASICs revolutionized the way electronics are manufactured and they are used in applications where a chip with the same functionality can be used for a long period of time. You smartphone or Ethernet adapter can remain the same for years and provide the same functionality without being outdated. All the electronics around us contain ASICs and there is virtually no limit for the applications of these types of circuits.

Simple classification of modern Digital Semiconductors

Simple classification of modern Digital Semiconductors

 

One of the key components of modern life and civilization is technology. From your automated garage door, to your Netflix account and smartphone conversations everything is happening though chips  (microchips) communicating with each other. These tiny bits of silicon are designed to exchange back and forth billions of transactions every second to make all day-by-day comfort happening. This happens even now when your reading this article, between all the components of your smart-phone and PC, and between your router and the server where this site is stored. A chip is also known under the name of Integrated Circuit which is “an electronic device comprising numerous functional elements such as transistors, resistors, condensers, etc. on a piece of silicon semiconductor substrate, and is sealed inside a package with multiple terminals[1].

If we analyze from the perspective of the way a chip processes the voltage levels of the I/O (Input/Output) ports we have Analog Semiconductors and Digital Semiconductors.

  1. Analog Semiconductors: they process analog signals which are continuous variables. To simplify think of chips used for power supplies, radio, audio and sensors.
  2. Digital Semiconductors: they process  digital signals which are discrete variables encoded using binary levels (1 and 0 values). The easiest example is the Central Processing Unit (CPU) of the device you use for reading this. These devices are designed using Verilog or other Hardware Description Languages.

What kind of digital chips are there?

Regarding the internal architecture digital semiconductors are split in two main categories which are ASIC and FPGA. Remember that most chips are actually mixed circuits semiconductors, they contain analog and digital blocks, but we are going to address only the digital parts inside them.

ASIC

Application Specific Integrated Circuits are chips designed and manufactured for serving one purpose particularly. After production these highly-specialized devices cannot be modified or adapted to new requirements hence they have a fixed structure. You can take as examples a microprocessor, a microcontroller, a Bitcoin miner, a chip used for your cell phone or even a chip used for satellite data processing.

The main advantage of an ASIC is that it brings together multiple functional blocks in the same chip so it reduces the number of components on a circuit board inside a electronic device. For example one ASIC could contain a 32bit processor, an Ethernet engine and PHY, memory blocks and a video processing block. Large ASICs that combine multiple digital blocks with distinct functionalities are also called System-on-Chips (SoC). ASICs are chips that have high production runs (million of produced units) and have high development costs. The cost per unit will eventually get reduced to cents or dollars by the large volume of units with low silicon area (ex. the chips used to do a washing machine or TV) or remain in the hundreds / thousands of dollars range for chips used in niche products or products with high silicon area (computer processors, planes and rockets chips).

Find out mode about Types of ASIC Architectures.

FPGAs

Field Programmable Gate Arrays are chips manufactured for general use that contain configurable logic and programmable interconnects. To “program” an FPGA actually means to emulate a specific digital circuit using the configurable logic and the programmable interconnect of the FPGA fabric to perform a specific functionality. For example you could design a microprocessor with a specific Instructions Set Architecture using Verilog and then program the FPGA with the resulting bitstream to test your processor in real-life applications. FPGAs are used in applications where high speed data processing and parallelism are required like video processing, digital signal processing, data compression, cryptography, datacenter accelerators, Artificial Intelligence, high speed Ethernet or even ASIC prototyping (the functionality is emulated and debugged until an ASIC is produced).

A simple use case for an FPGA would be for a video processing module that shows an image to the driver at each 250ms. If the auto safety standards change and require a new image at each 100ms it would be a huge financial challenge to change chips inside millions of cars, while a simple FPGA bitstream update at the service would be much cheaper and easier to do. Another use case would be datacenter FPGA accelerators where the same FPGA can be reprogrammed whenever a client needs a data processing accelerator, for example this week a client uses an FPGA as a video processing accelerator and the next week another client uses the same FPGA as an data compression accelerator.

Find out more about Types of FPGAs Architectures.

Difference between ASIC and FPGA

Both ASIC and FPGA technologies are powerful and sometimes can be used for the same purpose in a real-life application. Based on the final product destination, budget, time and engineering resources you may opt-out for one of them. In the next table you have some of the key differences between ASICs and FPGAs.

How are modern Digital Semiconductors designed and modeled?

Digital Semiconductors are modeled by using Hardware Description Languages (check the link for an extensive list of languages) while two of the most popular being Verilog and VHDL. The languages are used for both Design and Verification for Digital Chips. Verilog is the precursor of the SystemVerilog language used both for design and as a basis for the Universal Verification Methodology.

Digital Semiconductors are designed starting from a set of requirements and are implemented following the Modern Digital Design Flow (watch short video). Each ASIC has requirements that characterize all seven Abstraction Levels: System, Algorithm, Register Transfer Level, Gate, Circuit, and Material (watch short video).

For a simple and concise description of what Verilog is watch this video!

 

 

 

error: Content is protected !!