ofdm implementation in gnu radio

Post on 31-Dec-2015

168 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

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

OFDM Implementation in GNU Radio

Matt Ettus, Thomas W. Rondeau, and Robert McGwier

Wireless@VT Symposium, 2007

OFDM: Basic Principles

Transmitter Flow Graph

Frame Source

SymbolModulation

Scale (1/√N)

Insert Preambles

Add Cyclic Prefix

Known preambles

IFFT

Receive Flow Graph

Channel Filter

FFT

Symbol synchronization

OFDM Preamble

Correlation

Symbol Demodulation

Build Frame and transfer to

higher layer

Signal Acquisition

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.

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

ML PerformanceCorrelation

Peaks

Correlations occur every OFDM symbol

ML PerformanceCorrelation

Peaks

Peaks should occur every FFT length + CP length

ML Performance

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

Histogram of Peak Timing

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

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

PN Sync PerformanceCorrelation

Match FilteredRegen. Peaks

Correlations occur every packet

PN Sync Performance

Regenerating peaks by a known amount

CorrelationMatch FilteredRegen. Peaks

PN Sync Comparison

Noise and multipath affects against a perfect signal

PN Sync Performance

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

Histogram of Peak Timing

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

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

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

Fine Frequency Error from PN Sync

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

Implementation Results

QPSK

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

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

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

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

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

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

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

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

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

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

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

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

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

QAM16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Thank You

Questions?

top related