Software Defined Radio
A Gentle Introduction to GNU Radio and Related Hardware

Bdale Garbee

HP Open Source & Linux CTO

bdale@gag.com

Includes material from presentations by

Eric Blossom and Matt Ettus

Agenda

Software Defined Radio

GNU Radio

Interesting Hardware

Sound Card Interfaces

USRP and SSRP

The Politics of Open Source SDR

Some GNU Radio examples and demos!

What's GNU Radio?

Free software toolkit for:

Building and deploying software radios

Learning about DSP and communication systems

Creating new kinds of radios, modulations, protocols, development environments...

Exploring!

Typical Data Transceiver

S/W Radio Block Diagram

What can I do with it?

Conventional radio stuff

Continuous enhancements

Performance not possible in analog circuits

Spectrum monitoring

Multi channel / Multi mode

Morph on the fly

Better spectrum utilization

Cognitive radio

“Used SDR-1000s do not exist. You get a brand new radio every

time you download the latest software.” Willi, SM6OMH

Architecture / Implementation

Data flow abstraction

Signal processing blocks and connections between them

Hybrid C++ / Python system

Stitching blocks together to prototype new “radios” in Python is pretty easy, and the body of available examples keeps growing

Creating new blocks is more involved

Hello World

#/usr/bin/env python

from gnuradio import gr

from gnuradio import audio

def build_graph ():

sampling_freq = 32000

ampl = 0.1

fg = gr.flow_graph ()

src0 = gr.sig_source_f (sampling_freq, gr.GR_SIN_WAVE, 350, ampl)

src1 = gr.sig_source_f (sampling_freq, gr.GR_SIN_WAVE, 440, ampl)

dst = audio.sink (sampling_freq)

fg.connect (src0, (dst, 0))

fg.connect (src1, (dst, 1))

return fg

if __name__ == '__main__':

fg = build_graph ()

fg.start ()

raw_input ('Press Enter to quit: ')

fg.stop ()

Signal Processing Blocks

Input streams and output streams

I/O signature

Type of each stream is specified

Blocks specifies constraints on # of streams

Relative i/o rates

Fixed 1:1, Fixed interp 1:N, Fixed decim N:1

Variable

Interface to Real World

How to get samples in / out?

Analog to Digital and Digital to Analog

Getting RF up and down converted to IF

Three approaches...

Sound Card Interfaces

PCI “Wide Band” Interfaces

USB 2.0 Interfaces

Sound Card Interfacing

Relatively low sampling rate

48 kHz or 96 kHz, 16 or 24 bits

Good for audio input and output

Can be used with narrow and low IF

Examples

PSK-31 (RigBlaster, etc)

Narrow band HF (SDR 1000)

SDR-1000

SDR-1000 Features and Specs

11Khz – 65Mhz General Coverage Receiver

160M – 6M (2M optional) Ham Bands TX

TX 100W HF, 500mW 6M ... Optional ATU

99dB 2Khz Two Tone Dynamic Range

Brick Wall Filters – 1.05:1 SF @ 500hz

No Ring 25hz CW receive filter

Software features evolving rapidly

Next Gen SDR-1000, Software Skins

Wide Band I/O

PCI A/D and D/A Cards

Good Bus Bandwidth

Expensive to Very Expensive ($1k - $10k)

Still need RF Front End

USB 2.0 Interfaces

SSRP kit from David Carr

SR design by Vladimir Dergachev

USRP by Matt Ettus

USB 2.0 Interface Board - SSRP

SSRP

USRP Block Diagram

USRP

Partial FPGA Contents

Political Layer

“Broadcast Flag”

MPAA vs the rest of us

Though shalt not copy broadcast TV!

Restrictions on HDTV receivers

No provision for “Fair use”

Court ruled FCC can not regulate beyond reception...

FCC / regulatory situation

SDR Good: Soln to spectrum utilization problem

SDR Bad: How to control / type certify / rogue radios

Encumbents vs the innovators

HDTV

Future Directions

Tight Tx/Rx sync (sub-microsecond)

Transparent utilization of SMP

Event-based overlay

State charts

Control plane / protocols

What do you need?

GNU Radio Demo

GNU Radio is packaged for Debian by Ramakrishnan Muthukrishnan

Questions?

2004-12-15T12:37:03