FPGA doesn’t stand for “friendly professional golf association.” It has nothing to do with golf at all. It also doesn’t stand for flip-chip pin grid array—at least not here. It stands for field-programmable gate array and is a piece of hardware.
To understand what an FPGA is, let’s break the name down.
- “Field.” In tech, and in many other industries, “field” is literally “in the field”—or, more clearly, outside of the company. That might mean remote staff or offices, or it might mean other companies, such as channel partners or customers. For FPGAs, it means customers.
- “Programmable” is what it sounds like—capable of being programmed.
- “Gate” is short for “logic gate,” which is a hardware circuit that performs a logical operation via one or more binary inputs and one binary output; in other words, it does something.
- “Array” is a group of elements that form a complete unit.
So, an FPGA is a hardware circuit that can be programmed in the field (by the customer) to carry out one or more logical operations. Taken a step further, FPGAs are integrated circuits, or ICs, which are a set of circuits on a chip—that’s the “array” part. Those circuits, or the array, are a group of programmable logic gates, memory, or other elements.
With a standard chip, say the Intel Curie module in an Arduino board, the chip is fully baked. It can’t be programmed; you get what you get. A user can write software that loads onto the chip and executes functions. That software can then be replaced or deleted, but the hardware chip remains unchanged.
With an FPGA, there is no chip. The user programs the hardware circuit or circuits. The programming can be a single, simple logic gate (an AND or OR function) or one or more complex functions, including functions that, together, act as a comprehensive multi-core processor.
Where, Why, and How FPGAs Are Used
FPGAs are used when complex logic circuitry is ideal and changes at the chip level are likely to be needed later on. Uses for FPGAs cover a wide range of areas—from equipment for video and imaging, to circuitry for computer, auto, aerospace, and military applications, in addition to electronics for specialized processing and more. FPGAs are particularly useful for prototyping application-specific integrated circuits (ASICs) or processors. An FPGA can be reprogrammed until the ASIC or processor design is final and bug-free and before actual manufacturing of the final ASIC begins. Intel itself uses FPGAs to prototype new chips.
FPGAs aren’t restricted to the realm of large manufacturers though. They were previously used only by engineers who specialized in digital hardware design. Today, new tools make them accessible to virtually anyone with development knowledge, including hobbyists. Many FPGAs even come with common components built in, such as clock generators, DRAM controllers, Peripheral Component Interconnect Express (PCIe) controllers, and even whole multi-core microprocessors. Some even come with integrated hard IP, such as memory blocks, calculating circuits, transceivers, protocol controllers, and even CPUs. While these built-in or integrated components are not programmable, they do help shorten overall design time.
To create the logic circuits on an FPGA, engineers or developers use software to design the FPGA’s function. Hardware description language (HDL) is often the language used to define the functions. The developer uses the language to generate a netlist, which is a text description of the circuit and the components that have been designed. The netlist describes how the FPGA gates will connect. The place-and-route process is used to map the netlist to the FPGA architecture. “Place,” in this context, is the process of deciding where to place the circuitry or logic elements. “Route” is the process of determining how to place the wires between the elements. The place-and-route process is typically done with software known as an electronic design automation (EDA) tool.
In the eBook, FPGAs for Dummies, co-authors Andrew Moore and Ron Wilson give a simple FPGA example of a rear-view camera for a car. In the example, a camera might take 250 milliseconds to capture and display an image to the driver. If regulations change to require that the window of time be only 100 milliseconds, the car could require costly and near-impossible alterations if the camera relied on a microprocessor-based solution. With an FPGA though, the new regulation could be met and implemented without new hardware or new processors. Cars in production, unsold cars, and cars already sold could be updated with a simple reprogramming of the FPGA.
As noted, FPGAs aren’t restricted to industrial and enterprise applications. You can learn how to use FPGAs with low-cost hobbyist boards and open-source tools. Development kits are even available that typically include the board, software, reference designs, cables, and hardware. Fpga4fun.com lists 26 projects hobbyists can build, including a music box. Hackaday.io lists 180 more projects.
Pros and Cons of FPGAs
The flexibility to program and/or reprogram an FPGA comes at a price. FPGAs cost more than their non-programmable IC counterparts, such as ASICs. However, compared to the cost of manufacturing a custom ASIC, users still come out ahead unless they need millions of ASICs and know exactly what they want upfront. And like a lot of technologies, prices for FPGAs are dropping over time.
Unlike ASICs, FPGAs are not limited by the number of available processor cores. An FPGA can execute simple functions faster than a microprocessor because there is no CPU involved. Individual functions can run in isolation on an FGPA with other functions also running in parallel without impacting the performance of any function. Almost like mini-virtual machines, FPGAs don’t require an operating system, which minimizes reliability concerns and offers true parallel operation, unlike microprocessors. Additionally, FPGAs:
- Enable rapid prototyping for fast time to market, making them good solutions for digital transformation.
- Have no ASIC fabrication costs or long lead times
- Offer the flexibility to make incremental changes without requiring a new chip
There are different types of FPGAs available, and each offers pros and cons of its own. Static RAM (SRAM) and flash-based FPGAs are not just programmable, they are reprogrammable. SRAM means the FPGA stores logic in static memory and requires a power source. Flash-based FPGAs use non-volatile memory cells and don’t require a power source. Flash-based FPGAs consume less power and require a smaller footprint than SRAM-based FPGAs. One-time programmable (OTP) FPGAs are also available, but once initially programmed, they can’t be reprogrammed.
Keep In Touch with FPGAs and Other Tech Topics
Whether you are an engineer for a manufacturer, working for a small business, or an enthusiastic hobbyist, keep your eyes on FPGAs and other topics of interest by following us and our growing communities on LinkedIn and Twitter.