ofdm implementation in gnu radio

59
OFDM Implementation in GNU Radio Matt Ettus, Thomas W. Rondeau, and Robert McGwier Wireless@VT Symposium, 2007

Upload: kennan-fowler

Post on 31-Dec-2015

168 views

Category:

Documents


4 download

DESCRIPTION

OFDM Implementation in GNU Radio. Matt Ettus, Thomas W. Rondeau, and Robert McGwier Wireless@VT Symposium, 2007. OFDM: Basic Principles. Transmitter Flow Graph. Receive Flow Graph. Signal Acquisition. Signal Detection. Two methods implemented: Maximum Likelihood - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: OFDM Implementation in GNU Radio

OFDM Implementation in GNU Radio

Matt Ettus, Thomas W. Rondeau, and Robert McGwier

Wireless@VT Symposium, 2007

Page 2: OFDM Implementation in GNU Radio

OFDM: Basic Principles

Page 3: OFDM Implementation in GNU Radio

Transmitter Flow Graph

Frame Source

SymbolModulation

Scale (1/√N)

Insert Preambles

Add Cyclic Prefix

Known preambles

IFFT

Page 4: OFDM Implementation in GNU Radio

Receive Flow Graph

Channel Filter

FFT

Symbol synchronization

OFDM Preamble

Correlation

Symbol Demodulation

Build Frame and transfer to

higher layer

Page 5: OFDM Implementation in GNU Radio

Signal Acquisition

Page 6: OFDM Implementation in GNU Radio

Signal Detection

• Two methods implemented:• Maximum Likelihood

– Correlate with cyclic prefix– J. van de Beek, M. Sandell, P. Ola. Borjesson, “ML

Estimation of Time and Frequency Offset in OFDM Systems,” IEEE Trans. On Signal Processing, vol. 45, no. 7, pp. 1800—1805, July 1997.

• PN Sequence correlation– Transmit known symbol with repetition in the time

domain– T. M. Schmidl and D. C. Cox, “Robust Frequency and

Timing Synchronization for OFDM,” IEEE Trans. Communications, vol. 45, no. 12, pp. 1613—1621, Dec. 1997.

Page 7: OFDM Implementation in GNU Radio

ML Estimation

Delay of FFT Size

Input

Magnitude Squared

Magnitude Squared

conjugate

Moving average filter

Moving average filter

Magnitude Squared

Angle S/H

-

+

Peak Detector

DPLL

NCO

Sampler

Sampled Signals out

Peak to 0

Hold angle for frequency

correction

Delay to CP

Correlate to delayed CP

Gate symbol

Page 8: OFDM Implementation in GNU Radio

ML PerformanceCorrelation

Peaks

Correlations occur every OFDM symbol

Page 9: OFDM Implementation in GNU Radio

ML PerformanceCorrelation

Peaks

Peaks should occur every FFT length + CP length

Page 10: OFDM Implementation in GNU Radio

ML Performance

Missing a peak inside a packet will cause a rotation in versus the other symbols

Histogram of Peak Timing

Page 11: OFDM Implementation in GNU Radio

PN Correlation

K KCP

Repeated Known Symbol in time: ABCDABCD

Create sample in frequency with 0’s in every other bin:

V 0 W 0 X 0 Y 0 Z 0

IFFT

Page 12: OFDM Implementation in GNU Radio

Synchronizer Flow Graph

Delay of FFT Size / 2

Magnitude Squared

conjugate

Moving average filter

Moving average filter

Magnitude Squared

Angle

Input

Angle out

S/H

Moving average filter

(Matched Filter)

-1Peak

DetectorRegenerate

Peaks

SamplerSampled

Signals out

¸

Signal Power Detects edge

Hold angle for frequency

correction

Regenerate for each symbol

Delay first half

Correlate to preamble

Gate symbol

Page 13: OFDM Implementation in GNU Radio

PN Sync PerformanceCorrelation

Match FilteredRegen. Peaks

Correlations occur every packet

Page 14: OFDM Implementation in GNU Radio

PN Sync Performance

Regenerating peaks by a known amount

CorrelationMatch FilteredRegen. Peaks

Page 15: OFDM Implementation in GNU Radio

PN Sync Comparison

Noise and multipath affects against a perfect signal

Page 16: OFDM Implementation in GNU Radio

PN Sync Performance

Differences do not affect this method as much because the rotation is constant in the packet

Histogram of Peak Timing

Page 17: OFDM Implementation in GNU Radio

Frame Detection

• Uses known symbols to correlate and find beginning of frame

• Once correlated, use the known symbols and receive symbols to generate a 1-tap equalizer

• Use the equalizer to correct phase shifts and multipath

