Contribution: ofdm system

Hello,

In the last months, we have developed an ofdm system using your gnuradio
architecture as part of a research on dynamic resource allocation. Now
we
like to contribute parts of our code to the gnuradio project. We think
that
it will be useful to you since it partially employs more advanced
techniques
than in your example. If you like it, I suggest to add it as an
alternative
ofdm system.

We are using this system on USRPs at revision 4 with daughterboards
RFX2400.
It is tested, stable and has a good performance in BER and SNR. All
hierarchical blocks are using the new style blocks.

Here are some facts about the receiver and transmitter:

  • preamble based timing synchronization
    The modified Schmidl & Cox algorithm is used to position the sampling
    window
    at the first preamble. Only coarse timing synchronization is done.

  • preamble based frequency offset synchronization
    Before FFT, the frequency offset, divided into a fractional part and an
    integer part, will be estimated based on the S&C preamble (also used for
    timing sync) and a second preamble. Therefore both fine and coarse
    frequency
    offset estimation is performed.

  • preamble based channel estimation
    The second preamble, used for frequency offset estimation, will be
    exploited
    to give an estimate of the current channel state. The fine timing
    synchronization is absorbed into the channel transfer function (as phase
    rotation), i.e. compensated for at this place.

  • pilot tone based sampling frequency offset estimation
    We insert 8 pilot tones (or subcarriers) to ofdm data blocks. The
    sampling
    frequency offset (as phase rotation) and the residual carrier frequency
    offset is estimated and compensated for. Without SFO compensation, we
    observed a severe drop of SNIR using the USRPs, especially between two
    different charges we bought. The current algorithm acquires and tracks
    the
    SFO and RCFO within an ofdm frame.

  • flexible channel estimator
    The estimator block can easily use several ofdm blocks to estimate the
    channel transfer function. It will output both the inverse ctf to be fed
    to
    the equalizer and the ctf. It uses a simple zero-forcing criteria. The
    known
    blocks’ positions within the ofdm frame can be freely chosen. For
    example,
    we used a midamble in our experiments to mitigate some special problems.

  • flexible mapper/demapper
    We created a new ofdm mapper/demapper that allows to assign different
    signal
    constellations on different subcarriers. This can be either static or
    dynamically changed.

Please let me know if you want to have more details.

If you accept our contribution, I will port the system to use your
packet
utils and to have it behave like your systems. Please note that the
system
has a modular design and uses simple gnuradio blocks if possible and
useful.

Additionally, I personally want to thank you for your great work at the
gnuradio project. It is definitely one of the best SDR environments.

Greetings,
Dominik A.

Chair of Theoretical Information Technology
RWTH Aachen University

Dominik A. wrote:

In the last months, we have developed an ofdm system using your gnuradio
architecture as part of a research on dynamic resource allocation. Now we
like to contribute parts of our code to the gnuradio project. We think that
it will be useful to you since it partially employs more advanced techniques
than in your example. If you like it, I suggest to add it as an alternative
ofdm system.

Dominik-

You may have already heard privately from Eric, but yes, we’d like to
see your code for review and possible incorporation into the project.

Is it published anywhere else?

All of the host code in GNU Radio is copyrighted by FSF, so if we do
incorporate it, there is a copyright assignment process you’ll have to
go through.

Thanks for offering it. While we already have an in-progress OFDM
implementation, having multiple options is good, and it may even be
possible to merge implementations.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com

Hi,

| Is it published anywhere else?
No, it is not published. And I have got the permission to publish parts
of
the code. I.e. if you want to see the code, I will need to move the
needed
parts into a new project/makefile structure. As we don’t use your normal
packet transmission scheme (ofdm mod/demod in python etc.), I also need
to
put the code into that framework.

So, as you say that there is chance that you will accept it, I will
start to
move the code. It will take me some time, since I am going to do this
after
work and studies.

| All of the host code in GNU Radio is copyrighted by FSF, so
| if we do incorporate it, there is a copyright assignment
| process you’ll have to go through.
I think this will be possible.

Any preferences for the system? Should it use a similar framework as
your
ofdm example? Directory outside the gnuradio tree, or inside the
gnuradio-examples directory?

Greetings,
Dominik

Hello all,

Our team also implemented a MIMO-OFDM platform in the past few months.
The
system parameters are like LTE. But it is not fully in GNU Radio
framework,
so it’s not suitable to be imported. One paper introducing this platform
will be published in SDR07 Tech Conference. Unfortunately I cannot go to
attend this conference. :frowning: Otherwise maybe I could meet Eric or Ettus to
thank you for such good USRP and GNU RADIO.

Best wishes
HUANG Lin

2007/10/19, Dominik A. [email protected]:

Dominik A. wrote:

No, it is not published. And I have got the permission to publish parts of
the code. I.e. if you want to see the code, I will need to move the needed
parts into a new project/makefile structure. As we don’t use your normal
packet transmission scheme (ofdm mod/demod in python etc.), I also need to
put the code into that framework.

So, as you say that there is chance that you will accept it, I will start to
move the code. It will take me some time, since I am going to do this after
work and studies.

Understood, and thanks again.

| All of the host code in GNU Radio is copyrighted by FSF, so
| if we do incorporate it, there is a copyright assignment
| process you’ll have to go through.
I think this will be possible.

Any preferences for the system? Should it use a similar framework as your
ofdm example? Directory outside the gnuradio tree, or inside the
gnuradio-examples directory?

For now, if you can create a module tree in the format of the
“howto-write-a-block” code, that will make it easiest for us to compile
and evaluate. This module allows you to create C++ blocks, Python
hierarchical blocks, generic Python helper code, executable python
scripts, and QA code, in one convenient build tree. Each of those can
then be installed into all the right system locations to appear as part
of the GNU Radio framework. (Let me know offline if you want help doing
this.)

This will also let you maintain whatever existing partition you’ve made
between the modulator, packetizer, etc., and not force you to
re-implement that in our packet framework. Once we get a chance to look
at it, we can see how we might use it as-is or refactor it to fit in
with the way things are done currently. Or, perhaps you’re doing some
things a better way and we’ll change our stuff to match.

Regarding licensing, the best way to do it is to initially publish this
separate module tree under your own copyright with the GPLv3 license for
everything. That way everyone here on the list can evaluate it and
comment. If we decide to incorporate it into GNU Radio, then we can do
the copyright assignment paperwork, etc.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com