Getting Started with FPGAs

Every digital system needs processing power to implement its required functionality and user experience. Digital systems designers, whether they build small consumer products or large embedded computing systems, will have to choose a central processor that controls their design and orchestrates movement of data throughout a system. When designers start looking for processing power for their systems, they only have a few options: MCUs/MPUs, a custom SoC, or FPGAs.

Table of Contents

These three options offer different ways to build digital systems that provide high compute, memory, and development flexibility. While many applications have tended to default to MCUs and MPUs for device control and processing power, FPGAs were often seen as only useful for prototyping or specialized application areas. However, as more systems require computing applications that are inefficient in other processor options, FPGAs are now becoming the processor of choice for modern digital and mixed-signal systems.

FPGAs vs. MCUs, MPUs, SoCs, and GPUs

The four major classes of digital processors available for embedded systems are MCUs, MPUs, SoCs, and FPGAs. Rather than using discrete logic as was done in the early days of the semiconductor industry, these components integrate multiple processing blocks into a single semiconductor die or package to provide many of the functions we would expect to see in modern computers.

MCU photo
Microcontroller (MCU)

A simpler processor intended for implementing specific digital processing instructions in an embedded system using combinational and sequential logic. These processors may implement some high-speed interfaces like USB or Ethernet.

MPU photo
Microprocessor (MPU)

A larger processor with higher clock speeds, more interfaces, on-die memory, and power requirements than an MCU. These processors can run larger applications on an embedded OS and interface with multiple peripherals over high-speed digital interfaces.

SoC photo
System-on-Chip (SoC)

A customized processor that includes a CPU, I/O interfaces, networking capabilities, and some specialty peripherals in highly integrated packaging. These components are often developed for specific product families or applications, although general purpose MCU-based SoCs are also available.

GPU photo
Graphics Processing Unit (GPU)

A customized processor that includes a CPU, I/O interfaces, memory, and other specialty peripherals in highly integrated packaging. These components are often developed for specific product families or applications, although some general MCU-based SoCs are available.

FPGA photo
Field-Programmable Gate Array (FPGA)

A programmable logic device that can be reconfigured and customized, both at the hardware level and the application level. These components require some development effort, but they can be customized to target multiple applications.

MCU Overview

Although these devices do not provide the most advanced capabilities, they tend to be very easy to program and integrate into larger systems. Semiconductor vendors have done an excellent job providing development resources for these products. They are also a good starting point for students in embedded systems development, and some low-compute platforms with very low cost are available.

MPU Overview

Consumer products like computers will generally use an MPU (e.g., the CPU in a PC), although more advanced IoT products and embedded systems will use MPUs as they provide access to higher speed computing peripherals. The processing speed and power in these components is high enough to run an embedded OS and more advanced applications while also controlling peripheral devices over standard digital protocols. More advanced protocols like later PCIe generations, DDR3+, MIPI, SATA, USB 3+, and others are readily available in off-the-shelf MPUs.

SoC Overview

Products like mobile phones, tablets, some wearables, and some IoT products use proprietary SoCs that are totally custom designs. The idea is to integrate a specific set of functional blocks (CPU, memory, wireless transceiver, etc.) into a single chip to enable a specific application or product. The integration involved here makes these products very powerful for a single application, but they are generally not useful for anything else outside that one application. An SoC might be a candidate for use in products that require high integration, small footprint, and high-volume production.

Not all SoCs are proprietary; some are MCU-based modules that consolidate common peripherals (memory, wireless, etc.) into a single component. Two related products, the multi-chip module (MCM) and system-in-package, are modern chip architectures that integrate multiple dies and components into a single package using an interposer. Aside from the structural differences, the central design intent in these components is the same: integrate multiple features from different hardware modules into a single package. These devices are also highly specialized and are only intended for specific applications.

GPU Overview

Among all the processor options discussed so far, GPUs are the most power-hungry and the most expensive. Currently, they are in high demand in diverse applications like gaming, AR/VR, edge computing, blockchain, and AI/ML workloads. They implement a specific tensorial compute architecture that makes them very useful where high throughput is required. However, they can only interface with a host controller and on-board memory; there are no other I/Os. They are also very large, and they can be the single largest user of power in an embedded device.

