DSPRelated.com
Forums

OFDM timing synchronization

Started by XYZ April 10, 2010
Hi,

I've been struggling with OFDM timing synchronization using Schmidl 
algorithm for some time but I can't figure out how to find the sample at 
which the symbol starts. Authors seem to have the same problem but 
apparently they don't mention how to deal with it -- or is it just me 
not understanding it?

The timing metric shows me where to sample (I actually only use P metric 
because AGC term R gives false peaks for non-training symbols) and I 
sometimes get my symbols circularly shifted. This happens when maximum 
of the metric is slightly off by one or two samples.

For example after ifft of the first training symbol I transmit:

    first half    second half    cyclic prefix
    1 2 3 4 5      1 2 3 4 5       1  2  3
----------------------------------------------->
    0 1 2 3 4      5 6 7 8 9      10 11 12        sample number N


but the optimal timing point is for N=1. Knowing that useful part of 
OFDM symbol is 10 samples I take 10 samples starting from the second one 
which gives

   2 3 4 5   1 2 3 4 5   1

This sequence carries the same information but circularly shifted and 
performing fft on it does not give what was put into ifft at the 
transmitter.

How can I find out that a shift occured and by how many samples? I can't 
simply try all possible shifts to find the correct offset because 
subcarriers are altered in the channel and I need to know this correct 
offset within the symbol to perform channel estimation by 
(circshift(symb_received,n) ./ symb_expected)

I also tried to investigate Park algorithm that gives very sharp metric. 
Authors say that the proposed preamble is of the form Ppro = [C D C* D*] 
and it is possible to generate this pattern by transmittng a PN sequence 
of BPSK points on even frequencies and zeros on odd frequencies. So for 
example
   s = [1 0 1 0 -1 0 1 0 -1 0 -1 0 1 0 1 0] should work but after ifft 
it simply gives Ppro2 = [C D C D] -- no conjugates in the second half of 
the symbol. I wouldn't even expect it to yield something else. But then 
how to generate symbol of the form [C D C* D*]?

Alternatively, please recommend another algorithms I could try. My 
channel is dispersive.

Thanks!
>Hi, > >I've been struggling with OFDM timing synchronization using Schmidl >algorithm for some time but I can't figure out how to find the sample at >which the symbol starts. Authors seem to have the same problem but >apparently they don't mention how to deal with it -- or is it just me >not understanding it? > >The timing metric shows me where to sample (I actually only use P metric >because AGC term R gives false peaks for non-training symbols) and I >sometimes get my symbols circularly shifted. This happens when maximum >of the metric is slightly off by one or two samples. > >For example after ifft of the first training symbol I transmit: > > first half second half cyclic prefix > 1 2 3 4 5 1 2 3 4 5 1 2 3 >-----------------------------------------------> > 0 1 2 3 4 5 6 7 8 9 10 11 12 sample number N > > >but the optimal timing point is for N=1. Knowing that useful part of >OFDM symbol is 10 samples I take 10 samples starting from the second one >which gives > > 2 3 4 5 1 2 3 4 5 1 > >This sequence carries the same information but circularly shifted and >performing fft on it does not give what was put into ifft at the >transmitter. > >How can I find out that a shift occured and by how many samples? I can't >simply try all possible shifts to find the correct offset because >subcarriers are altered in the channel and I need to know this correct >offset within the symbol to perform channel estimation by >(circshift(symb_received,n) ./ symb_expected) > >I also tried to investigate Park algorithm that gives very sharp metric. >Authors say that the proposed preamble is of the form Ppro = [C D C* D*] >and it is possible to generate this pattern by transmittng a PN sequence >of BPSK points on even frequencies and zeros on odd frequencies. So for >example > s = [1 0 1 0 -1 0 1 0 -1 0 -1 0 1 0 1 0] should work but after ifft >it simply gives Ppro2 = [C D C D] -- no conjugates in the second half of >the symbol. I wouldn't even expect it to yield something else. But then >how to generate symbol of the form [C D C* D*]? > >Alternatively, please recommend another algorithms I could try. My >channel is dispersive. > >Thanks! >
Both Schmidl and Park algorithms assume the AWGN channel. The property of two identical symbols is destroyed by the dispersive channel. A better approach is to compute the cross correlation between the received signals and the preamble, but this approach increases the complexity of frame synchronization.