OFDM Carrier Frequency Recovery

3 views (last 30 days)
re ib
re ib on 11 Oct 2012
I used your example " syncCarrierFreqMSKSignalRecovery" to construct my model and apply it for QPSK system,it works . but when i applied it to OFDM-QPSK , it doesn't work.
Your matlab code for Single carrier system is
freqOffset = 0;
phaseOffset = 0;
hPFO = comm.PhaseFrequencyOffset('FrequencyOffset', freqOffset, ... 'PhaseOffset', phaseOffset, ... 'SampleRate', samplesPerSymbol/Ts);
rx_signal1l = step(hPFO,tx_signal);
rx_signal = rx_signal1l.';
hDelayInstFreq = dsp.Delay;
hMovAve = dsp.DigitalFilter('TransferFunction','FIR (all zeros)', ... 'Numerator', ones(1,100)/100);
hCumSum = dsp.CumulativeSum('Dimension','Channels (running sum)', ... 'FrameBasedProcessing', true);
%%Calculate the frequency shift estimate
P = 2;
currInstFreq = rx_signal.^(2*P);
prevInstFreq = step(hDelayInstFreq, currInstFreq);
freqShiftEst1 = currInstFreq .* conj(prevInstFreq);
% Average over 1 frame
freqShiftEst = mean(freqShiftEst1);
% Moving average over 100 frames
freqShiftEst = step(hMovAve, freqShiftEst);
freqShiftEst = angle(freqShiftEst) / (2*P);
% Convert digital frequency to Hertz
freqShiftEst = freqShiftEst / (2*pi*Ts);
%%Apply frequency correction
freqCorr = repmat(-freqShiftEst*Ts, samplesPerFrame, 1);
% Calculate cumulative phase shift
freqCorr = step(hCumSum, freqCorr);
% Apply frequency shift correction
rxSym = rx_signal .* exp(1i*2*pi*freqCorr);
Kindly advice , how to modify the previous code to use with OFDM System
  3 Comments
Walter Roberson
Walter Roberson on 15 Oct 2012
Who is "your" in "your example" ?
Please expand on "does not work" ?
re ib
re ib on 20 Oct 2012
There is an example in Matlab help examples named "syncCarrierFreqMSKSignalRecovery" that deals with frequency offset , AWGN for QPSK. i want to used it to make OFDM- QPSK based. how can i modify this example?

Sign in to comment.

Answers (1)

ofdma_matlab
ofdma_matlab on 20 Oct 2012
hPFO = comm.PhaseFrequencyOffset('FrequencyOffset', freqOffset, ... 'PhaseOffset', phaseOffset, ... 'SampleRate', samplesPerSymbol/Ts);
can you please explain the line above !!!!! what do you mean by 'comm.PhaseFrequencyOffset' ? lemme understand it first .
thanks in advance
  1 Comment
re ib
re ib on 20 Oct 2012
In Matlab R2011a , it uses this formula to represent Frequency offset behaves like:
yt = xt.* exp(2*j*pi*F_Offset(x)/fs*[0:length(xt)-1]);
with reference:
and it works probably for QPSK not for OFDM QPSK

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!