OPEN SOURCE TRANSPARENCY FOR OFDM EXPERIMENTATION
Thomas W. Rondeau (CTVR, Trinity College Dublin, Dublin, Ireland, trondeau@vt.edu),
Matt Ettus (Ettus Research, LLC., matt@ettus.com), Robert W. McGwier (CCR, IDA,
rwmcgwier@gmail.com)
ABSTRACT
Many developments in communications systems begin as a
theoretical model and then analyzed in a simulation
environment such as Matlab. Often, these simulations do not
provide the complexity of a real implementation where one
must deal with real circuitry and channels. The open source
GNU Radio platform offers an easy transition between the
theoretical models and an affordable solution to test the
models under real-world conditions. We present the concept
of GNU Radio for this purpose here by discussing and
analyzing a flexible OFDM transceiver. This design offers
research and development of different methods of OFDM
symbol transmission, reception, and synchronization. These
concepts are currently being applied to develop waveforms
such as WiMAX.
1. INTRODUCTION
GNU Radio is a free and open source software defined radio
(SDR) project [1]. The purpose of this paper is to show how
GNU Radio is useful in experimenting with and developing
SDR techniques. Many problems faced in communication
system design have multiple solutions while other new
problems have solutions that are still in experimental stages
of development. Some of these solutions have been
developed and shown only mathematically and in simple
simulations that ignore or miss certain problems
experienced when used in real systems. Other times,
different solutions to the same problems can have trade-offs
in power cost and performance. In all of these cases, an
open, transparent system for developing, testing, and
comparing these systems can help advance our
understanding.
GNU Radio is a solution to these problems. As an open
source project, GNU Radio offers transparency to analyze,
design, and distribute concepts in communications. We have
developed a number of communications and signal
processing blocks that can be used to build and test systems
to analyze performance. Furthermore, GNU Radio runs in
real-time and on-line and can be interfaced with RF
hardware, which means we can go from experimentation to
deployment in the same system.
In order to illustrate how GNU Radio offers these
services to SDR development, we will discuss the
implementation of an OFDM transceiver system. In
particular, we have developed the transmit and receive
chains in a modular way that enables discrete replacement
of components so that different modulators, demodulators,
and receivers can be developed and tested. We will explain
the architecture and describe how to replace components in
order to build new functionality such as modulator
subcarrier mapping and timing and frequency
synchronization methods. We have implemented three
different synchronization blocks and will provide some
results of their use to describe how to analyze and compare
them.
This paper focuses on the implementation in GNU
Radio, and so we will not present any more than the
necessary description of OFDM and instead point to the
relevant texts and papers. For a general introduction to
OFDM, see [2]. To make the software and the information
in this paper as useful as possible, all of the code,
commands, and examples are distributed as part of the
standard GNU Radio software package. The code is split
between implementation in C++ and Python. The OFDM
blocks written in C++ can be found in gnuradio-
core/src/lib/general and are prefixed as gr_ofdm_. The
Python blocks are hierarchical structures containing other
hierarchical blocks and the C++ blocks and are found in
gnuradio-core/src/python/ gnuradio/blks2impl.
2. TRANSMIT AND RECEIVE CHAINS
2.1. Transmit Chain
In OFDM, the data is mostly operated on in the frequency
domain. Baseband data is manipulated using standard
modulation techniques as a complex number and mapped to
a vector which is then converted to the time domain using
an IFFT. The vector is made up of N
FFT
elements of which
N
OC
elements are used. When this is put through an IFFT of
length N
FFT
, the elements represent orthogonal subcarriers of
which N
OC
carry information. In general, these N
OC
subcarriers occupy the middle subcarriers, leaving about
(N
FFT
-N
OC
)/2 subcarriers unused on either side (ignoring a
±1 if N
FFT
is odd) as guard bands. The DC subcarrier is
often removed to avoid problems caused by DC offsets.
Proceedings of the SDR ’08 Technical Conference and product Exposition, Copyright © 2008 SDR Forum, Inc. All Rights Reserved