Page 18: OFDM Implementation in GNU Radio

ML Frequency ambiguity

Fine Frequency compensation

Frequency

PN Frequency ambiguity

-0.5 0.5-1.5 1.5-2.5 3.5-3.5 2.5

Page 19: OFDM Implementation in GNU Radio

Coarse Frequency compensationcorrected in frame detector

Frequency

Shifted full FFT bin

-0.5 0.5-1.5 1.5-2.5 3.5-3.5 2.5

Page 20: OFDM Implementation in GNU Radio

Fine Frequency Error from PN Sync

Frequency error calculated once per packet; does not fix for clock offset drift throughout packet.

Page 21: OFDM Implementation in GNU Radio

Implementation Results

Page 22: OFDM Implementation in GNU Radio

QPSK

Page 23: OFDM Implementation in GNU Radio

QPSK Repeated Preamble (1/13)FFT length=512, Occupied Tones=200, CP Length=128

Page 24: OFDM Implementation in GNU Radio

QPSK Known Preamble 1 (2/13)FFT length=512, Occupied Tones=200, CP Length=128

Page 25: OFDM Implementation in GNU Radio

QPSK Known Preamble 3 (3/13)FFT length=512, Occupied Tones=200, CP Length=128

Page 26: OFDM Implementation in GNU Radio

QPSK Data (4/13)FFT length=512, Occupied Tones=200, CP Length=128

Page 27: OFDM Implementation in GNU Radio

QPSK Data (5/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 28: OFDM Implementation in GNU Radio

QPSK Data (6/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 29: OFDM Implementation in GNU Radio

QPSK Data (7/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 30: OFDM Implementation in GNU Radio

QPSK Data (8/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 31: OFDM Implementation in GNU Radio

QPSK Data (9/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 32: OFDM Implementation in GNU Radio

QPSK Data (10/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 33: OFDM Implementation in GNU Radio

QPSK Data (11/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 34: OFDM Implementation in GNU Radio

QPSK Data (12/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 35: OFDM Implementation in GNU Radio

QPSK Repeated Preamble (13/13) FFT length=512, Occupied Tones=200, CP Length=128

Page 36: OFDM Implementation in GNU Radio

QAM16

Page 37: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 38: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 39: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 40: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 41: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 42: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 43: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 44: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 45: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 46: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 47: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 48: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 49: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 50: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 51: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 52: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 53: OFDM Implementation in GNU Radio

QAM16 Repeated Preamble (1/1) FFT length=512, Occupied Tones=200, CP Length=128

Page 54: OFDM Implementation in GNU Radio

Profiling Support

• Use OProfile

• Collects amount of processing done by each component of a process

• Used to tune performance

• Started at 100 kHz bandwidth• 1.5 hours of profiling increased to 600 kHz

Page 55: OFDM Implementation in GNU Radio

Profiling Support – QPSK Receiver

% symbol name29.2 .loop211.5 .loop26.05 gr_fast_atan2f5.14 gr_fft_filter_ccc::work4.31 gr_single_threaded_scheduler::main_loop4.10 gr_ofdm_correlator3.80 .cleanup3.15 gr_multiply_cc::work2.44 gr_fir_ccf_simd::filter1.81 gr_fir_fff_simd::filter

Page 56: OFDM Implementation in GNU Radio

Profiling Support – QPSK Receiver

1.7259 gr_divide_ff::work1.5111 gr_frequency_modulator_fc::work1.4963 gr_block_detail::input1.4815 gr_peak_detector_fb::work1.3111 gr_ofdm_correlator::coarse_freq_comp1.2667 .loop11.0593 gr_complex_to_mag_squared::work1.0222 .loop10.9556 gr_fft_vcc::work0.8963 gr_ofdm_sampler::general_work0.8593 gr_add_const_cc::work0.8593 gr_ofdm_correlator::general_work

Page 57: OFDM Implementation in GNU Radio

GNU Radio Interface

• Command-line options allow selection of– FFT bins (any value, odd or even)– Occupied bins (must be < fft bins)– Cyclic prefix length (< fft bins)

• Flow graphs are built at runtime

• Should tie directly in with current method to use an PHY/MAC interface card

./benchmark –R A –f 2411M --fft-length=512 \--occupied-tones=300 --cp-length=128

Page 58: OFDM Implementation in GNU Radio

Future Work and Goals

• Hit 1 MHz in receiver

• More modulations

• Implement a variation of the PN sync

• Implement adaptive equalizer over the entire packet

• SINR calculation

• Forward Error Correction

• Performance tuning

Page 59: OFDM Implementation in GNU Radio

Thank You

Questions?