+ All Categories
Home > Documents > An introduction Jesper M. Kristensen Department of...

An introduction Jesper M. Kristensen Department of...

Date post: 27-May-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
60
Introduction GNU Radio Architecture Programming the GNU Radio References GNU Radio An introduction Jesper M. Kristensen Department of Electronic Systems Technology Platforms Section [email protected] Mobile Developer Days 2007 DATE... 2007 Mobile Developer Days 2007 GNU Radio 1 / 40
Transcript
Page 1: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU RadioAn introduction

Jesper M. KristensenDepartment of Electronic Systems

Technology Platforms [email protected]

Mobile Developer Days 2007DATE... 2007

Mobile Developer Days 2007 GNU Radio 1 / 40

Page 2: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 2 / 40

Page 3: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 3 / 40

Page 4: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Todays Hardware Platforms

Fixed functionalityBuild with dedicated HardwareCost and PerformanceEfficient

But InflexibleAltering major functionalityusually requires redesign

Mobile Developer Days 2007 GNU Radio 4 / 40

Page 5: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 5 / 40

Page 6: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Software Radio

An implementation technologyA technique for moving digital signal processing as close aspossible to the antenna

Replacing rigid Hardware...with flexible software based solutions

Software Radio defintionA software (defined) radio is a radio that includes a transmitter in whichthe operating parameters of the transmitter, including the frequencyrange, modulation type or maximum radiated or conducted outputpower can be altered by making a change in software without makingany hardware changes.

Mobile Developer Days 2007 GNU Radio 6 / 40

Page 7: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Alternative definitions

Quoting the SDR forum:Software Defined Radio (SDR) is a collection of hardware and softwaretechnologies that enable reconfigurable system architectures for wirelessnetworks and user terminals. SDR provides an efficient and comparativelyinexpensive solution to the problem of building multi-mode, multi-band,multi-functional wireless devices that can be enhanced using softwareupgrades. As such, SDR can really be considered an enabling technologythat is applicable across a wide range of areas within the wireless industry.SDR-enabled devices... can be dynamically programmed in software toreconfigure the characteristics of equipment. In other words, the same pieceof "hardware" can be modified to perform different functions at differenttimes...

Mobile Developer Days 2007 GNU Radio 7 / 40

Page 8: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Defining software radio using tiers...

The SDR Forum has defined the following tiers, describing evolvingcapabilities in terms of flexibility

Tier 0The Hardware Radio: The radio is implemented using hardwarecomponents only and cannot be modified except through physicalintervention.Tier 1Software Controlled Radio (SCR): Only the control functions of anSCR are implemented in software - thus only limited functions arechangeable using software. Typically this extends to inter-connects,power levels etc. but not to frequency bands and/or modulation typesetc.

Mobile Developer Days 2007 GNU Radio 8 / 40

Page 9: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Defining software radio using tiers...

Tier 2Software Defined Radio (SDR): SDRs provide software control of avariety of modulation techniques, wide-band or narrow-band operation,communications security functions (such as hopping), and waveformrequirements of current and evolving standards over a broad frequencyrange. The frequency bands covered may still be constrained at thefront-end requiring a switch in the antenna system.Tier 3Ideal Software Radio (ISR): ISRs provide dramatic improvement overan SDR by eliminating the analog amplification or heterodyne mixingprior to digital-analog conversion. Programmability extends to the entiresystem with analog conversion only at the antenna, speaker andmicrophones.

Mobile Developer Days 2007 GNU Radio 9 / 40

Page 10: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Defining software radio using tiers...

Tier 4Ultimate Software Radio (USR): USRs are defined for comparisonpurposes only. It accepts fully programmable traffic and controlinformation and supports a broad range of frequencies, air-interfaces &applications software. It can switch from one air interface format toanother in milliseconds, use GPS to track the users location, storemoney using smartcard technology, or provide video so that the user canwatch a local broadcast station or receive a satellite transmission.Cognitive radio (CR) is a form of wireless communication in which atransceiver can intelligently detect which communication channels are inuse and which are not, and instantly move into vacant channels whileavoiding occupied ones. This optimizes the use of availableradio-frequency (RF) spectrum while minimizing interference to otherusers.

