Forum: GNU Radio Re: OFDM demodulation problem / example video

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C369ebbe1655201988e376af57460f23?d=identicon&s=25 Achilleas Anastasopoulos (Guest)
on 2006-04-04 17:51
(Received via mailing list)
Jens,

I got interested in this discussion and looked at the
standard briefly and at your matlab code.
I have a couple of initial points; I will spend more time sometime this
week on your code:

1) where in the standard it says that this is pi/4 DQPSK ?
I only saw that the modulation used is DQPSK.

2) You have done frequency correction manually: did you do this by
looking at the DC subcarrier (no power transmitted here) in the
received signal prior to OFDM demod?
Frequency synchronization in OFDM is very crucial, because the OFDM
symbol rate is small! To see why, try to understand the effect of a
small frequency error at the output of the FFT demodulator.

3) You have found the beginning of the frame manually. In your matlab
code you posted there is a variable  "start_resamp" that indicates this.
How do you know that the begining of frame is not BETWEEN two samples?
in other words there is no fine timing synchronization. I wonder what
the effect of a small timing error is at the output of the FFT
demodulator.

Achilleas
3d1bbca20dabfeca5cce1687c1e70660?d=identicon&s=25 Jens Elsner (Guest)
on 2006-04-04 18:40
(Received via mailing list)
Achilleas,

thanks for taking the time. My goal is to implement COFDM in gnuradio,
DAB is a nice start.

To your points:

> I got interested in this discussion and looked at the
> standard briefly and at your matlab code.
> I have a couple of initial points; I will spend more time sometime this
> week on your code:
>
> 1) where in the standard it says that this is pi/4 DQPSK ?
> I only saw that the modulation used is DQPSK.
Page 161, 14.7. "pi/4 shift DQPSK" (standard ETSI EN 300 401 V1.4.1)

> 2) You have done frequency correction manually: did you do this by
> looking at the DC subcarrier (no power transmitted here) in the
> received signal prior to OFDM demod?
Yes. As can be seen in the code, I used frequency domain correlation
with the pilot symbol. Works perfectly and can also be automated.
There are a lot of papers on frequency offset estimation in OFDM.

> Frequency synchronization in OFDM is very crucial, because the OFDM
> symbol rate is small! To see why, try to understand the effect of a
> small frequency error at the output of the FFT demodulator.
Of course - I need to hit the subcarriers within a few Hz. But that
works, as can be seen from the demodulated results.

> 3) You have found the beginning of the frame manually. In your matlab
> code you posted there is a variable  "start_resamp" that indicates this.
> How do you know that the begining of frame is not BETWEEN two samples?
> in other words there is no fine timing synchronization. I wonder what
> the effect of a small timing error is at the output of the FFT demodulator.
Time sync is not a problem in OFDM - the guard interval takes care of
that. Nice property. Try playing along with the "start_resamp" value -
it will work for an offset up to about 504 (this is the length of the
guard
interval).

Jens
3d1bbca20dabfeca5cce1687c1e70660?d=identicon&s=25 Jens Elsner (Guest)
on 2006-04-04 19:05
(Received via mailing list)
I guess I was a little bit too quick with my answer...

In more detail:

> 2) You have done frequency correction manually: did you do this by
> looking at the DC subcarrier (no power transmitted here) in the
> received signal prior to OFDM demod?
> Frequency synchronization in OFDM is very crucial, because the OFDM
> symbol rate is small! To see why, try to understand the effect of a
> small frequency error at the output of the FFT demodulator.
The fractional offset (0.35) was found manually by look at the
cross-correlation in the frequency domain and taking

df = (left_of_max - right_of_max) / (left_of_max+right_of_max).

Should be correct, shouldn't it?

> 3) You have found the beginning of the frame manually. In your matlab
> code you posted there is a variable  "start_resamp" that indicates this.
> How do you know that the begining of frame is not BETWEEN two samples?
> in other words there is no fine timing synchronization. I wonder what
> the effect of a small timing error is at the output of the FFT demodulator.

I didn't quite understand what you are saying until I though about it:
This should be equivalent to a small modulation in the frequency domain?

I just simulated that by:

% simulate fractional offset
d_resamp = d_resamp .* exp(j*linspace(0,2*pi*0.1,length(d_resamp)).');

No effect - after all I did resampling before.

Jens
Ce36ad4142338c14c9b260303e847f71?d=identicon&s=25 Robert McGwier (Guest)
on 2006-04-04 19:50
(Received via mailing list)
Jens Elsner wrote:
> that. Nice property. Try playing along with the "start_resamp" value -
> it will work for an offset up to about 504 (this is the length of the guard
> interval).
>
> Jens
>
>
>


AHA!  Now we are getting some place.  This last paragraph was very
revealing.  Time sync is not a problem because of the guard interval BUT
varying depth in to the guard interval will IMMEDIATELY translate into
phase shifts on each and every bin that will vary with frequency and
depth into the guard interval.  I am sorry I have not had time to spend
on the code but I have a lot going at the moment.   There is simply no
such thing as a free lunch anywhere anytime, not even with OFDM.

Bob


--
AMSAT VP Engineering. Member: ARRL, AMSAT-DL, TAPR, Packrats,
NJQRP/AMQRP, QRP ARCI, QCWA, FRC. ARRL SDR Wrk Grp Chairman
Laziness is the number one inspiration for ingenuity.  Guilty as
charged!
2bd0af6e0e3efc5af13b7650c955543b?d=identicon&s=25 Prateek Dayal (Guest)
on 2006-04-05 06:11
(Received via mailing list)
On 4/4/06, Robert McGwier <rwmcgwier@comcast.net> wrote:
> >
>
>
> AHA!  Now we are getting some place.  This last paragraph was very
> revealing.  Time sync is not a problem because of the guard interval BUT
> varying depth in to the guard interval will IMMEDIATELY translate into
> phase shifts on each and every bin that will vary with frequency and
> depth into the guard interval.  I am sorry I have not had time to spend
> on the code but I have a lot going at the moment.   There is simply no
> such thing as a free lunch anywhere anytime, not even with OFDM.
>
> Bob


Yes, I think this is a critical step. small letters are time domain and
capital letters are frequency domain.

x(n) -----------> X(k)
         FFT

x(n-n') ---------> e^(j*2*pi*n'*k/N) * X(k)
            FFT

for one OFDM symbol,  0 <= k <= N-1

Therefore as you can see the phase shift will increase with k. For k=0,
there will be no phase shift and for k=N-1, there will be a phase shift
of
almost 2*pi*n'. Therefore for a QPSK, when you map symbols to bits,
there
will be more errors for higher subcarrier (index).  You have to start
sampling exactly after the cyclic prefix ends. In general if your timing
error is towards cyclic prefix, you effectively cyclic shift your data.
In
case your shift is away from the end of the cyclic prefix, you take some
samples from next symbol and introduce ISI. You need to see how this
will
effect you in DQPSK case. Please look at this link for relevant papers

http://www.cds.caltech.edu/~yasi/publications.html

Also for frequency offset, what really matters is not the frequency
offset
in Hz, but the relative frequency offset delta_f/F_s, where F_s is the
subcarrier spacing. Please look at

*BER sensitivity of OFDM systems to carrier frequency offset andWiener
phase
noise*
Pollet, T.; Van Bladel, M.; Moeneclaey, M.
Communications, IEEE Transactions on
Volume 43, Issue 234, Feb/Mar/Apr 1995 Page(s):191 - 193
Digital Object Identifier   10.1109/26.380034

In general if your relative frequency offset is .01 or less, I think you
will not be affected much. But again I am not too sure for DQPSK. Again
QAM
is more sensitive to these errors than QPSK.

Please correct me if I am wrong somewhere. I am sharing what I have
recently
learnt about these things ....

Regards
Prateek Dayal


--
Ce36ad4142338c14c9b260303e847f71?d=identicon&s=25 Robert McGwier (Guest)
on 2006-04-05 06:17
(Received via mailing list)
Prateek Dayal wrote:
> Also for frequency offset, what really matters is not the frequency
> In general if your relative frequency offset is .01 or less, I think
> you will not be affected much. But again I am not too sure for DQPSK.
> Again QAM is more sensitive to these errors than QPSK.
>
> Please correct me if I am wrong somewhere. I am sharing what I have
> recently learnt about these things ....
>
> Regards
> Prateek Dayal
>
>

Thank you very much for the reference.   This was a very nice link to
Mostofi's work.  The following paper is also pertinent to Jen's thinking
on the guard interval offset being irrelevant.  It is not of course:

*Y. Mostofi*, D. Cox and A. Bahai, "Effect of Timing Synchronization
Errors on Pilot-aided Channel Estimation in OFDM: Analysis and
Solution," /Proceedings of 5^th IEEE International Symposium on Wireless
Personal Multimedia Communications (WPMC),/ Honolulu, Hawaii, Oct. 2002,
pp. 1309-1313.

http://www.cds.caltech.edu/~yasi/papers/WPMC02.pdf

Best wishes,
Bob

--
AMSAT VP Engineering. Member: ARRL, AMSAT-DL, TAPR, Packrats,
NJQRP/AMQRP, QRP ARCI, QCWA, FRC. ARRL SDR Wrk Grp Chairman
Laziness is the number one inspiration for ingenuity.  Guilty as
charged!
3d1bbca20dabfeca5cce1687c1e70660?d=identicon&s=25 Jens Elsner (Guest)
on 2006-04-05 18:12
(Received via mailing list)
Thanks for the reply! I'm really struggeling here...

>
> Therefore as you can see the phase shift will increase with k. For k=0,
> there will be no phase shift and for k=N-1, there will be a phase shift of
> almost 2*pi*n'. Therefore for a QPSK, when you map symbols to bits, there
> will be more errors for higher subcarrier (index).  You have to start
> sampling exactly after the cyclic prefix ends. In general if your timing
> error is towards cyclic prefix, you effectively cyclic shift your data. In
> case your shift is away from the end of the cyclic prefix, you take some
> samples from next symbol and introduce ISI. You need to see how this will
> effect you in DQPSK case. Please look at this link for relevant papers

The phase shift doesn't matter in differential demodulated systems.

To sum up:

Frequency offset results in ICI.
	This is "white noise" interference.

Time offset results in

	a) ISI, if offset results in taking values from other symbols.
	This is also "white" interference.

	b) phase shift, if offset results in taking values from the
	cyclic prefix. This results in a "circle" structure, as the
	phase shift is higher for subcarriers of higher frequency.

