Software Defined Radio SDR Architecture Informational

What is the role of the FPGA in a software defined radio and what processing is typically done there?

The FPGA (Field-Programmable Gate Array) in a software defined radio serves as the high-speed, real-time signal processing engine that bridges the gap between the high data rate output of the ADC and the limited processing bandwidth of the host CPU. The FPGA performs computationally intensive, latency-critical processing that must operate at the full ADC sample rate (typically 100 MSa/s to 3+ GSa/s), including: digital down-conversion (DDC, which frequency-shifts the desired signal to baseband by multiplying with a numerically controlled oscillator and applies decimation filtering to reduce the data rate), channelization (extracting one or more narrowband channels from the wideband digitized spectrum using polyphase filter banks or per-channel DDC), sample rate conversion and resampling, pulse detection and triggering, initial spectral analysis (FFT computation), digital predistortion for transmitters, interpolation and digital up-conversion (DUC) for the transmit path, and interface management (packetizing the processed data for transfer to the host over USB, Ethernet, or PCIe). Without the FPGA, the host CPU would need to process the raw ADC data at full sample rate, which is impractical for high-bandwidth systems. For example, a 200 MSa/s 14-bit ADC produces 2.8 Gbps of raw data. The FPGA's DDC can reduce this to a 1 MHz channel at 16-bit, outputting only 32 Mbps, a 90x data rate reduction that the host CPU can easily handle.
Category: Software Defined Radio
Updated: April 2026
Product Tie-In: SDR Platforms, ADCs, FPGAs

FPGA Processing in Software Defined Radio Systems

The FPGA is often called the "digital front end" of the SDR. It performs the functions that are too fast for software but too flexible for fixed-function ASICs. Modern SDR FPGAs range from small devices (Xilinx Artix-7, Intel Cyclone V) in low-cost platforms to large devices (Xilinx Kintex UltraScale+, Intel Stratix 10) in high-performance systems.

Core FPGA Functions

  • Digital Down-Converter (DDC): A numerically controlled oscillator (NCO) generates a complex sinusoid at the desired center frequency. Multiplying the ADC samples by this sinusoid shifts the desired signal to baseband. A cascaded integrator-comb (CIC) filter then decimates the sample rate by 10-1000x, followed by compensation FIR filters for passband flatness
  • Channelizer: For multi-channel receivers, a polyphase filter bank (PFB) or multiple parallel DDCs extract many narrowband channels simultaneously. A 200 MHz band can be split into hundreds of narrowband channels in real-time
  • FFT engine: Real-time FFT computation for spectrum analysis, OFDM processing, or spectral monitoring. Modern FPGAs can compute 4096-point FFTs at rates exceeding 100 million FFTs/second
  • Digital Up-Converter (DUC): The transmit-path inverse of DDC. Interpolates the baseband signal from the host, shifts it to the desired output frequency, and drives the DAC at full sample rate
  • Data formatting: Packetizes the processed data with timestamps, metadata, and flow control for streaming to the host via GbE, 10 GbE, USB 3.0, or PCIe

FPGA vs CPU vs GPU Processing

FPGA: fixed-latency, deterministic, parallel processing of streaming data at wire speed. Best for DDC, channelization, initial filtering. CPU: flexible, sequential processing of reduced-rate data. Best for demodulation, protocol processing, user interface. GPU: massively parallel floating-point processing. Best for batch signal processing (large FFTs, correlation, machine learning inference). Modern SDR systems use all three in a heterogeneous processing pipeline.

FPGA Processing Performance
DDC data rate reduction: R_out = R_in / decimation_factor
Example: 200 MSa/s input, decimation = 200: R_out = 1 MSa/s
FPGA DSP resources: N_multipliers needed ~ N_DDC x (CIC_order + FIR_taps)
FFT processing rate: T_FFT = N_points / f_clock x pipeline_stages
4096-pt FFT at 250 MHz clock: ~16 us per FFT = 62,500 FFTs/s
Common Questions

Frequently Asked Questions

Can I use an SDR without an FPGA?

Yes, for low-bandwidth applications. Low-cost SDR dongles (RTL-SDR) use a fixed-function ASIC instead of an FPGA, which limits flexibility but reduces cost. For narrow bandwidth signals (< 2 MHz), the raw ADC data can be streamed directly to the host CPU for software processing. GNU Radio and similar frameworks can perform DDC and demodulation in software for data rates up to a few MSa/s on a modern laptop.

What FPGA size is needed for a typical SDR?

A basic single-channel SDR (one DDC, modest filter size) fits in a small FPGA with 50K logic cells and 100 DSP slices (Xilinx Artix-7 35T or similar). A multi-channel receiver with FFT and channelizer requires a mid-range FPGA (200K+ logic cells, 700+ DSP slices, Kintex-7 or Kintex UltraScale). Military/SIGINT systems with many channels and complex processing use high-end FPGAs (Virtex UltraScale+ or Stratix 10) with 5000+ DSP slices.

Is FPGA programming difficult for SDR?

FPGA development for SDR is significantly more complex than software development. VHDL/Verilog RTL design requires hardware engineering expertise. However, the SDR ecosystem has made this more accessible through: vendor-provided IP cores (DDC, DUC, FFT from Xilinx/AMD and Intel), open-source FPGA firmware (OpenCPI, USRP FPGA code), high-level synthesis tools (Vivado HLS, Intel HLS) that compile C/C++ to FPGA, and MATLAB/Simulink HDL Coder that generates FPGA code from signal processing models.

Need expert RF components?

Request a Quote

RF Essentials supplies precision components for noise-critical, high-linearity, and impedance-matched systems.

Get in Touch