Mobile Developer Days 2007 GNU Radio 10 / 40

Page 11: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

S(D)R and Transceiver architetures

Two basic receiver architecturesThe heterodyneDigitized IF processing (GNU Radio architecture)

���

����

���

����

���

��� ���

������������

Mobile Developer Days 2007 GNU Radio 11 / 40

Page 12: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

S(D)R and Transceiver architetures

Two basic receiver architecturesThe heterodyneDigitized IF processing (GNU Radio architecture)

���

��������

� �������������

���

����

�������������

Mobile Developer Days 2007 GNU Radio 11 / 40

Page 13: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 12 / 40

Page 14: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

A Framework

An open source software toolkitSupports, Linux, Mac OS and Windows

Creating signal processing applicationsDefining waveforms in softwareProcessing waveforms in software

A hardware platformUSRP, universal software radio peripheral, low cost HW platform forpreprocessing

ADC &DACFPGAUSB 2.0 Interface to Host PC

A framework for building software radio transceivers

Mobile Developer Days 2007 GNU Radio 13 / 40

Page 15: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

The Protocol StackSoftware RadioWhat is GNU Radio

Prerequisites

Using the GNU radio is cross disciplinaryRequiring know-how in the fields of

Computer programmingCommunications systemsDigital signal processingAnalog as well as digital hardware

Hardware is also open sourceSchematics are available

Mobile Developer Days 2007 GNU Radio 14 / 40

Page 16: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 15 / 40

Page 17: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

GNU Radio block schematic

����������

� ��������

�������������

������������

���������������

������

������������ �

���!��

"���#����������������������������� "�$��%�&����

Mobile Developer Days 2007 GNU Radio 16 / 40

Page 18: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

GNU Radio block schematic in more detail

�����

������

�����

������� ���������������

�������� �!�"�����

Mobile Developer Days 2007 GNU Radio 17 / 40

Page 19: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

The Universal Software Radio Peripheral

Basic USRP facts4*ADC, 12 bit @ 64MSPS4*DAC, 14 bit @ 128MSPSAltera EP1C12 FPGA forpreprocessing tasksAnalog and Digital I/O for auxilliaryI/OSupporting

Two Receive daughter boardsTwo Transmit daughter boards

USB 2.0 interface to host PC

Mobile Developer Days 2007 GNU Radio 18 / 40

Page 20: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

More photos of the USRP

Mobile Developer Days 2007 GNU Radio 19 / 40

Page 21: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

ADC&DAC frontend, AD9862

Some more ADC specsSampling signals up 32 MHz(Nyquist sampling)IF sampling up to 100MHz

If internal buffers bypassed,up to 250MHz

full range of ADC is 2Vpp(optimized SNR)

Mobile Developer Days 2007 GNU Radio 20 / 40

Page 22: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

The FPGA

RX/TX paths implemented inthe FPGA

Connections controlled viasoftwareRX pathTX path

���

����

����

���

���

����

����

���

���

�� ������������������ ��

������

�� ������������������ ��

������

��

��

��

��

���

����

Mobile Developer Days 2007 GNU Radio 21 / 40

Page 23: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

The FPGA

RX/TX paths implemented inthe FPGA

Connections controlled viasoftwareRX pathTX path ���

������

��� �����

�� �

��� �����

�� �

����������

�����������

����������

������������������� �����������

���� �!��" ��� ������

���� ��#�������� ��$�%&�'�����������(����

)������*�+

Mobile Developer Days 2007 GNU Radio 21 / 40

Page 24: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

The FPGA

RX/TX paths implemented inthe FPGA

Connections controlled viasoftwareRX pathTX path

������������

������������

�����

����

�����

����

������

�� ��

�� ��

�� ��

�� ��

���

���

�� �������������

�������

Mobile Developer Days 2007 GNU Radio 21 / 40

Page 25: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

The USB interface

The USB interface supports (ideally) 32Mbyte/sthis limits the achievable datarates

Examples of datarates

Complex samples are interleaved across the USB interface

Having one channel with complex samples gives 8Mbit/s

Having multiple channels (up to 4) reduces the rate per channelaccordingly

Finally adding TX channels again reduces achievable rates as combinedrates is limited by 32Mbyte/s.

�� �� �� ��

Mobile Developer Days 2007 GNU Radio 22 / 40

Page 26: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

The USB interface

The USB interface supports (ideally) 32Mbyte/sthis limits the achievable datarates

Examples of datarates

Complex samples are interleaved across the USB interface

Having one channel with complex samples gives 8Mbit/s

Having multiple channels (up to 4) reduces the rate per channelaccordingly

Finally adding TX channels again reduces achievable rates as combinedrates is limited by 32Mbyte/s.

�� �� �� �� �� �� �� �� �� ��

Mobile Developer Days 2007 GNU Radio 22 / 40

Page 27: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

The USB interface

The USB interface supports (ideally) 32Mbyte/sthis limits the achievable datarates

Examples of datarates

Complex samples are interleaved across the USB interface

Having one channel with complex samples gives 8Mbit/s

Having multiple channels (up to 4) reduces the rate per channelaccordingly

Finally adding TX channels again reduces achievable rates as combinedrates is limited by 32Mbyte/s.

Mobile Developer Days 2007 GNU Radio 22 / 40

Page 28: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

Hardware architecture in conclusion

GNU radio supports up to 4 independent real sampling channelsor 2 independent complex sampling channels2 independent TX channels are supportedAchievable rates are limited by the USB 32Mbyte/s.

Mobile Developer Days 2007 GNU Radio 23 / 40

Page 29: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 24 / 40

Page 30: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

Hardware ArchitectureSoftware Architecture

A 3 tier architecture

Python scripting language used forcreating "‘signal flow graphs"’

C++ used for creating signal processingblocks

An already existing library ofsignalling blocksOFDM functionality is currentlybeing added tested and will beadded to the library.

The scheduler is using Python’s built-inmodule threading, to control the ‘starting’,‘stopping’ or ‘waiting’ operations of thesignal flow graph.

GNU Radio Software architecture

PythonApplication development,

creating flow graphs

C++Signal processing

modules

SchedulerControlling flow

graphs

Mobile Developer Days 2007 GNU Radio 25 / 40

Page 31: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 26 / 40

Page 32: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

GNU Radio ‘Hello World’ application

Hello World Example: Dial Tone Output

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 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 ()

Mobile Developer Days 2007 GNU Radio 27 / 40

Page 33: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

Makes the python codeexecutable by executing $chmod +x"‘filename.py"’

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 34: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

Importing nessecary modulesmodules from GNU radio library

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 35: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():

sampling_freq = 48000ampl = 0.1fg = 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 ()

setting up signal flow graph

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 36: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 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 ()

Sampling frequency andamplitude on soundcard

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 37: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

Instantiating a flow graph objectfrom flow graph class

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 38: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

Setting up sinewaves at 350and 440 Hz

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 39: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

defining destination to besoundcard

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 40: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

connecting source anddestinations, left and rightchannel

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 41: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

returning created flow graph

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 42: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Hello world step-by-step

#!/usr/bin/env python

from gnuradio import grfrom gnuradio import audio

def build_graph ():sampling_freq = 48000ampl = 0.1fg = 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 ()

Create code to execute theflowgraph

Mobile Developer Days 2007 GNU Radio 28 / 40

Page 43: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 29 / 40

Page 44: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Listening to FM radio

Listening to FM Radio on the GNU radio involvesSetting up the USRP

