DSP Techniques for Software Radio A System Example Dr. Jamil Ahmad

Preview:

Citation preview

DSP Techniques for Software Radio

A System Example

Dr. Jamil Ahmad

2

SDR System

GNU Radio SDR Hardware Support SDR Software Development SDR Demo

3

Why GNU Radio?

Open source Knowledge Sharing Growing Applications Open Hardware Architecture PC Interface – General Purpose

DSP

4

GNU Radio Hardware

Universal Software Radio Peripheral (USRP) Multi-Channel Multi-Band Flexible

Hardware Wideband system USB 2.0 Interface Developed for Linux Analog RF and Digital Front End

Processing

5

USRP Board

6

USRP

Daughter Cards Flexible Analog RF Front Ends

0-5GHz Support MIMO System

High Speed Data Conversion Mother Board

High Speed FPGA for Front-End Processing

USB 2.0 Interface with PC

7

USRP FPGA Processing

8

USRP ADCs 4 – 12bit A/D Converters 64M samples/sec each (theoretically a

32MHz wide band) 42.66M samples/s, 32M samples/s ... also

possible. 2V Peak-to-Peak input PGA to increase gain up to 20db before

A/D for weak signals.

9

USRP DACs

4 - 14bit D/A Converters 128M samples/s each Theoretical 64 MHz bandwidth Tx

signal but should not attempt more than 50 MHz

10

USRP Data Conversion Effectively 4 input and 4 ouput channels Usually use a complex signal input/output

so 2 complex inputs and 2 complex outputs There is also onboard interpolation in the

FPGA (DDC) for both TX and RX All samples sent across the USB are 16-bit

signed integer values USB can only handle 32Megabytes/s or less

11

GNU Radio Software

SDR Blocks Basic DSP blocks in C++

SDR System Python to connect DSP processing

blocks Example Code

12

GNU Radio SoftwareHello World Example: Dial Tone Output

#!/usr/bin/env python

from gnuradio import gr

from gnuradio import audio

def build_graph ():

sampling_freq = 48000

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, 0), (dst, 0))

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

return fg

if __name__ == '__main__':

fg = build_graph ()

fg.start ()

raw_input ('Press Enter to quit: ')

fg.stop ()

13

SDR System Demo

64-QAM OFDM System No RF PC-to-PC analog wire connection

using sound cards Both Tx and RX

14

GNU Radio

GNU Software Radio

http://www.gnu.org/software/gnuradio/

USRP http://www.ettus.com

Recommended