FPGA – A Strategic Asset

Field Programmable Gate Arrays (FPGAs) are an indispensable building block in many of today’s complex systems. They are found in aerospace applications, medical devices, data centers, and IoT devices. There are even FPGAs on the surface of Mars in the rovers Spirit and Opportunity.

A question that frequently arises is: when is it best to implement a feature in an FPGA, and when is it better to perform the function in software or hardware? This question can be difficult to answer because FPGAs are capable, in theory, of performing any digital function provided there’s enough space on the FPGA. But an FPGA may or may not be the most cost-effective and schedule-smart way to implement your design. When we approach a project, we evaluate the options for that specific application to make the best choice for that project.

As a general guide, some good applications for FPGAs are:

  • Hardware Acceleration: An FPGA can work alongside a processor to offload complex math functions, control loops, or other cycle-intensive inner-loop activities.
  • Highly Parallel Computing: FPGAs’ on-board hardware resources such as multipliers and distributed memory make them very fast at computing mathematical functions that benefit from deep pipelines and a high degree of parallelism. This capability is widely appreciated in signal processing, image processing, and even high-frequency trading.
  • Data Aggregation: an FPGA’s parallelism makes it a good choice for aggregating data to and from many peripherals or for moving blocks of data. An FPGA can continuously read low-speed data from dozens or even hundreds of sensors to pass along to a CPU, or it can work at higher speeds as a custom network switch or as a DMA engine to move blocks of data. Newer FPGAs directly support high speed interfaces such as PCIe, DDR3, and 10GBPS Ethernet, which eases system compatibility in such applications.
  • Glue Logic: One of the oldest uses for FPGAs is in implementing small (or not so small) amounts of logic to interface between off-the-shelf chips. This may save the need to make a custom ASIC, and reconfigurability allows the logic to be changed even after hardware is manufactured to handle unexpected behaviors of the off-the-shelf chips, to fix bugs, or to add features.
  • ASIC emulation: FPGAs are commonly used to emulate custom ASICs to prove the design before committing the time and NRE to fabricate silicon.
  • Up and Coming Uses: FPGAs are finding places in some of the newest applications: FPGA hardware can implement full or partial neural nets for AI and Deep Learning applications. FPGAs are also finding their way into autonomous driving for signal processing, for control functions, and for image recognition. Amazon AWS and Microsoft are both installing FPGAs into their cloud servers.

At Pensar, our FPGA engineering team is tightly coupled with the software and hardware engineering and we work together to allocate each system function to software, hardware, or FPGA as is best for the product and schedule rather than as an afterthought.  Our experience with a wide variety of products has taught us that this multidisciplinary approach makes for the best products and the smoothest development cycles.