bastibl / gr-rds

FM RDS/TMC Transceiver
http://en.wikipedia.org/wiki/Radio_Data_System
GNU General Public License v3.0
218 stars 71 forks source link

Fix bugs in the rds_rx example #51

Closed argilo closed 2 years ago

argilo commented 2 years ago

The rds_rx.grc example has a number of problems:

  1. FM stereo does not work, because the receiver does not recover the phase of the 19 kHz stereo pilot.
  2. The WBFM Receive block applies FM deemphasis too early. Deemphasis should be applied after stereo demodulation.
  3. The gain slider does not work for the RTL-SDR source.
  4. The default audio gain is too high, causing clipping.
  5. A deprecated block is used (PSK Demod).
  6. The RDS receive chain doesn't have AGC.
  7. The RDS receiver throws away half of each Manchester symbol, degrading receive performance by 3 dB.

In this commit I've fixed these problems. I verified that stereo demod now works, and that RDS receive performance is improved.

Before: rds_rx_old

After: rds_rx_new

Signed-off-by: Clayton Smith argilo@gmail.com

argilo commented 2 years ago

The stereo receiver uses the same design as Gqrx (https://github.com/gqrx-sdr/gqrx/blob/master/src/dsp/stereo_demod.cpp), which works well.

The matched filter for RDS symbol synchronization is a Manchester symbol (01) convolved with an RRC filter.

bastibl commented 2 years ago

Clayton, thanks so much! This and the other two commits make the module so much better!