The time offset effect b) is removed by differential demodulation, since
the phase shift will be the same.

The effect I am seeing is a constant phase shift for all subcarriers,
different for each OFDM symbol. Nothing that could be explained with a
frequency offset or a time offset.

I am clueless.

> In general if your relative frequency offset is .01 or less, I think you
> will not be affected much. But again I am not too sure for DQPSK. Again QAM
> is more sensitive to these errors than QPSK.
A small frequency offset results just in a SNR degradation - my
estimation is pretty accurate.

Jens
3d1bbca20dabfeca5cce1687c1e70660?d=identicon&s=25 Jens Elsner (Guest)
on 2006-04-05 18:15
(Received via mailing list)
> http://www.cds.caltech.edu/~yasi/papers/WPMC02.pdf
Bob,

I am still convinced that using differential demodulation removes the
phase shift (see reply to Prateek). Or is there something I am not
seeing so far?

Jens
Ce36ad4142338c14c9b260303e847f71?d=identicon&s=25 Robert McGwier (Guest)
on 2006-04-05 20:05
(Received via mailing list)
Yes. Here is what you are missing:

Let us concentrate (as does your nice animated gif) on one channel in
the OFDM.

Let us suppose you have a variable delay into the signal after its
onset.  This will happen with probability one because your clock and the
transmitter clock will not be the same except in your computer
simulation.

If you took the FFT beginning (say) 39 samples into the symbol at  t,
and then   52 samples after the beginning time for symbol at  t+1,
this will be an additional rotation due to the frequency offset of this
channel from zero.  Notice this means that every channel will have a
different rotation which will be a multiple of the frequency offset from
correct and the difference in time after symbol onset you go into the
symbol to take the FFT.

This is definitely a nontrivial exercise to get right.

Bob



Jens Elsner wrote:
>> http://www.cds.caltech.edu/~yasi/papers/WPMC02.pdf
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>


--
AMSAT VP Engineering. Member: ARRL, AMSAT-DL, TAPR, Packrats,
NJQRP/AMQRP, QRP ARCI, QCWA, FRC. ARRL SDR Wrk Grp Chairman
Laziness is the number one inspiration for ingenuity.  Guilty as
charged!
3d1bbca20dabfeca5cce1687c1e70660?d=identicon&s=25 Jens Elsner (Guest)
on 2006-04-06 11:28
(Received via mailing list)
(comments inlined)

On Wed, Apr 05, 2006 at 02:02:23PM -0400, Robert McGwier wrote:
> Yes. Here is what you are missing:
>
> Let us concentrate (as does your nice animated gif) on one channel in
> the OFDM.
Yes, what's depicted are all decoded symbols in one OFDM frame.

> Let us suppose you have a variable delay into the signal after its
> onset.  This will happen with probability one because your clock and the
> transmitter clock will not be the same except in your computer simulation.
Agreed. But this delay will only be fractional, as I can determine the
exact start by correlation. The oscillators are pretty stable, so I can
exactly time one symbol. The offset will thus be fractional and
constant.

I verified this by correlating every OFDM symbol with itself. This
shows that the cyclic prefix does not move.

> If you took the FFT beginning (say) 39 samples into the symbol at  t,
> and then   52 samples after the beginning time for symbol at  t+1,
> this will be an additional rotation due to the frequency offset of this
> channel from zero.  Notice this means that every channel will have a
> different rotation which will be a multiple of the frequency offset from
> correct and the difference in time after symbol onset you go into the
> symbol to take the FFT.
I agree. But, as stated above, my time offset is fractional and
constant.

Jens
This topic is locked and can not be replied to.