By the time you read this, SDR-WInnComm 2014 is over. At Nutaq’s booth we were running a cognitive orthogonal frequency-division multiplexing (OFDM) demo. Here’s the block diagram of the cognitive radio system I made for the occasion:

Block diagram of cognitive radio system

As you can see from the block diagram, the demo uses a PicoSDR 2×2-E and a PicoSDR 4×4. In the demo, a wireless video transmission is made at a specific frequency between the transmitter and the receiver. At the same time, an interferer is transmitting a tone at another specific frequency. The frequency of the interferer can be changed from the GNU Radio model in the embedded CPU. If the interferer’s frequency is changed so that it becomes close to the frequency used by the transmitter and receiver, the receiver and the transmitter are reconfigured to a different frequency, one that is further from the interferer. Validation of the switch in frequency is made using a spectrum analyzer (at SDR-WInnComm, it was made from the WD8G solution).

The detailed data flow is as follows:

  1. The embedded CPU uses GNU Radio to configure the radio cards of the transmitter, receiver, and interferer.
  2. The embedded CPU uses GNU Radio to send the video file to the transmitter FPGA through Ethernet on the MicroTCA backplane.
  3. The transmitter’s FPGA uses Nutaq’s OFDM reference design to send the data over the air.
  4. The data is received by the receiver. OFDM packet detection and demodulation is performed.
  5. The decoded bits are sent back to the embedded CPU over Ethernet for video visualization. In parallel, the average power of the noise is calculated by the receiver and sent to the embedded CPU.
  6. The embedded CPU GNU Radio model streams the received bits of the video file to VLC. It also verifies the average power of the noise. If that value is higher than a certain threshold, the GNU Radio model configures the transmitter and receiver radio cards to use a different frequency.

This is a simple demo but it shows how many pieces are linked together:

  • The embedded CPU is running a Linux Fedora 17 distribution and GNU Radio.
  • Nutaq’s GNU Radio plug-in configures the radios in real-time.
  • Video is streamed over Ethernet interfaces.
  • The transmitter, receiver, and interferer are all configured with bitstreams generated from Nutaq’s model-based design kit for System Generator.
  • In the embedded CPU, one GNU Radio model is used for the entire demonstration, from configuration of the radios to the verification of the average noise level. The model includes  GNU Radio library blocks, Nutaq blocks, and a custom block written in C++.
  • The custom block, a simple state machine, was created from the out-of-tree modules tutorial provided on the GNU Radio website ( As a side note, a state machine is a good example of an application where developers will find themselves limited by the basic GNU Radio library.

In conclusion, this is just one example of an application that starts with Nutaq’s OFDM reference design and uses the PicoSDR 2×2-E/4×4 for cognitive radio.