Skip to content

javadibrahimli/MISO-OFDM-Matlab-Core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MIMO-OFDM SDR

802.11a-based MIMO-OFDM implementation over USRP hardware


Open in MATLAB Online   MATLAB IEEE 802.11a Status Hardware


Block Diagram


Hardware

Hardware 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 TX frame: L-STF (TX1 only) | L-LTF (frequency-orthogonal TX1/TX2) | Data × 50 symbols


Results

BER Performance BER vs SNR — 2Tx-1Rx Alamouti SFBC under Rayleigh fading


Prerequisites

  • MATLAB R2023b or later
  • Communications Toolbox
  • Signal Processing Toolbox
  • Communications Toolbox Support Package for USRP Radio (hardware only)

Roadmap

  • Alamouti SFBC transmitter (USRP E310, 2 channels)
  • IQ capture (USRP B200)
  • Schmidl–Cox packet detection (multi-packet)
  • Fractional CFO estimation and correction
  • L-LTF fine timing synchronization
  • Frequency-orthogonal channel estimation (TX1/TX2 separation)
  • Pilot-based per-symbol channel tracking
  • Alamouti SFBC combining + Viterbi decoding
  • End-to-end automated pipeline (run_from_usrp / run_from_file)
  • Over-the-air BER measurement and validation
  • STO correction

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

About

A MATLAB-based MIMO-OFDM baseband DSP engine with SDR support, developed as a term project for EHB 431E at Istanbul Technical University.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages