Gnuradio

Signal Processing Software

gnuradio_app_dashboard.png

Software Defined Radio

Typical Transceivers

  • Built for one purpose only (DVB-T, 4G, Bluetooth…)
  • Signal processing mostly done in hardware (ASICs)
  • Produce/Consume data packets

Software Defined Radios

  • Extremly flexible
  • Signal processing done in software on PC (some projects also utilize FPGAs)
  • Can implement any standard if sample rate and processing power is high enough
  • Produce/Consume RF samples
gnuradio_rx.png
gnuradio_tx.png

Applications

  • Research and Development
  • Mobile base stations
  • Digital broadcast receivers

Gnuradio

Gnuradio is a framework for realtime signal processing mostly used for communication systems in combination with a SDR.

  • Signal processing framework for radio communications
  • Blocks written in C++ and Python
  • Modular approach: blocks for decoders, filters, gui, fft…
  • Automated scheduling and buffer management for the blocks

GNU Radio Companion

GNU Radio itself is a framework that can be included in Python applications. To generate systems through a graphical editor GNU Radio Companion (GRC) can be used. Systems can be built as so-called flowgraphs with each block representing a specific function. A block can either source and/or sink data through the in/out ports displayed in GRC. The GNU Radio framework supports different data types:

complex float
two float values per sample representing the Inphase and Quadrature component of the complex signal (see Figure fig:iq_phase_amp).
float
float type for real values. Used for instance to output audio signals to audio devices.
byte
type for digital data. This is the output of digital demodulation/decoding.

Challenges

Some parts of Gnuradio are poorly documented. We have had several problems and challenges:

Vector data type
how does gnuradio handles this type (does it provide vectors or only samples)
Buffer Management
how are unprocessed samples handled
Minimal amount of samples
how do we tell GNURadio to provide a minimal amount of samples for transformations like FFTs

References

Find more information about GNU Radio at https://www.gnuradio.org