Stereo FM receiver and RDS decoder » History » Version 1

Marquet, Alexandre, 06/26/2015 03:32 PM

1 1 Marquet, Alexandre
h1. Stereo FM receiver and RDS decoder
2 1 Marquet, Alexandre
3 1 Marquet, Alexandre
In this example, we propose a stereophonic FM broadcasting receiver and RDS (Radio Data System) decoder. Several python script for the radio demodulation and the RDS protocol decoding are provided. For studying purpose, we also provide GRC flowgraphs of the radio demodulator.
4 1 Marquet, Alexandre
5 1 Marquet, Alexandre
h2. Listening to a local station
6 1 Marquet, Alexandre
7 1 Marquet, Alexandre
Download and extract the archive rds.tar.gz
8 1 Marquet, Alexandre
<pre>tar -xvzf rds.tar.gz</pre>
9 1 Marquet, Alexandre
10 1 Marquet, Alexandre
Open the extracted folder and execute the program
11 1 Marquet, Alexandre
<pre>
12 1 Marquet, Alexandre
cd rds
13 1 Marquet, Alexandre
./fm.py -c <card> -s <sample_rate>
14 1 Marquet, Alexandre
</pre>
15 1 Marquet, Alexandre
Where :
16 1 Marquet, Alexandre
* card is the kind of card you are usingn : ursp for NI/Ettus USRP, rtlsdr for dongles based on the RTL2832u ;
17 1 Marquet, Alexandre
* sample_rate is the sample rate at which you want your SDR receiver to operate.
18 1 Marquet, Alexandre
19 1 Marquet, Alexandre
h3. Opening the flowgraphs in gnuradio-companion
20 1 Marquet, Alexandre
21 1 Marquet, Alexandre
The flowgraphs are located in the radio/grc folder. It contains four files :
22 1 Marquet, Alexandre
* radio.grc : the main flowgraph performing the audio and RDS demodulation (needs fm_receiver.grc to be built) ;
23 1 Marquet, Alexandre
* fm_receiver.grc : separates the L+R (Left plus Right), L-R and RDS channels of the MPX multiplex (needs fm_audio_demod and rds_demod to be built) ;
24 1 Marquet, Alexandre
* fm_audio_demod.grc : produces the stereo audio output ;
25 1 Marquet, Alexandre
* rds_demod.grc : produces the raw RDS bits output.
26 1 Marquet, Alexandre
27 1 Marquet, Alexandre
One would would notice the matlab script "gen_matched_filter_taps.m" at the root of this archive. This scripts allows to calculate the taps of the finite impulse response of the matched filter specified by the RDS standard for any sampling rate and filter length. After calculing new filter taps fitting your needs (e.g. if you want to execute the flowgraph at a different sample rate), they should be put into the variable "mathed_filter_taps" of the flowgraph "rds_demod".