This document provides an overview of GNU Radio software defined radio (SDR) including:
1) An introduction to SDR hardware like the Universal Software Radio Peripheral (USRP) and its daughterboards for various frequency ranges.
2) GNU Radio software which uses Python and C++ blocks to process radio signals on a PC. It includes demos of transmission, reception, and analysis tools.
3) The GNU Radio Companion graphical tool for designing signal flow graphs and generating code.
4) Examples of communication demos including FM transmission, AM transmission, benchmark tests, and spectrum sensing.
This document provides an overview of GNU Radio software defined radio (SDR) including:
1) An introduction to SDR hardware like the Universal Software Radio Peripheral (USRP) and its daughterboards for various frequency ranges.
2) GNU Radio software which uses Python and C++ blocks to process radio signals on a PC. It includes demos of transmission, reception, and analysis tools.
3) The GNU Radio Companion graphical tool for designing signal flow graphs and generating code.
4) Examples of communication demos including FM transmission, AM transmission, benchmark tests, and spectrum sensing.
This document provides an overview of GNU Radio software defined radio (SDR) including:
1) An introduction to SDR hardware like the Universal Software Radio Peripheral (USRP) and its daughterboards for various frequency ranges.
2) GNU Radio software which uses Python and C++ blocks to process radio signals on a PC. It includes demos of transmission, reception, and analysis tools.
3) The GNU Radio Companion graphical tool for designing signal flow graphs and generating code.
4) Examples of communication demos including FM transmission, AM transmission, benchmark tests, and spectrum sensing.
This document provides an overview of GNU Radio software defined radio (SDR) including:
1) An introduction to SDR hardware like the Universal Software Radio Peripheral (USRP) and its daughterboards for various frequency ranges.
2) GNU Radio software which uses Python and C++ blocks to process radio signals on a PC. It includes demos of transmission, reception, and analysis tools.
3) The GNU Radio Companion graphical tool for designing signal flow graphs and generating code.
4) Examples of communication demos including FM transmission, AM transmission, benchmark tests, and spectrum sensing.
Download as PPTX, PDF, TXT or read online from Scribd
Download as pptx, pdf, or txt
You are on page 1of 43
Entering the World of GNU Software Radio
Thanh Le and Lanchao Liu
Introduction Hardware Software GNU Companion Communication Demos
Outline PART I - Introduction Software Defined Radio User App FPGA RF/IF conversion circuit http://www.da.isy.liu.se/research/bp/ USRP: Universal Radio Peripheral The hardware solution for GNU SDR
USRP USRP2 PART II Hardware Universal Software Radio Peripheral (USRP) 4 ADC 64MS/s (12-bit) 4 DAC 128MS/s (14-bit) USB 2.0 interface Small FPGA MIMO capable 1. Highest speed 480Mb/s 2. Capable of processing signals up to 16 MHz wide Universal Software Radio Peripheral (USRP2) 2 ADC 100MS/s (14-bit) 2 DAC 400MS/s (16-bit) Gigabit Ethernet Interface Larger FPGA On-board SRAM MIMO capable
1. 2 Gbps high-speed serial interface for expansion 2. Capable of processing signals up to 100 MHz wide
XCVR2450: 2.4GHz 2.5GHz & 4.9GHz -5.9GHz(20dBm) Software Defined Radio Block Diagram
Low Noise Amplifier Low Pass Filter Low Pass Filter Local Oscillator ADC Antenna Mixer RF Front End
FPGA MUX
FPGA DDC
Example 2-1: Simple transmission
A simple sinusoidal wave is transmitted. We can view it at the receiver in spectrum domain.
PART III Software GNU radio GNU radio is an open source, Python-based architecture for building SDR projects C++ written signal processing blocks and python written connectors Available on Linux, Mac OS and Windows
Signal Generator FFT Filter Modulation APP1 APP2 Python C++ A thumb of rule For any application, what you need to do at Python level is nothing but drawing a diagram to show the signal flow form the source to the sink using the Python, sometimes with the graphical user interface(GUI) support GNU Radio Installation Step-by-step instruction available on http://gnuradio.org/redmine/projects/gnuradio/wiki/GettingStarted Install the pre-requisites Get the GNU Radio source code Configure, compile and install GNU Radio
All the following demos are built in: Ubuntu-10.10 + gnuradio-3.32
Example 3-1: Src0 (440Hz) Src1 (640Hz) FFT Oscilloscope Adder Data Type Signal blocks communicate with each other via data stream GNU Radio requires that input and output data types match exactly
Byte 1 byte of data(8-bit) Short 2 bytes integer Int 4 bytes integer Float 4 bytes floating integer Complex 8 bytes(a pair of floats)
Tips: the name of the signal block indicates the input/output data type _f : input/output a float _fc: input a float and output a complex _vff: input and output a vector of floats _b: input/output a byte _i: input/output a integer _s: input/output for short
USRP Source/Sink Initialize variable represents the signal block u = usrp2.source_32fc(options.interface, options.mac_addr) u = usrp2.sink_32fc(options.interface, options.mac_addr)
For the USRP source: self.connect(u, other_block) For the USRP sink: self.connect(other_block,u)
Receive: USRP Source Transmit: USRP Sink Create the USRP source Set the decimation /Interpolation rate Connect to another block Set the gain Set the center frequency Some useful blocks
Sinusoidal Noise Null Vector File Audio USRPn FFT Vector File Audio USRPn Adding a constant Adder Subtracter Multiplying a constant Multiplier Divier Log Type Conversion Low pass/High pass/Band pass/Hilbert/Rais ed Cosine Source Sink Simple operators Filters Example 3-2: Codes reading - FM Receiver Explain the codes for FM receiver line by line. Useful tools Spectrum analyzer: usrp2_fft.py Signal generator: usrp2_siggen_gui.py & usrp2_siggen.py Recorder: usrp2_rx_cfile.py
Offline analyzer: gr_plot_fft.py & gr_plot_psd.py Example 3-3 : Spectrum analyzer Example 3-4 : Signal generator Example 3-5 : Recorder
PART IV GRC GNU Radio Companion A graphical tool that Create signal flow graphs & Generate flow-graph source code Adding proper blocks to the diagram and setting it parameters Connect proper blocks with each other, saving the file. Generating the flow graph, the system will save your design with a .grc file. Executing the flow graph and receive the signal by using USRP2 receiver that we designed before. Example 4-1: View signal in time/spectrum domain
Example 4-2: View the constellation diagram of a signal
PART IV Communication Demos FM Transmitter gr.wavefile_source() gr.multiply_const_cc() Usrp2.sink_32fc() gr.multiply_const_cc() AM transmitter Gr.interp_fir_filter_fff() gr.multiply_const_ff Source am_mod=gr.float_to_complex() Usrp2.sink_32fc Benchmark_tx.py
source window fft c2mag log10 threshold Reference http://www.snowymtn.ca/gnuradio/gnuradiodoc-1.pdf (Totally ten parts, just change the number to get it) http://gnuradio.org/redmine/projects/gnuradio/wiki