# CFO in OFDM

**URL:** <https://www.ruby-forum.com/t/cfo-in-ofdm/232812>\
**Category:** GNU Radio\
**Created:** [October 29, 2014, 1:35pm UTC](https://www.ruby-forum.com/t/cfo-in-ofdm/232812 "2014-10-29T13:35:26Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [October 29, 2014, 1:35pm UTC](https://www.ruby-forum.com/t/cfo-in-ofdm/232812/1 "2014-10-29T13:35:26Z")

</div>

Dear all,

I am suffering from issues related to residual CFO error manifesting  
itself as a slight rotation over time. This can be partially corrected  
in the FD using tracking pilots which I have implemented but there is  
still a slight problem which may be caused by ICI.

In the OFDM example code, how is the value for the Frequency Mod  
sensitivity (-2/FFT\_len) derived? Has anyone implemented other CFO  
estimation blocks for OFDM systems, other than the Schmidl and Cox  
technique?

Regards,

David

* * *

David Halls Ph.D.  
Research Engineer  
Toshiba Research Europe Limited  
32 Queen Square, Bristol, BS1 4ND, UK  
Tel: +44 (0) 117 906 0790

* * *

NOTE: The information in this email and any attachments may be  
confidential and/or legally privileged. This message may be read, copied  
and used only by the intended recipient. If you are not the intended  
recipient, please destroy this message, delete any copies held on your  
system and notify the sender immediately.

Toshiba Research Europe Limited, registered in England and Wales  
(2519556). Registered Office 208 Cambridge Science Park, Milton Road,  
Cambridge CB4 0GZ, England. Web: www.toshiba.eu/research/trl

---

<div class="post-metadata">

**Author:** ![divotdave](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bbe5ce/32.png) [@divotdave](https://www.ruby-forum.com/u/divotdave)\
**Post date:** [October 29, 2014, 9:38pm UTC](https://www.ruby-forum.com/t/cfo-in-ofdm/232812/2 "2014-10-29T21:38:50Z")

</div>

On 10/29/2014 01:34 PM, David Halls wrote:

> I am suffering from issues related to residual CFO error manifesting  
> itself as a slight rotation over time. This can be partially corrected  
> in the FD using tracking pilots which I have implemented but there is  
> still a slight problem which may be caused by ICI.
> 
> In the OFDM example code, how is the value for the Frequency Mod  
> sensitivity (-2/FFT\_len) derived? Has anyone implemented other CFO  
> estimation blocks for OFDM systems, other than the Schmidl and Cox  
> technique?

I recommend the S&C paper for the derivation, but the maths is not that  
hard. The very short version is that 1/fft\_len is the frequency offset  
of carriers in normalized frequency, and the fine frequency offset is  
unambiguous between \pm 1 carrier. The result of the estimator is thus  
in ‘fraction of carriers in normalized frequency’.

I’ve played around with other techniques, but not in GNU Radio. The  
reason being, a tracking CFO estimator (i.e. one that changes the  
estimate over time during a packet) is much harder to implement (read, I  
was lazy). Now, if you don’t actually want to track, but only estimate  
once at the beginning, you won’t get much better than S&C.

Note that you’ll always have ICI as soon as you have a Doppler spectrum.  
With decent equalization, it’s not _that_ big of a deal as long as it’s  
not too much ICI.

M

---

<div class="post-metadata">

**Author:** ![divotdave](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bbe5ce/32.png) [@divotdave](https://www.ruby-forum.com/u/divotdave)\
**Post date:** [October 29, 2014, 10:20pm UTC](https://www.ruby-forum.com/t/cfo-in-ofdm/232812/3 "2014-10-29T22:20:35Z")

</div>

Thanks Martin,

I dug out the S&C paper and think I’m clear on that, thanks.

I have a currently uncoded system with superimposed QPSKs from multiple  
sources so it’s pretty sensitive! its fine using the Octoclock, though  
giving 0 BER end-to-end. I also have 32 symbol packets; so fairly long.  
I’ve implemented some basic CFO tracking using the pilots which helps.

I think it’s residual CFO error causing the issue, manifesting as  
rotation of frequency over time, but as it’s high SNR this should be  
small. With tracking and correction the constellation _looks_ OK…

I’m going to keep digging around…

-------- Original message --------  
From: Martin B.  
Date:2014/10/29 20:38 (GMT+00:00)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: [Discuss-gnuradio] CFO in OFDM

On 10/29/2014 01:34 PM, David Halls wrote:

> I am suffering from issues related to residual CFO error manifesting  
> itself as a slight rotation over time. This can be partially corrected  
> in the FD using tracking pilots which I have implemented but there is  
> still a slight problem which may be caused by ICI.
> 
> In the OFDM example code, how is the value for the Frequency Mod  
> sensitivity (-2/FFT\_len) derived? Has anyone implemented other CFO  
> estimation blocks for OFDM systems, other than the Schmidl and Cox  
> technique?

I recommend the S&C paper for the derivation, but the maths is not that  
hard. The very short version is that 1/fft\_len is the frequency offset  
of carriers in normalized frequency, and the fine frequency offset is  
unambiguous between \pm 1 carrier. The result of the estimator is thus  
in ‘fraction of carriers in normalized frequency’.

I’ve played around with other techniques, but not in GNU Radio. The  
reason being, a tracking CFO estimator (i.e. one that changes the  
estimate over time during a packet) is much harder to implement (read, I  
was lazy). Now, if you don’t actually want to track, but only estimate  
once at the beginning, you won’t get much better than S&C.

Note that you’ll always have ICI as soon as you have a Doppler spectrum.  
With decent equalization, it’s not _that_ big of a deal as long as it’s  
not too much ICI.

M

* * *

Discuss-gnuradio mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> **[Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)**

* * *

NOTE: The information in this email and any attachments may be  
confidential and/or legally privileged. This message may be read, copied  
and used only by the intended recipient. If you are not the intended  
recipient, please destroy this message, delete any copies held on your  
system and notify the sender immediately.

Toshiba Research Europe Limited, registered in England and Wales  
(2519556). Registered Office 208 Cambridge Science Park, Milton Road,  
Cambridge CB4 0GZ, England. Web: www.toshiba.eu/research/trl
