MATLAB Examples

FM Broadcast Receiver with ADALM-PLUTO Radio

This example shows how to build an FM mono or stereo receiver using Simulink®, Communications System Toolbox™ and Communications System Toolbox Support Package for Analog Devices ADALM-Pluto Radio. To run this example and receive FM signals in real time, you need a PlutoSDR.

You can see a MATLAB implementation of FM demodulation at FM Broadcast Receiver with ADALM-PLUTO Radio on MATLAB.

For a full list of Communications System Toolbox supported SDR platforms, refer to Supported Hardware section of Software Defined Radio (SDR) discovery page.


Running the Example

To listen to live FM radio, double-click the Center Frequency (MHz) block, select the value to the center frequency of a broadcast FM radio station near you and start running the example. You can also change the value of the center frequency while the model is running.

If you hear some dropouts or delay in the sound, run the model in Accelerator mode. From the model menu, select Simulation->Accelerator, then click the run button. If you still experience dropouts or delay in Accelerator mode, try running the model in Rapid Accelerator mode.

NOTE: This example utilizes a center frequency that is outside the default tuning range. Click configurePlutoRadio('AD9364') to use your radio outside the qualified tuning range.

Receiver Structure

The following block diagram summarizes the receiver structure. The processing has three main parts: ADALM-PLUTO radio receiver, FM broadcast demodulation, and audio output.

ADALM-PLUTO Radio Receiver

PlutoSDR at 600e3 samples/second. Set the center frequency to a broadcast FM radio station near you.

FM Broadcast Demodulation

The baseband samples received from the PlutoSDR are processed by the FM Broadcast Demodulation Baseband block. This block converts the sampling rate of 600 kHz to 48 kHz, a native sampling rate for your host computer's audio device. According to the FM broadcast standard in the United States, the de-emphasis lowpass filter time constant is set to 75 microseconds. This example processes received mono signals. The demodulator can also process stereo signals.

To perform stereo decoding, the FM Broadcast Demodulator Baseband block uses a peaking filter which picks out the 19 kHz pilot tone from which the 38 kHz carrier is created. Using the obtained carrier signal, the block downconverts the L-R signal, centered at 38 kHz, to baseband. Afterwards, the L-R and L+R signals pass through a 75 microsecond de-emphasis filter. The block separates the L and R signals and converts them to the 48 kHz audio signal.

Audio Device Writer

Play the demodulated audio signals through your computer's speakers using the Audio Device Writer block.

Further Exploration

To further explore the example, you can vary the center frequency of the PlutoSDR and listen to other radio stations using the Center Frequency (MHz) block.

You can set the Stereo property of the FM Broadcast Demodulator Baseband block to true to process the signals in stereo fashion and compare the sound quality.

Selected Bibliography