Let’s experiment with creating frequency modulation in GNURadio. Along the way, we will learn about deviation and voltage controlled oscillators.
Experimenting with GNURadio provides an opportunity to build your understanding of how things really work. This is especially so for understanding modulation. Amplitude modulation is fairly easy to understand. You vary the strength of the carrier with a message signal and create sidebands with information. Creating frequency modulation is way more complex.
FM is a form of angle or exponential modulation. This involves modifying the phase angle of a sinusoid – the carrier. When you do this, the carrier wave deviates from its resting or center frequency. The amount of deviation varies from a few kHz for Narrow Band FM, up to 75 kHz for Wide Band FM. So this is why commercial FM stations are spaced 200 kHz apart: twice 75 kHz for deviations above and below center, plus another 25 kHz guard band on each side.
So, how does FM sort out volume and sound frequencies? First, the amplitude of the modulation is what drives deviation. How loud a message sounds depends on the proportion of actual to expected deviation. Second, the modulating message creates sidebands for each frequency in the message. The number and strength of these sidebands depends on the Modulation Index, which is the ratio of peak deviation to modulating frequency.
Unlike AM, there is no such thing as 100% modulation in FM. The bandwidth of an FM signal can be infinite with sidebands stretching out forever. Fortunately, Carson’s Rule tells us that most of the signal can be decoded from just some of the sidebands.
Obviously, I am skipping over the math, as well as Bessel Functions which describe the nature of the FM sidebands. If you want an easy to read description of all the math and modulation, check out a wonderful Application Note from Hewlett Packard called Spectrum Analysis Amplitude and Frequency Modulation.
Creating Frequency Modulation – GNURadio brings theory to life
A great way to understand the theory and math is to run a simulation in GNURadio. For my latest project, I created an FM transmitting and receiving system. As usual, you can watch the video and download the GNURadio Companion program file.
This program gives you the choice of broadcasting tones or an audio file. Especially important, it provides complete control over amplitude and deviation. You can experiment with narrow or wide band modulation, or anything in between. This experiment also shows how to use the Voltage Controlled Oscillator in GNURadio.