GNURADIO Demonstration

 


Download and Installation

  • Downloading and intalling gnuradio is straightforward. Our descriptions assume versions of linux, particularly fedora or ubuntu. In fact, you can get the version Gnuradio 3.7.2 by simply typing `sudo apt-get install gnuradio' in ubuntu or 'sudo yum install gnuradio' in fedora.
  • Since Gnuradio is constantly developed, let us agree on a version for our experiments. Seems gnuradio version 3.7.x is a good choice. Several ways to install are available, please see here
  • Inside iitb network, remember to set the proxy by export http_proxy=http://username:passwd@netmon.iitb.ac.in:80/
  • if you need help after repeated attempts, we can help you install it (contact by email).



Experimental Setup

  • After installing, type gnuradio-companion to open gnuradio GUI. Feel free to play around with the different devices. Many examples are available in the public domain and even youtube videos are available.
  • For initial experiments, we have listed a few below. Open each of the .grc file within the gui and click on the icon which resembles gearwheels, it is the 14th icon on the top panel.



Experiments


Exp Nr. Details
1 Simple Tx A random source is send using qpsk modulation. This should familiarise you with setting variables (see top of the canvas), and setting sliders (on the left bottom) which can be changed while the program is run, much like an oscilloscope knob.

The PSK modulation block also includes a pulse-shaper (filter), known as root-raised cosine filter. This helps in controlling transmit BW and ISI reduction. The samples per symbol is set as 4, which means that the resulting waveform is sampled at rate 4 times the symbol rate.

The throttle block is the time-keeper. It orchestrates the timing operations in such a way that the user feels as if the symbols are transmitted at the specified rate. In the example, symbol rate is 25k and sample rate is 4*25k=100k, since there are 4 samples per symbol.

The resulting shaped-pulses are transmitted through a channel (with a trivial impulse response), and then fed to a software oscilloscope. This is available under the title WX GUI WIDGETS in the right panel on the canvas.

Now click the 14th icon on the top panel (with image icon 'gears'), and you will see two scope windows. Play with the sliders.
  • On the side of the left plot, you will find channel options. Channel 1 is the real signal and CH2 has the imaginary part. There is also an XY option, which will allow a complex constellation plot. Click this, and further choose the option line-links as marker. What you see is known as the eye-diagram. Can you make heads and tails of this picture? Think!, then do the next experiment.
  • On the right side is the frequency spectrum. Tick the average button on top, this will show you a smoother plot. Can you now measure the transmission bandwidth, does it correpond to the 25k symbol rate that we fed into the system?. What is the effect of the root-raised cosine filter.
  • Play with the noise-voltage slider below the plots, notice the spectrum.
  • Pull the frequency offset slider, what is the effect.
2 Tx-Rx The eye diagram in the last plot was hazy, because 4 samples per symbol was taken. Imagine sampling a sin(x) in [0,pi] 4 times. The middle two are the good samples, while the other two have lower values. The last plot is showing all the values, including the bad samples. So we have to have a mechanism to pull the correct samples out, but remember, we have to get it from a waveform generated by real data, not a half sinusoid.

This is the art of synchronization. GNURADIO programmers have built some of them into the blocks, a very useful one is the so called polyphase clock synchroniser, available under synchronizers. How does it work, better to read it from the paper by F J Harris et al, IEEE JSAC December 2001. If this looks unclear, we can assign it as a student project, or we can cover it in the class. The .grc file now includes this block. It generates 1 output sample per 4 input samples, thus the output symbol-rate is 2.5k, as we designed.

Lemme clarify, this is not choosing one of the 4 input symbols, but interpolating the waveform first and then choosing a good sample.
  • Click icon 14 (execute command), select the noise voltage to zero and then click the line-link. See a good eye-diagram. Did you see a difference between the past dft plot and the current one (good observation).
  • Now, play with the frequency offset parameter. Look at the fft plot and constellation.
  • Also change the samp_rate variable to 1000k, that your simulations will get faster, illustrating the use of the throttle block.
  • There is one thing unexplained till now, the filter rrc_taps used in the synchronizer. It is nothing but the transmit pulse shape (with roll-off 0.35), but the filter taps are generated using firdes (FIR DESIGN) command, see the blocks on filters. Try playing with the design parameters.
3 Other Intro Balint Seeber, Youtube lectures from one key GNURADIO developer.


Send suggestions and/or comments to: bsraj att ee . Better to use the Right to Information (RTI) act in the class than later.