One software radio to rule them all
By Andrew Back
Could one radio be all you ever need for data, cellular calls, wifi and more? Software defined radio holds that promise. Andrew Back looks at how free software is one of the enablers in helping to put the technology into the hands of consumers.
Imagine that when working on a design, you sit at a CAD workstation, pulling out your calculator to run through some figures, and then moving to sit in front of a word processor to write a letter. It's not that hard to imagine because this is how things were before the advent of the personal computer – an incredibly flexible tool that can be configured through software for countless uses.
The PC is something that we've long taken for granted and the days prior to its existence have come to feel like an age filled with clumsy, inefficient and inflexible technology. With our mobile phones, DAB receivers, TV tuners and wireless routers, this is where we are now with radio systems: access to a new system or upgrade of an existing one generally means new hardware.
Software-defined radio (SDR) promises to change all this by making the complexity in radio systems a software problem. The principle is simple and, in the ideal setup, an antenna is connected directly to analogue-to-digital converters for receiving signals and digital-to-analogue converters for transmitting them, with software running on an attached processor taking care of everything else.
In practice, additional analogue components are required in the form of an "RF front end" to filter and amplify the signals of interest, and to shift their frequency if it's outside of the range where the digital converters operate. But now all the really hard work, such as recovering information from radio carriers and modulating it onto them, is handled in the digital domain.
When we think of radio the first things that come to mind are broadcast and domestic appliances with a row of push buttons or dials – simple technology that's been around since the early 20th century. But as demand for mobile internet access grows unabated and with the Internet of Things and white space technology on the horizon, radio systems have never been more relevant, or complex.
Given suitably high performance converters and RF front end it should be possible to implement just about any present or future radio system, with support for new systems becoming simply a matter of writing new software and the occasional processor upgrade. However, as signal processing applications go, SDR can be particularly demanding and getting the price of high performance hardware down is a challenge. There is also the matter of software infrastructure.
A free and open source SDR toolkit
Look inside almost any SDR system and you will see many of the same fundamental software components, performing functions such as filtering signals or combining them together, and replacing the hard-wired physical circuitry that would have previously done this.
With complex wireless systems being constructed from lots of smaller standard components and interoperability being key, SDR is ripe for commoditisation through open source, and, in fact, the foundations of this potentially game changing ecosystem were established back in 2001.
GNU Radio is a toolkit that simplifies development of SDR applications by providing hundreds of component blocks that are assembled into flow graphs using Python scripts. In addition to blocks which perform a signal processing function – such as demodulating FM or only passing frequencies in a certain range – sources and sinks are provided for digital radio hardware, along with audio, network and other interfaces on the user side.
For performance reasons, blocks are typically written in C++ and, where available, make use of floating-point hardware, with SWIG being used to generate Python bindings. Scripts for connecting blocks together are then hand crafted or created using GNU Radio Companion (GRC), a graphical editor.
Radio signals themselves may be analogue but increasingly the information they carry is digital, and the GNU Radio software has been used to create everything from satellite navigation receivers to 4G mobile implementations.
Early work with GNU Radio used a laboratory data acquisition card for the digital radio hardware, which at $1,300 (plus the components for an RF front end) presented something of a barrier to experimentation. This barrier was lowered in 2005 when Ettus Research introduced the Universal Software Radio Peripheral (USRP), a powerful and highly flexible system based around a motherboard that was initially priced at $450, with transmit and receive daughterboards from $50.
The digital converters in the USRP are connected to a field-programmable gate array (FPGA), which by default is used to convert signals from real to complex samples and reduce the data rate while preserving the information carried. The FPGA can also be used for other high-speed, low-latency operations and the Verilog code that is used to program it is made available under the GPL.
The USRP was designed from the outset as a hardware companion to GNU Radio. This has grown from a single USB 2.0 attached system to a family with networked versions that have Gigabit Ethernet and self-contained variants that include an ARM processor and run Linux. The original version is able to comfortably saturate the USB 2.0 bus, is capable of digitising the entire FM broadcast band at once, and is finding popular use in creating low cost GSM base stations.