From: XYZ on
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!
From: Frank_os on
>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.