While comparable to or exceeding many FPGAs in terms of compute, these devices can’t compete in terms of flexibility. GPUs can only execute tasks as dictated by a host controller; they cannot act as a standalone system controller. FPGAs are a much more flexible, cost-effective option over large GPUs.

FPGA Overview

FPGAs do not dedicate specific sections of silicon to specific types of compute elements or peripherals. Rather, they use generalized logic blocks that can be configured to operate as a specific interface, peripheral, or any other function that can be specified in terms of logic operations. This means FPGAs can provide the same type of integration as an SoC/MCM; by programming the functions of external components at the hardware level, the need or an external peripheral is eliminated.

In terms of compute, FPGAs can easily overtake MPUs and SoCs when their development is optimized. FPGAs can also be used with one of these other components in a co-processor architecture, where the FPGA is used to implement specialty applications requiring higher compute than would be available in an MPU or SoC. FPGAs can supplant accelerator components that target high compute applications like AI without much additional development effort due to the extensive IP portfolios offered by many vendors.

FPGA MCU MPU SoC GPU

Processing power

High

Low

High

Varies

High

Firmware reconfigurable

Yes

Yes

Yes

Yes

Yes

Hardware reconfigurable

Yes

No

No

No

Yes

I/O count

High

Low

Moderate to High

Low to Moderate

Low

Onboard peripherals

Any - fully customizable in logic

Low-speed + USB, 10/100 Ethernet, some analog

Multiple high speed, some analog

Varies - depends on target application

I/O interface only

Cost

Low to High

Low

Moderate

Low to Moderate

High

Power consumption

Low to High

Low

Moderate to High

Moderate

Very High

Footprint

Small to Large

Small

Moderate to Large

Small

Very Large

 

A summary comparing the above points can be found in the table above. An FPGA is unique among these processor options as its level of specificity can be tailored to different systems and applications. The lack of specificity is one strength of FPGAs; they can act as a replacement for other components, work alongside another processor, and provide specialized logic functions not seen in commercially available components.

Why FPGAs?

FPGAs offer multiple benefits that electronics developers will find highly useful and desirable. These benefits span across development flexibility, access to compute resources, futureproofing, and reconfigurability. For the experienced electrical layout designer, implementing an FPGA is no more difficult than using a large MCU/MPU. Other less-common benefits like security are important in areas like aerospace and infrastructure, where hardware-level security risks need to be considered alongside application-level and platform-level security.

Today, newer FPGA platforms with high I/O count, transceiver bandwidth, memory bandwidth, and logic cell count are being released by major manufacturers. While these larger components target high compute applications like data centers and sensor fusion, smaller-scale versions of these platforms are extremely useful in many applications. Small devices that would normally require an SoC with specialized architecture or a large MCU have trouble enabling modern applications and user experiences with low cost and footprint.

Benefits of FPGA-Based Systems

In general, FPGAs excel in any application where high compute is required, where high I/O counts are needed over diverse interfaces, or both. Thanks to the reconfigurability of FPGAs, their ability to support nearly any digital interface, they offer some distinct advantages not provided by other system architectures.

Future-proofing - FPGAs are reconfigurable and can be modified without making an entire product obsolete. This means the system, layout, and packaging design can be designed with an eye towards futureproofing, allowing the designer to consider future implementations of the FPGA’s I/Os and other features. For example, one strategy is to allow breakout of more pins than needed so that they can be accessed later with minor modifications to the product design.

Security - FPGAs naturally lend themselves to a hardware-level security strategy because they enable component consolidation. Although this requires extra development effort to instantiate peripherals on an FPGA, consolidating everything to a single component reduces a system’s attack surface and increases the difficulty of unauthorized access.

Supply chain risk - FPGAs carry lower supply chain risk than the standard processor + peripherals system architecture. In products with standard digital chipsets, a single out-of-stock component can delay production significantly, especially given today’s supply chain volatility. Because ASICs used as system peripherals can be instantiated in an FPGA, a system will not be dependent on inventory and can be produced sustainably. Some additional development effort is needed, but the total part count and BOM cost could be reduced through use of an FPGA.

Application Areas