Selecting RX channelSetting up decimation factorSetting up possible gain factor

defining channel seletion filterimplementing demodulatordefining audio filtersending demodulated output to soundcard.

Mobile Developer Days 2007 GNU Radio 30 / 40

Page 45: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

FM receiver block schematic

����� ���

�������� ����� ������������

�������������

������������ ������� ������

����������������������

Mobile Developer Days 2007 GNU Radio 31 / 40

Page 46: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 32 / 40

Page 47: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Software development on GNU Radio

The application of PythonUsing Python for creating flow graphsAlso used for creating GUI’sand other non performance critical appplications

The application of C++Performance critical applications

Signal processing blockslike the FM demodulator

Mobile Developer Days 2007 GNU Radio 33 / 40

Page 48: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Signal processing blocks in C++

Built as shared libaries

dynamically loaded using python’import’ feature

SWIG "‘Simplified Wrapper andInterface Generator"’ used for glue codeallowing python import.

C++ class "‘gr_block"’ is base for allsignal processing blocks

Derived classes gr_sync_block,gr_sync_decimator andgr_interpolator can also be useddepending on input/output raterelations

������������

������

����� ����� ����� ���������� ����� ��� �������

Mobile Developer Days 2007 GNU Radio 34 / 40

Page 49: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Components needed in writing a C++ block

.h file for class declaration

.cc file for class definition

.i file defining how SWIG generate glue code binding the C++class into Python

Mobile Developer Days 2007 GNU Radio 35 / 40

Page 50: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Building a test framework

Using gr_unittest an extension to python unittestenabling checking for aproximate equality tuples of float andcomplex typeenabling automated test run’s

assuming block to be verified is "‘howto_square_ff"’assuming input and output specifications known

Mobile Developer Days 2007 GNU Radio 36 / 40

Page 51: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

qa_howto.py

from gnuradio import gr, gr_unittestimport howto

class qa_howto (gr_unittest.TestCase):

def setUp (self):self.fg = gr.flow_graph ()

def tearDown (self):self.fg = None

def test_001_square_ff (self):src_data = (-3, 4, -5.5, 2, 3)expected_result = (9, 16, 30.25, 4, 9)src = gr.vector_source_f (src_data)sqr = howto.square_ff ()dst = gr.vector_sink_f ()self.fg.connect (src, sqr)self.fg.connect (sqr, dst)self.fg.run ()result_data = dst.data ()self.assertFloatTuplesAlmostEqual (expected_result, result_data, 6)

if __name__ == ’__main__’:gr_unittest.main ()

Mobile Developer Days 2007 GNU Radio 37 / 40

Page 52: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Outline

1 IntroductionThe Protocol StackSoftware RadioWhat is GNU Radio

2 GNU Radio ArchitectureHardware ArchitectureSoftware Architecture

3 Programming the GNU RadioGNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

4 References

Mobile Developer Days 2007 GNU Radio 38 / 40

Page 53: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Packet radio

The current GNU Radio architecture primarily aimed at StreamingRadio

The current scheduler relies on a steady stream of input data toporcesisng blocks

Packet Radio (TDD/TDMA) is therefore difficult to implement withprecise timingArchitectural change has been proposed and are currently beingimplemented

The change is called M(essage)-blocksProcessing of arbitrarily sized blocks of dataTreats input as messages, Data, MetadataInclude modification to FPGAPython will be replaced by C++ as programming language

Mobile Developer Days 2007 GNU Radio 39 / 40

Page 54: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Packet radio

The current GNU Radio architecture primarily aimed at StreamingRadio

The current scheduler relies on a steady stream of input data toporcesisng blocks

Packet Radio (TDD/TDMA) is therefore difficult to implement withprecise timingArchitectural change has been proposed and are currently beingimplemented

The change is called M(essage)-blocksProcessing of arbitrarily sized blocks of dataTreats input as messages, Data, MetadataInclude modification to FPGAPython will be replaced by C++ as programming language

