Signal Processing Software


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


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


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 type for real values. Used for instance to output audio signals to audio devices.
type for digital data. This is the output of digital demodulation/decoding.


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


Find more information about GNU Radio at