In general, FPGAs excel in any application where high compute is required, but where it can’t be achieved using the typical combinational/sequential logic architecture used in today’s MCUs and ASICs. Because the logic in FPGAs is customizable and reconfigurable, designers can implement FPGAs in unique ways.

Typically, an FPGA will be used as the main system controller that will orchestrate all functions in the device. It’s also possible to use the FPGA as a peripheral that implements the same logical functions as one or more off-the-shelf components. It’s also possible to use a system with multiple FPGAs, with one acting as the host controller and smaller devices acting as customizable peripherals.

Some of the modern application areas where FPGAs are prevalent over MCU/MPU, SoC, and even GPU architectures are summarized below.

Sensor Fusion

This is one contemporary area where the high I/O count and high computing power of FPGAs proves to be superior over any other architecture. FPGAs in this application area can accept data from multiple advanced sensing platforms over custom or standardized data protocols. FPGAs will often then transfer the data at high throughput back to another system for further processing.

Industrial Systems

Industrial equipment and processing systems use more data than ever before, and they require significant processing power with high I/O count in a small footprint. FPGAs are adaptable platforms that can be tailored to industrial systems, which often need to interface with legacy equipment not operating with modern digital interfaces.

Vision Systems

This spin on sensor fusion involves consolidating multiple image or video feeds into a single device. The high I/O count and high data throughput rate of FPGAs is required in these applications when a large number of vision streams need to be processed in real time. FPGAs are also data agnostic in this application; vision data streams can come from radar, lidar, cameras, ultrasonics, or any other type of computer vision sensor array.

Embedded AI

FPGAs can be used as a controller for an entire system, or they can be used as an AI accelerator for an existing processor module. The hardware reconfigurable nature of FPGAs allows AI models to be encoded at the hardware level rather than in an application. This makes FPGAs much more efficient for embedded AI applications.

Interoperable Systems

This is another area where hardware reconfigurability proves superior. Interoperable systems often require customization that is far too expensive to implement on custom silicon with an SoC or ASIC. FPGAs can implement this customization easily; some application areas include daughtercard and sensor products for embedded military computing platforms.

Edge computing

Computing systems deployed at the edge must be rugged and reconfigurable while offering comparable compute to what would be seen in a data center. FPGAs have found a home in edge compute as central processors or as specialized peripherals. FPGAs can be used to bring any of the capabilities outlined above into an edge server as a peripheral, SOM, or directly on a motherboard.

From the applications listed in this table, we see a few important trends: FPGAs offer the high compute capabilities alongside high I/O count needed in these advanced applications. Although a component like an MPU can have high I/O count for interfacing with peripherals or sensors, it may lack the compute and throughput needed in an application like sensor fusion. In another extreme like embedded AI, the typical strategy is to deploy a neural network on a GPU for inference tasks. In that case, an external processor would be needed to control the system. FPGAs can satisfy both requirements compared to a GPU plus an external processor.

Using an FPGA as a system controller offers another design strategy: it allows reduction in overall device footprint. By taking advantage of vendor IP portfolios or developing proprietary IP, developers can instantiate peripherals in an FPGA rather than placing them as external components. Elimination of these peripheral devices simplifies an FPGA-based system compared to other options, and it can help keep costs competitive.

Designing with FPGAs

If you’ve decided that an FPGA is the optimal solution for your product, you can begin moving through the design process for your FPGA. The process begins with selecting the appropriate architecture for your system, followed by matching your system architecture and functional requirements to a commercially available FPGA. Your vendor’s level of support can also influence your decision of FPGA selection, and you should ensure they have an IP portfolio that can meet your needs.

System Architecture Overview

As we’ve seen in previous sections of this guide, there are multiple architectures where an FPGA can play an important role. Some possible uses are shown below.

Ways you can use FPGAs in your system

These are not the only options for integrating an FPGA into an embedded system. However, each of these should illustrate the adaptability of FPGA-based solutions: they can act as peripherals, main system controllers, or an integrated processor with few peripherals. Depending on the IP available from your FPGA vendor, you may be able to totally eliminate peripherals and instantiate everything in silicon, giving a much faster pathway to deploying a highly integrated SoC.

No matter how you choose to use an FPGA, its place in the system architecture and the functions it must provide will dictate the hardware requirements of your component. Importantly, this drives selection of the required I/O count, logic cell count, and IP that will be instantiated in the FPGA.