Mobile Developer Days 2007 GNU Radio 39 / 40

Page 55: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Packet radio

The current GNU Radio architecture primarily aimed at StreamingRadio

The current scheduler relies on a steady stream of input data toporcesisng blocks

Packet Radio (TDD/TDMA) is therefore difficult to implement withprecise timingArchitectural change has been proposed and are currently beingimplemented

The change is called M(essage)-blocksProcessing of arbitrarily sized blocks of dataTreats input as messages, Data, MetadataInclude modification to FPGAPython will be replaced by C++ as programming language

Mobile Developer Days 2007 GNU Radio 39 / 40

Page 56: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Packet radio

The current GNU Radio architecture primarily aimed at StreamingRadio

The current scheduler relies on a steady stream of input data toporcesisng blocks

Packet Radio (TDD/TDMA) is therefore difficult to implement withprecise timingArchitectural change has been proposed and are currently beingimplemented

The change is called M(essage)-blocksProcessing of arbitrarily sized blocks of dataTreats input as messages, Data, MetadataInclude modification to FPGAPython will be replaced by C++ as programming language

Mobile Developer Days 2007 GNU Radio 39 / 40

Page 57: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Packet radio

The current GNU Radio architecture primarily aimed at StreamingRadio

The current scheduler relies on a steady stream of input data toporcesisng blocks

Packet Radio (TDD/TDMA) is therefore difficult to implement withprecise timingArchitectural change has been proposed and are currently beingimplemented

The change is called M(essage)-blocksProcessing of arbitrarily sized blocks of dataTreats input as messages, Data, MetadataInclude modification to FPGAPython will be replaced by C++ as programming language

Mobile Developer Days 2007 GNU Radio 39 / 40

Page 58: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Packet radio

The current GNU Radio architecture primarily aimed at StreamingRadio

The current scheduler relies on a steady stream of input data toporcesisng blocks

Packet Radio (TDD/TDMA) is therefore difficult to implement withprecise timingArchitectural change has been proposed and are currently beingimplemented

The change is called M(essage)-blocksProcessing of arbitrarily sized blocks of dataTreats input as messages, Data, MetadataInclude modification to FPGAPython will be replaced by C++ as programming language

Mobile Developer Days 2007 GNU Radio 39 / 40

Page 59: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

GNU Radio "‘Hello World"’FM radioSoftware developmentRecent developments on the GNU Radio

Packet radio

The current GNU Radio architecture primarily aimed at StreamingRadio

The current scheduler relies on a steady stream of input data toporcesisng blocks

Packet Radio (TDD/TDMA) is therefore difficult to implement withprecise timingArchitectural change has been proposed and are currently beingimplemented

The change is called M(essage)-blocksProcessing of arbitrarily sized blocks of dataTreats input as messages, Data, MetadataInclude modification to FPGAPython will be replaced by C++ as programming language

Mobile Developer Days 2007 GNU Radio 39 / 40

Page 60: An introduction Jesper M. Kristensen Department of ...mobiledevices.kom.aau.dk/fileadmin/mobiledevices/MDD07/slides/Gnu_radio... · Introduction GNU Radio Architecture Programming

IntroductionGNU Radio Architecture

Programming the GNU RadioReferences

For Further Reading

GNU Radio websitehttp://www.gnu.org/software/gnuradio/

GNU Radio tutorialshttp://www.nd.edu/ jnl/sdr/

How to Write a Signal Processing Blockhttp://www.gnu.org/software/gnuradio/doc/howto-write-a-block.html

Exploring GNU Radiohttp://www.gnu.org/software/gnuradio/doc/exploring-gnuradio.html

Message Blockshttp://gnuradio.org/trac/wiki/MessageBlocks

GNU Radio Architectural Changeshttp://acert.ir.bbn.com/downloads/adroit/gnuradio-architectural-enhancements-3.pdf

Mobile Developer Days 2007 GNU Radio 40 / 40


Recommended