MISO-OFDM-Matlab-Core

# MIMO-OFDM SDR **802.11a-based MIMO-OFDM implementation over USRP hardware**
[![Open in MATLAB Online](https://www.mathworks.com/images/responsive/global/open-in-matlab-online.svg)](https://matlab.mathworks.com/open/github/v1?repo=javadibrahimli/MIMO-OFDM-Matlab-Core)   [![MATLAB](https://img.shields.io/badge/MATLAB-R2025b-orange?logo=mathworks&logoColor=white)](https://www.mathworks.com) [![IEEE 802.11a](https://img.shields.io/badge/Standard-IEEE%20802.11a-003087?logo=ieee&logoColor=white)](https://standards.ieee.org) [![Status](https://img.shields.io/badge/Status-In%20Progress-yellow)]() [![Hardware](https://img.shields.io/badge/Hardware-Tested-brightgreen?logo=ieee&logoColor=white)]()
![Block Diagram](/MISO-OFDM-Matlab-Core/figures/block-diagram.png)

Hardware

![Hardware](/MISO-OFDM-Matlab-Core/figures/devices.png) *NI USRP E310 (Tx) · USRP B200mini (Rx) · Custom antenna*

Overview

This project implements a complete MISO 2×1 OFDM baseband stack in MATLAB, targeting real-time over-the-air transmission on NI USRP E310 (TX) and USRP B200 (RX) platforms.

The system implements Alamouti Space-Frequency Block Coding (SFBC) with 802.11a-compliant preambles, Schmidl–Cox packet detection, fractional CFO correction, L-LTF fine timing, and pilot-based per-symbol channel tracking — all running over real hardware.


System Parameters

Parameter Value
FFT Size 64
Cyclic Prefix 16 samples (25%)
Subcarrier Plan 48 data + 4 pilots + 1 DC + 11 guard (802.11a)
Modulation QPSK — Gray-coded
FEC Rate-1/2 Convolutional (K=7, polynomials 133/171), Viterbi decoding
Interleaving Stride-7 bit interleaver
Preamble L-STF (160 samples, TX1 only) + L-LTF (160 samples, frequency-orthogonal)
Center Frequency 400 MHz
Sample Rate 1 MHz
TX Hardware NI USRP E310 (2 channels)
RX Hardware USRP B200

Repository Structure

miso/
├── config.m                   — Single source of truth for all system parameters
├── miso_tx_usrp.m             — Transmitter: FEC → SFBC → OFDM → USRP E310
├── reciever_record.m          — IQ capture from USRP B200
│
├── packet_detect.m            — Schmidl–Cox coarse packet detection
├── CFO_sync.m                 — Fractional CFO estimation and correction
├── exact_start.m              — L-LTF matched-filter fine timing
├── miso_rx.m                  — Channel estimation + Alamouti combining + Viterbi
│
├── run_from_usrp.m            — Full RX pipeline: live B200 capture → decode
├── run_from_file.m            — Full RX pipeline: pre-recorded .mat → decode
│
├── raw_bits.mat               — Reference bit sequence (TX/RX ground truth)
└── LLTF.mat                   — L-LTF time-domain reference sequence

MISO Pipeline

The miso/ module runs a four-stage receiver chain after capture:

miso_tx_usrp.m          → transmits continuously over USRP E310 (2 TX)
        ↓  (over the air)
reciever_record.m        → captures IQ samples from USRP B200

packet_detect.m          → Schmidl–Cox metric, detects all packet boundaries
        ↓
CFO_sync.m               → L-STF autocorrelation → fractional CFO correction
        ↓
exact_start.m            → L-LTF matched filter → fine LSTF/LLTF timing
        ↓
miso_rx.m                → L-LTF channel estimation (TX1/TX2 frequency-orthogonal)
                            pilot-based per-symbol tracking
                            Alamouti SFBC MRC combining
                            QPSK demod → deinterleave → Viterbi → BER

To run the full pipeline:

% Option 1 — live capture from B200 (transmitter must be running)
run('miso/run_from_usrp.m')

% Option 2 — process a pre-recorded capture
run('miso/run_from_file.m')   % opens file picker, or set capture_file at top

Frame Structure

![Frame Structure](/MISO-OFDM-Matlab-Core/results/mimo-2x1-tx.jpg) *TX frame: L-STF (TX1 only) | L-LTF (frequency-orthogonal TX1/TX2) | Data × 50 symbols*

Results

![BER Performance](/MISO-OFDM-Matlab-Core/results/mimo-2x1-rx.jpg) *BER vs SNR — 2Tx-1Rx Alamouti SFBC under Rayleigh fading*

Prerequisites


Roadmap


References

[1] S. Cho, J. Kim, W. Y. Yang, and C. G. Kang, MIMO-OFDM Wireless Communications with MATLAB. John Wiley & Sons, 2010.

[2] A. M. Wyglinski, R. Getz, T. Collins, and D. Pu, Software-Defined Radio for Engineers. Artech House, 2018.

[3] IEEE, “IEEE Std 802.11a/D7.0-1999, Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications: High Speed Physical Layer in the 5 GHz Band,” IEEE Standard, Institute of Electrical and Electronics Engineers, 1999.

[4] M. A. Youssef and A. Mouhsen, “Performance improvement for vehicular communications using Alamouti scheme with high mobility,” Journal of Telecommunications and Information Technology, vol. 81, pp. 47–56, Sep. 2020.

[5] S. Alamouti, “A simple transmit diversity technique for wireless communications,” IEEE Journal on Selected Areas in Communications, vol. 16, no. 8, pp. 1451–1458, 1998.

[6] T. Schmidl and D. Cox, “Robust frequency and timing synchronization for OFDM,” IEEE Transactions on Communications, vol. 45, no. 12, pp. 1613–1621, 1997.


Contributors


Javad Ibrahimli

Kerem Karadeniz