How to Select an FPGA for Your System

There are several important dimensions that should form the basis for FPGA selection.

I/O Count - This is the simplest place to start looking for an FPGA that can meet the needs of advanced embedded systems. The total number of I/Os is essentially the number of signals that can be accessed or sourced by the FPGA during operation. Physically larger FPGAs tend to have higher I/O counts. This is not often something you will have to calculate; FPGA vendors typically state a specific I/O count in their product datasheets.

If you took some time to build a functional block diagram for your system, and you’ve included interface information in your documentation, then it’s a simple matter to count up the number of I/Os the system will need and assign these to various interfaces.

Operating Frequency - In the most basic sense, this will tell you how fast the device can process a serial bit stream. Although faster clock rates do generally equate to faster processing, don’t be fooled by an FPGA with a slow clock. Processing in an FPGA can be done in parallel to a massive level, so even low clock rates can be used to implement logic operations and data processing in parallel with high data throughput. This type of customizable parallel processing is essential for large neural networks, vision applications, and sensor fusion.

Logic Cell Count - The basic building blocks of an FPGA are logic cells, and the quantity of logic cells is a measurement of the processing capacity available to the system. A device with more logic cells can generally accommodate more interfaces and more logic operations. Logic cell count will tend to scale with I/O count.

Memory - The amount of on-die memory available to an FPGA is extremely important for implementing modern applications. On-die memory embedded in the device interconnect fabric will be needed for logic operations, while external memory is normally accessed via a DDR interface. Less on-die memory available for logic operations will mean the device needs more external memory, which will consume some logic cells and I/Os to implement a memory interface.

Cost - Cost is a major factor that can drive FPGA device selection. If an FPGA will only be used in prototyping, or it will only be used in a one-off device, then cost of an FPGA component may not be a major consideration. Larger FPGAs (more logic cells and I/Os) will generally cost more because they can offer greater capabilities. Smaller FPGAs are finding a home in mass-produced devices that implement the advanced applications listed in earlier sections, so products produced at high volume can benefit from FPGAs from a cost perspective.

Vendor IP - An FPGA vendor’s IP portfolio exists to help developers quickly implement standardized interfaces in the device’s interconnect fabric. FPGA developers can rely on IP to instantiate interfaces required in their end product when programming their application. If IP for a standard interface is not available from the vendor or as open-source code, then it will have to be programmed from scratch. Available IP will target specific applications, and these should be considered when choosing between FPGA vendors.

FPGA Development Process

To get started developing a new application with an FPGA, the best place to begin is with a vendor’s evaluation product. FPGA vendors offer development boards for prototyping, testing, and debugging, so it is best from a risk perspective to start with a development product before deploying on a custom circuit board. Starting with an evaluation kit allows developers to eliminate potential defects on a custom board from their debug process and allows developers to focus on designing logic in the FPGA.

Vendor development products will also require access to an IDE for coding an application, compiling it to a HEX file/binary file, and programming this into the FPGA fabric. The process is similar to what is done with an MCU/MPU or an SoC. The main difference is that the “application” being coded is not stored in the device memory, it becomes instantiated in the device hardware.

At a high level, the FPGA development process proceeds through the following steps:

  1. Select an FPGA and any required vendor IP if available
  2. Implement custom logic with IP using vendor developer tools
  3. After simulation and verification, compile the application to a HEX file
  4. Programming the FPGA, followed by testing and debugging on an evaluation product
  5. Based on testing results, modify the application code build a custom board for the end product
  6. Prototype with a custom board to ensure support for any required peripherals
  7. Adjust the application to address any outstanding problems found during testing and prepare for production

Compared with MCUs or MPUs, IP provides an excellent way to work towards ready-made applications that still allow customization. Other programmable logic devices do not have this level of support and they may require total custom coding of all portions of an application. One common strategy is to combine libraries from multiple vendors into a single application, which is then compiled to a binary and flashed into the device’s memory. Vendor IP and developer resources can help designers circumvent these problems and reduce overall development time.

Before you start your next project, make sure you explore the hardware and IP options available from different vendors. The right FPGA vendor can help you quickly deploy a device that very closely matches your requirements thanks to their IP portfolio.

