A few year ago, as electrical engineer student, I used to love Matlab and its Simulink tool. Due its price and the fact that I do not have the habit to use cracked software it was long time ago last time I used Matlab/Simulink.
In my quest of finding how to develop wireless systems, I crashed with GNU Radio and instantly fell in love. It is not only a great tool to simulate or create signal processing systems, but also it offers a easy way to implement those systems in real hardware... as I said, I just could not resist to fall in love.
GNU Radio is based on C++ and Python programming languages, every system consist basically in two parts: 'block' and 'flow graph'. A 'block', as called in GNU Radio, is a signal processing block written in C++, this language was chosen because its high computational efficiency. GNU Radio comes with dozens of built blocks as mathematical operators, filters, frequency modulation and demodulation, FFT, signal sinks. And of course the user can build and add his/her own blocks. A 'flow graph' is the data structure that connects different blocks in order to perform the desired communication system, Python programming languages is used to this data structure due its flexibility and easy way of programming. In order to create a common interface to communicate both programming language the tool called SWIG (Simplified Wrapper and Interface Generator) is used. The figure below shows in a simplified manner how is the basic idea behind the creation of complete communication systems using GNU Radio.
Structure of GNU Radio.
To make life easier, GNU Radio comes with a graphical tool called GRC that stands for 'GNU Radio Companion', this useful and powerful tool will save you a lot of time while building your systems and if you are familiarized with Simulink, you will not waste time learning how this tool works, it is as easy as search, drag and click a couple of blocks and you will have an operational communication system.
A communication system as seen in GRC.
A few days ago in a fresh Ubuntu 14.04 installation on an old computer, installing GNU Radio was as easy as:
sudo apt-get install gnuradioI remember that a couple of years ago it was not that easy. So, what are you waiting for installing and start building your own communication systems?.