Title: The GNU in RADIO
1The GNU in RADIO
2SDR
- Getting the code close to the antenna
- Software defines the waveform
- Replace analog signal processing with Digital
signal processing - Why?
- Flexibility, time to market, reliable
- Its all about the stack GPRS/ WiFi / WiMax
3SDR
- Possibilities ?
- TX/RX on multiple channels simultaneously
- Better spectrum usage
- Cognitive radios
- Disadvantages
- Higher power consumption (GPU vs ASIC)
- More MIPS!
- Higher cost (as of today)
4GNU RADIO
- Platform for
- Experimenting with digital communications
- Signal processing using commodity hardware
- Free software!
- http//www.gnu.org/software/gnuradio/
5A TYPICAL SDR
6ADC
- Sampling Rate
- Rate at which you sample the analog signal
- Determines what frequency can be handled
- Dynamic range
- Number of signal levels
- Quantization error
- SNR 6.02N 1.76dB
7Sampling
Sum of sinusoids Sigma ai Sin (2 pi fit)
8Sampling
Sin (2 pi fc nts)
Sin (2 pi fc nts 2 pi m)
Sin (2 pi nts (fc m/n fs))
fc k fs
We need a LOW PASS FILTER !
9Sampling
10Nyquist Criteria
- Sampling freq gt Twice the max. frequency
component in the signal of interest
11ALIASING
ADCs in USRP 64 Msps ? 32 Mhz How to receive
2.4 Ghz ? RF Front end
12RF Front End Down conversion
LPF
ADC
LPF
Intermediate Frequency (IF)
VCO
Mixer sinusoid of (RF-IF)
13RF Front Ends
- 50 - 860 Mhz RX
- 400 500 Mhz Transceiver
- 400 500 Mhz Transceiver
- 400 500 Mhz Transceiver
- 2300 2900 Mhz Transceiver
- Bandpass filter (2.4 to 2.483 Ghz)
14USRP
15USRP
- Universal Software Radio Peripheral
- To rapidly design powerful, flexible software
radio platforms - What does it have?
- FPGA (ALTERA Cyclone)
- Mixed signal processor (AD 9862)
- Slots for 4 daughter boards (2 TX, 2 RX)
16- Boot sequence two programmable components
- USB Controller (Cypress FX2) 8051 code
- FPGA (ALTERA Cyclone) Verilog
17USRP
- Four 12-bit ADC, 64 Msps
- Sub-multiples are also possible 42.66 Msps, 32
Msps, 25.6 Msps and 21.33 Msps - Decimation helps
- IF has to be lt 32 MHz
- Four 14-bit DAC 128 Msps
- Max. output 50 Mhz
- Four I/Os simultaneously if we use real sampling,
Two I/Os for complex sampling synchronized
clocks - Each daughter board has access to 2 DACs and 2
ADCs - Why Different boards ?
- different RFs ? same IF
18- Mux usage http//webpages.charter.net/cswiger/usr
p_diagrams/
19USRP
- Four Digital Downconverters (DDCs)
- FPGA with CIC Filters
- Programmable decimation rate
- Low pass filter
- Two Digital Upconverters (DUCs)
- AD 9862
- Programmable interpolation rate
- USB 2.0 (480 Mbps, peak)
20(No Transcript)
21RX PATH
22DDC IF ? Complex Baseband
23TX PATH
AD 9862
Block D The "Fine Modulator" -- this is a
digital up-converter Block C Interpolation
filter (we interpolate by 4 in the AD9862) Block
B The "Coarse Modulator" Block A The actual
DACs.
24GNU Radio Software Architecture
- Library of signal processing blocks (C)
- Ex sources, sinks, others
- Input, output ports, types, work function
- Create a flow graph vertices are blocks and
edges represent the data flow (Python) - SWIG, FFTW, Boost
25Lets look into some code!
26GENERATE DIAL TONE
27(No Transcript)
28(No Transcript)
29(No Transcript)
30(No Transcript)
31(No Transcript)
32Frequency Modulation
33(No Transcript)
34(No Transcript)
35(No Transcript)
36(No Transcript)
37(No Transcript)
38(No Transcript)
39Spectrum Sensing
40Spectrum Sensing
41Spectrum Sensing
42Spectrum Sensing
43Spectrum Sensing
44Spectrum Sensing
456 Mhz Limit ?
- USB 2.0 limit ? 32 MBytes/sec
- ADC 64 Msps ? 32 Mhz chunk
- 8 Msps w/ 16 bit I/Q samples
- 8 2 2 32 Mbytes/sec
- 4 Mhz 2 8 Mhz (Quadrature sampling)
- Discard 1/4 of bins 6 Mhz
- Decimation (8, 256)
- Interpolation (16,256)
46Spectrum Mask
47Spectrum Sensing
Tune 0.001 sec , Dwell 0.1 sec , Step 0.5
Mhz , FFT 1 Mhz wide
48Spectrum Sensing
Tune 0.001 sec , Dwell 0.1 sec , Step 1 Mhz
, FFT 1 Mhz wide
49Spectrum Sensing
50Spectrum Sensing
Tune 0.001 sec , Dwell 0.01 sec , Step 1 Mhz
, FFT 1 Mhz wide
51Spectrum Sensing
Tune 0.001 sec , Dwell 0.01 sec , Step 1 Mhz
, FFT 1 Mhz wide
52CSMA
53(No Transcript)
54CSMA
55CSMA
56CSMA
57CSMA
Complex samples from USRP
58CSMA
Complex samples from USRP
59Spectrum
60CSMA
Complex samples from USRP
61CSMA
Complex samples from USRP
Filter to get the actual channel we want
62CSMA
Complex samples from USRP
Filter to get the actual channel we want
63CSMA
Complex samples from USRP
Filter to get the actual channel we want
64CSMA
Complex samples from USRP
Filter to get the actual channel we want
Demodulate to get ones and zeroes
65CSMA
Complex samples from USRP
Filter to get the actual channel we want
Demodulate to get ones and zeroes
66CSMA
Complex samples from USRP
Filter to get the actual channel we want
Demodulate to get
ones and zeroes
Get the SYNC Vector
67CSMA
Complex samples from USRP
Filter to get the actual channel we want
Demodulate to get
ones and zeroes
Get the SYNC Vector
68CSMA
Complex samples from USRP
Filter to get the actual channel we want
Demodulate to get
ones and zeroes
Get the SYNC Vector
We have the pkt now
69CSMA
Complex samples from USRP
Filter to get the actual channel we want
Demodulate to get
ones and zeroes
Get the SYNC Vector
We have the pkt now
Carrier Sense
RX CALLBACK
70Some numbers ..
- Time to switch freq 0.001 sec (Have to verify)
- Modulation
- GMSK, DBPSK, DQPSK didnt work ?
- Bit rate 500k CPU Maxed out ?
- Throughputs
- UDP 520 kbps ! (PHY 500 kbps) Error in
Netperf ? - TCP 20 80 Kbps
71Channel 1, less tries
2.412 (Channel 1) , 3.8 pkts in error
72Channel 1, Ping flood, More tries
73Channel 1, Ping source, More tries
4 error (throughput very less)
74Channel 6
2.3 pkts in error
752.423 Ghz
1.6 pkts in error
762.562 Ghz
0 pkts in error
77Channel 1, Ping sourceCS_Thresh 70 , 50
Error was 4 !!
78(No Transcript)
79What do we have?
- Multiple modulations
- BPSK, QPSK, GMSK, QAM (soon)
- Symbol rates / bandwidth
- Pulse shape filtering (?)
- Carrier Frequency
- Power
- Payload size
- CRC ..