An FPGA accelerator is a board or device that uses a field-programmable gate array to run a specific task faster or more efficiently than a general-purpose processor. Instead of executing instructions, the FPGA is configured into a custom circuit for that one algorithm, with its own parallel datapaths and pipelines. Most FPGA accelerators sit beside a host CPU on a PCIe card and take over the heavy part of a workload, such as packet processing, compression, encryption, video or machine learning inference.
If you are interested in high-performance computing, you may have heard of FPGA accelerators. In this post we explain the basics of FPGA technology, how an FPGA speeds up an application, where it beats a CPU or GPU, and where it does not.
Key takeaways
- An FPGA accelerator turns an algorithm into hardware: many operations run in parallel every clock, in a deep pipeline, with no instruction fetch overhead.
- Its strengths are low and predictable latency, efficient handling of streaming data, and the ability to be reprogrammed after deployment.
- Its costs are design effort, lower clock speeds than CPUs or GPUs, and higher power and area than an ASIC doing the same job.
- Most data centre FPGA accelerators are PCIe cards (or cloud instances) programmed through vendor flows such as AMD Vitis or Intel oneAPI, with RTL or high-level synthesis (HLS) underneath.
- An FPGA wins when the workload is a fixed, regular pipeline that a CPU runs poorly and that does not justify a custom chip.
What is an FPGA: a quick recap
FPGA stands for Field-Programmable Gate Array. It is a type of integrated circuit that can be configured by the user to perform specific functions. Unlike CPUs or GPUs, which have fixed architectures and instruction sets, FPGAs are made of logic blocks that can be connected in different ways to implement custom logic circuits. This gives FPGAs a lot of flexibility and adaptability, as they can be reprogrammed to suit different needs.
A modern FPGA contains more than lookup tables and flip-flops. Typical resources are:
- Configurable logic blocks: lookup tables (LUTs), flip-flops and carry chains.
- DSP blocks: hard multiply-accumulate units, the main source of arithmetic throughput.
- Block RAM and UltraRAM: many small on-chip memories that can all be read in the same cycle.
- Hard IP: PCIe controllers, high-speed transceivers, memory controllers, and in some families HBM, processor cores or AI engines.
- Programmable routing: the wiring fabric that joins everything, and the main reason FPGAs are slower and larger than ASICs.
What is an FPGA accelerator
An FPGA accelerator is a device that uses an FPGA to speed up a certain task. For example, it can perform image processing, encryption, machine learning, or data compression. These tasks can be executed faster and more efficiently than on a general-purpose processor because an FPGA can be optimised for the specific algorithm and data type, and can exploit parallelism and pipelining to achieve higher throughput and lower latency.
FPGA accelerators can be either standalone devices or attached to a host system via a PCIe interface. In the latter case, the FPGA acts as a coprocessor that offloads some of the computation from the CPU. The host communicates with the FPGA through a software interface and driver. Common choices are OpenCL (historically the main high-level route on both Xilinx and Intel FPGAs), AMD Vitis with the XRT runtime, Intel oneAPI with SYCL, or a custom protocol over memory-mapped registers and DMA.
Correction: an earlier version of this post listed CUDA as an FPGA interface. CUDA is NVIDIA's programming model for its GPUs and is not used to program FPGAs.
How an FPGA speeds things up
A CPU core runs a loop by fetching, decoding and executing instructions one after another, perhaps a few per clock. An FPGA builds the loop body as a circuit. If the loop needs four multiplies and three adds, the FPGA instantiates four multipliers and three adders, wires them together and registers the result between stages. A new input enters the pipeline every clock and a finished result leaves every clock.
Worked example: a pipelined dot product
The Verilog module below computes a four-element dot product of signed 8-bit vectors. Stage one does the four multiplies in parallel, stage two adds pairs, stage three produces the final sum. Latency is three clocks, but throughput is one full result per clock.
`timescale 1ns/1ps
// 4-lane pipelined dot product: one result per clock after a 3-cycle latency
module dot4 (
input wire clk,
input wire rst_n,
input wire in_valid,
input wire signed [7:0] a0, a1, a2, a3,
input wire signed [7:0] b0, b1, b2, b3,
output reg out_valid,
output reg signed [17:0] y
);
reg signed [15:0] p0, p1, p2, p3; // stage 1: products
reg signed [16:0] s01, s23; // stage 2: pair sums
reg v1, v2;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
v1 <= 1'b0; v2 <= 1'b0; out_valid <= 1'b0;
p0 <= 0; p1 <= 0; p2 <= 0; p3 <= 0; s01 <= 0; s23 <= 0; y <= 0;
end else begin
// stage 1: four multipliers work in parallel
p0 <= a0 * b0; p1 <= a1 * b1; p2 <= a2 * b2; p3 <= a3 * b3;
v1 <= in_valid;
// stage 2: first level of the adder tree
s01 <= p0 + p1; s23 <= p2 + p3;
v2 <= v1;
// stage 3: final add
y <= s01 + s23;
out_valid <= v2;
end
end
endmodule
Note the widths. Two signed 8-bit numbers give a product of up to 16,384 (from -128 x -128), which needs 16 signed bits. Each addition can carry one more bit, so the final sum needs 18 bits. Getting this growth wrong is one of the most common bugs in accelerator datapaths.
Now scale it, with illustrative numbers. Suppose the design is widened to 64 lanes and closes timing at 300 MHz. That is 64 multiplies and 64 adds per clock, or 128 x 300,000,000 = 38.4 billion operations per second, sustained, from a circuit that uses perhaps 64 DSP blocks. A large FPGA has thousands of DSP blocks, so many such pipelines can run side by side. A CPU core at 3 GHz would need around 13 operations per clock, every clock, to match one such pipeline, which is only possible with wide SIMD and perfect data supply.
Advantages of FPGA accelerators
FPGA accelerators have several advantages over other types of accelerators, such as ASICs or DSPs.
- Programmable: they can be updated or modified without changing the hardware. This allows rapid prototyping and testing of new algorithms or applications, and lets deployed systems take bug fixes and new features.
- Reconfigurable: they can be adapted to different scenarios or workloads, and some devices support partial reconfiguration of one region while the rest keeps running. This enables dynamic resource allocation and load balancing.
- Scalable: they integrate easily with other components or systems through standard interfaces such as PCIe and Ethernet, which helps in building heterogeneous computing platforms that combine different types of processors.
- Low, deterministic latency: data flows through a fixed pipeline with no operating system scheduling or cache misses in the path. This is why FPGAs are widely used in network processing and low-latency trading.
- Direct I/O: transceivers on the FPGA can take data straight from a network or sensor and process it before it ever reaches host memory.
Challenges and limitations
FPGA accelerators also have challenges and limitations.
- Design complexity: programming an FPGA requires a high level of skill and specialised tools and languages. The flow involves synthesis, placement, routing, timing closure, verification and debugging, which can be time-consuming and error-prone. Build times of hours for a large device are normal. HLS tools reduce the effort but still need hardware thinking to get good results.
- Power and heat: for the same function, an FPGA usually consumes more power than an ASIC because of the overhead of programmable routing and configuration memory. Compared with a DSP processor the result depends on the workload. A well-pipelined FPGA design can be more energy-efficient than a processor for streaming tasks, while a lightly used FPGA wastes static power. Large accelerator cards need adequate cooling.
- Lower clock speed: FPGA designs typically run at a few hundred MHz, so they win through parallelism, not frequency. Code that is mostly serial will not benefit.
- Memory bandwidth: many accelerators end up limited by how fast data can be moved from DDR or over PCIe, not by the logic. Cards with HBM help, but the host link remains a ceiling.
A frequently cited academic measure of the FPGA overhead is the 2007 study by Ian Kuon and Jonathan Rose, Measuring the Gap Between FPGAs and ASICs (IEEE Transactions on CAD). For logic-only circuits they reported an FPGA needed around 35 times more area, ran roughly 3 to 4 times slower and used around 14 times more dynamic power than a standard-cell ASIC, with the gap narrowing when hard multipliers and memories were used. Those figures are for the process nodes of that time and are best read as orders of magnitude.
FPGA vs CPU vs GPU vs ASIC
| Aspect | CPU | GPU | FPGA | ASIC |
|---|---|---|---|---|
| Flexibility | Highest, any software | High for parallel software | Hardware-level, reprogrammable | Fixed after manufacture |
| Typical clock | 3 to 5 GHz | 1 to 2 GHz | Hundreds of MHz | Set by design, often GHz |
| Latency | Variable | High for small batches | Low and deterministic | Lowest |
| Energy per operation | Highest | Good for dense maths | Good for streaming, custom data widths | Best |
| Development effort | Low | Moderate | High | Highest, plus mask cost |
| Best fit | Control-heavy, irregular code | Large-batch matrix work, AI training | Streaming pipelines, networking, low-latency inference | Very high volume, fixed function |
Where FPGA accelerators are used
- Cloud and data centres: Microsoft's Project Catapult put FPGAs in Bing search servers, described in the ISCA 2014 paper A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services, and later used them for networking and deep learning inference (Project Brainwave). AWS offers FPGA instances (EC2 F1, and F2 from late 2024) for customers to load their own designs.
- Networking and SmartNICs: packet filtering, encryption, and offload of storage and virtual switching.
- Finance: market data handling and order processing where microseconds matter.
- Video and imaging: transcoding, medical imaging, machine vision.
- Genomics and databases: sequence alignment, compression and query filtering.
- ASIC prototyping: large FPGA systems emulate chips before tape-out, a related but different use.
Common mistakes when evaluating an FPGA accelerator
- Comparing kernel speed only and ignoring PCIe transfer time, which can wipe out the gain for small jobs.
- Porting CPU code line by line through HLS without restructuring it for pipelining and on-chip memory.
- Ignoring numeric format: much of the FPGA advantage comes from using exactly the bit width the algorithm needs.
- Underestimating the effort of timing closure and verification on a large device.
FAQ
Is an FPGA accelerator faster than a GPU?
It depends on the workload. GPUs usually win on large-batch dense maths such as AI training. FPGAs often win on latency, on streaming data straight from a network, and on unusual data widths.
Do I need Verilog or VHDL to use an FPGA accelerator?
Not always. HLS lets you describe kernels in C or C++, and vendor libraries provide ready-made accelerators. Getting the best performance still benefits from RTL knowledge.
Can an FPGA be reprogrammed in the field?
Yes. That is the "field-programmable" part. A new bitstream can be loaded to change the function, and partial reconfiguration can update one region at a time.
Why not just build an ASIC?
An ASIC is more efficient but costs far more to design and manufacture and cannot be changed. FPGAs make sense for lower volumes, evolving algorithms, or a fast route to market.
Please let us know what you think in the comments.


Your comments will be moderated before it appears here.