A Tutorial on Using RTL-SDR with LabView: Creating a Simple FM Demodulator

LabView is a popular visual programming environment often used in industry and by engineers for test, automation and control applications. It is somewhat similar to GNU Radio in that programming is done by connecting a series of various blocks together, each of which performs some function. The RTL-SDR is compatible with LabView via a simple RTL-SDR interface.

Recently Albert Lederer wrote in to us and wanted to share his beginners guide to creating an broadcast FM demodulator with an RTL-SDR in LabView. The tutorial focuses only on demodulating the mono part of the broadcast FM signal structure and provides a fully functional LabeView project file. Albert describes the signal chain implemented below:

1. The signal is received from the rtl-sdr device as IQ data. This is converted to a complex signal and the phase is extraced.

2. The phase correction removes phase discontinuities.

3. The key demodulation component in the chain is the phase derivative. The phase derivative takes the phase of the signal and creates a second signal that is composed only of the changes in frequency. This is then the demodulated signal.

4. The low pass filter is used to filter out frequencies above 15kHz, which do not contain the desired information.

5. The rational resample takes the signal, which is still at the sampled rate (in the examples case 286650Hz) and resamples it to something the sound card can handle. In this case, we are using a decimation factor of 13, which results in a 22050Hz audio stream. Actually, I worked this out the other way around. I wanted a 22050Hz audio stream and checked which sample rate would give me an integer decimation while keeping the RF sampling rate as low as possible.

The LabView Broadcast FM Demodulator
The LabView Broadcast FM Demodulator


Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.