gr-ofdm_testbed is an out-of-tree (OOT) digital signal processing module for GNU Radio 3.10 designed to prototype, simulate, and deploy Orthogonal Frequency Division Multiplexing (OFDM) physical layers. The module facilitates testing channel estimation methods, frame synchronization, and closed-loop Frequency Division Duplexing (FDD) flow control both in simulation and over-the-air using Software Defined Radios (SDRs).
The signal processing pipelines of the transmitter (Tx) and receiver (Rx) are illustrated below. This block diagram outlines the flow from payload vectorization, baseband mapping, OFDM modulation, RF transmission, baseband demodulation, and the reverse feedback path:
Figure 1: Full-duplex closed-loop OFDM baseband transceiver schematic with bladeRF SDR interface.
The transceiver design is based on the logic from the SDR_NC repository.
- Original System (
gr-s4a): In the parent project's gr-s4a module, the OFDM grid employed block-type pilot distribution. Pilots were assigned to all subcarriers within specific OFDM symbols periodically in time. This arrangement is highly efficient for slow-fading, frequency-flat channels where the channel frequency response remains stationary over multiple symbol intervals. - Modernized System (
gr-ofdm_testbed): To support fast-fading and frequency-selective channels, this module has been redesigned for GNU Radio 3.10 to employ comb-type pilot distribution. Pilots are allocated to dedicated subcarriers across every OFDM symbol. This configuration permits continuous, symbol-by-symbol channel estimation and interpolation, tracking rapid temporal fluctuations of the propagation channel.
Below is a comparison highlighting the grid differences between the block-type and comb-type pilot layouts:
Figure 2: Subcarrier grid allocation representing block-type vs. comb-type pilot placement.
The module provides testbeds for two distinct deployment levels:
- Software-Defined Simulation: Integrates simulated channel models (e.g., AWGN, phase noise, and multipath fading profiles) to evaluate Bit Error Rate (BER) floors and synchronization performance.
- Hardware-in-the-Loop (HIL) Deployment: Targets physical bladeRF SDRs for over-the-air transmission to evaluate RF performance, transceiver impairments, and real-world synchronization accuracy.
- Vectorized Image Streaming: The module includes source blocks (
image_vector_source) designed to read standard test images (e.g.,lena_gray_512.txt), convert them into segmented byte payloads of lengthpacket_size, and stream them. The receiver incorporates a matchingzero_eliminationblock to strip padding zeros and preserve the payload boundaries. - Text / Byte Array Exchange: Provides basic vector-to-stream conversions to facilitate file transfers.
- Implements a closed-loop link layer. The
primary_tx_controlblock at the transmitter schedules payload frames dynamically based on the state of acknowledgment (ACK) vectors returned via the reverse FDD feedback link by the receiver'sreceiver_control_p2pblock.
All experimental setups are located under the examples/ directory:
| Flowgraph | Target Environment | Description |
|---|---|---|
ofdmber.grc |
Simulation | Evaluates baseband Bit Error Rate (BER) curves against varying Eb/N0 levels. |
ofdm.grc / ofdm.py |
Simulation | Base template of the standard GNU Radio OFDM transmitter and receiver pipeline. |
test_BER.grc |
Simulation | Verification tool for the accuracy of custom BER calculation blocks. |
p2p.grc / p2p.py |
HIL (bladeRF) | Unified Point-to-Point transceiver setup with real-time image rendering at the receiver. |
p2p_tx.grc / p2p_RX.grc |
HIL (bladeRF) | Decoupled transmitter and receiver flowgraphs for deployment on separate SDR nodes. |
ofdm_loopback_blade09Tx/Rx |
HIL (bladeRF) | Transceiver loopbacks configured for targeted RF channels. |
- GNU Radio (version 3.10 or newer)
- CMake (version 3.8 or newer)
- Host compiler with C++17 support (GCC >= 8)
# Create build directory
mkdir build
cd build
# Generate build files and compile
cmake ..
make -j$(nproc)
# Install OOT library modules
sudo make install
sudo ldconfig| Module Title | gr-ofdm_testbed |
| Supported GNU Radio | 3.10 |
| License | GPL-3.0 |
| Repository URL | DoHaiSon/gr-ofdm_testbed |
| Project Owner | Do Hai Son |
| Contributors |