In the last months, we have developed an ofdm system using your gnuradio
architecture as part of a research on dynamic resource allocation. Now
like to contribute parts of our code to the gnuradio project. We think
it will be useful to you since it partially employs more advanced
than in your example. If you like it, I suggest to add it as an
We are using this system on USRPs at revision 4 with daughterboards
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
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
offset estimation is performed.
preamble based channel estimation
The second preamble, used for frequency offset estimation, will be
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
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
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
the equalizer and the ctf. It uses a simple zero-forcing criteria. The
blocks’ positions within the ofdm frame can be freely chosen. For
we used a midamble in our experiments to mitigate some special problems.
We created a new ofdm mapper/demapper that allows to assign different
constellations on different subcarriers. This can be either static or
Please let me know if you want to have more details.
If you accept our contribution, I will port the system to use your
utils and to have it behave like your systems. Please note that the
has a modular design and uses simple gnuradio blocks if possible and
Additionally, I personally want to thank you for your great work at the
gnuradio project. It is definitely one of the best SDR environments.
Chair of Theoretical Information Technology
RWTH Aachen University