Meet Efinix

Efinix is an innovative FPGA vendor targeting edge, wearable, IoT, sensor, and machine vision markets. Efinix offers two FPGA product lines along with development resources to help engineers accelerate innovation and reduce time to market for FPGA-based products. Efinix offers two FPGA product lines:

Titanium Logo

Titanium FPGAs

A larger FPGA solution for more advanced applications requiring more logic capacity and I/O count. These devices are built on a similar architecture as Trion products with broader support for standard data/memory interfaces, as well as SerDes interfaces with high data rate.

  • Up to 1M logic cells
  • 4-lane MIPI, DDR4/LPDDR4, up to 25.8 Gbps SerDes, PCIe Gen4 interfaces supported
  • DSP block optimized for high compute applications like AI
  • Efinix RISC-V core with integrated audio and vision interfaces
  • Ideal for high compute industrial systems, larger vision products, and edge AI applications
Trion Logo

Trion FPGAs

A smaller FPGA option for embedded systems, these components take up small amounts of board space yet provide access to high I/O count and high logic cell count. These devices include standard integrated interfaces and will support additional high speed interfaces required in high compute applications:

  • Up to 120k logic cells
  • 4-lane MIPI, LVDS, and up to DDR3/LPDDR3 interfaces supported
  • Dedicated interface block
  • Efinix RISC-V core with integrated audio and vision processing
  • Ideal for mobile/IoT products, smaller vision products, and edge AI applications

Developer Resources

To help FPGA designers start developing their Trion or Titanium FPGAs for popular applications, Efinix offers libraries that help designers quickly specialize their device for popular applications.

Efinity IDE - The Efinity IDE is Efinix’s development environment for Titanium and Trion FPGAs. Efinity provides a complete environment for working with Efinix FPGAs, design libraries, and IP with a GUI interface and command-line scripting support. Some of the major development features include:

  • Project management dashboard
  • Interface and floorplan design tool for logic design, pin assignment, and routing
  • Timing analysis features to analyze and optimize device performance
  • Hardware debuggers for logic analysis
  • Simulation support with ModelSim, NCSim, and iVerilog simulators

1-year licenses are available to anyone who buys a development kit. The license includes one year of upgrades and a free maintenance renewal is available upon request.

RISC-V SoC - This development library allows users to implement a RSIC-V core in Titanium or Trion FPGAs. Based on the VexRISCV core, this development library provides high I/O count, user peripherals (SPI, I2C, etc.) on an APB bus, and high-speed interfaces and memory controllers on an AXI bus. The result is a highly integrated SoC that still enables the customizability of any other FPGA platform.

Edge Vision SoC - This development library tailors the RISC-V SoC to vision applications. The first-of-its-kind concept, this library includes all the buses, controllers, and interfaces needed in a typical signal processing ASIC for vision applications. Additional user functions and instantiation of specialized processing blocks can also be implemented with this library and Efinix’s other developer resources.

These FPGA silicon platforms are designed around the Efinix Quantum® fabric. The radically different architecture of the Quantum fabric eliminates wasted silicon and enables up to 4x area utilization compared to traditional FPGAs. This lets Efinix offer power and performance advantages over FPGAs from legacy manufacturers.

Why Efinix?

Efinix has partnered with a broad range of customers and focuses its product lines on applications requiring high compute in small form factor devices. Its customers are innovative industrial, consumer, medical device manufacturers, or high-end automotive companies. Ideal applications include vision, sensor fusion, and on-device AI/ML in these markets. The low power consumption and small footprint of Efinix’s flagship products make them perfect for surveillance or industrial automation applications.

Efinix customers tend to require a tailored small form-factor FPGA solution that helps eliminate significant R&D costs while still allowing product customization and reconfiguration. The RISC-V and Edge Vision SoC libraries are instrumental for Efinix customers as they help expedite creation of new designs and reduce time to market.

Developers that want a faster path to market with an alternative option to larger FPGA platforms can leverage the significant developer resources and powerful compute capabilities provided by Efinix FPGAs. As a smaller company, Efinix takes a high-touch approach that leads to longer-term relationships and innovative FPGA applications.

Get Started with Efinix

To get started with Efinix FPGAs, take a look at our development kits and developer resources.