discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Relative Newbie Question: PSK Demod Block - RDS/R


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] Relative Newbie Question: PSK Demod Block - RDS/RDBS Data Recovery
Date: Sat, 7 Nov 2015 14:02:32 -0500



On Sat, Nov 7, 2015 at 12:40 AM, Kevin McQuiggin <address@hidden> wrote:
Hi All:

I hope that this is not too simple a question for the group.  I have spent several weeks working on this issue (reading, studying, experimenting), and as success is still elusive, it is time to ask for assistance.  Thanks in advance for any assistance you may be able to give.  

This post is kind of long, but I am trying to provide thorough and complete information!


Goal:

My goal is data recovery and then decoding of RDS/RBDS 57 KHz sub carrier signals in the FM broadcast band. This is a learning exercise - I know of gr-rds; redsea, etc, but I want to accomplish this myself!  I’m not interested in downloading and running a working package!  I have used redsea for testing, but I want to learn the process and reach this goal this myself.

My post is specifically related to problems with the 57 KHz sub carrier recovery, and PSK demodulation of that signal.  See below.


System and Other Relevant Data:

USRP B200, good antenna
Ubuntu 14.04
Gnuradio 3.7.8
Year-old i5-based system, 32 GB RAM, USB 3.0 working.  Gnuradio and the USRP work well in all other respects.  I have several other analog receivers working.
“Redsea” works well on RDS recovery with an RTL dongle on the same antenna, so it is not a reception problem.  
I have read the RDBS specs front to back


Project Components:

There are two components to this project: the signal recovery and demodulation; and the post-processing to recover the RDS/RBDS blocks and groups from the demodulated data.  I am not interested at this time in processing the RDS data in real time.  I want to pack demod data bits and send them to a file sink.  Then I have written a C program that will read the data file and recover the RDS blocks and groups in a post-processing fashion.  At least in theory!  I need valid demod data first.

I have verified that the bit packing in my flowgraph, i.e. the LSB/MSB ordering of the individual demod bits is working appropriately.  My C program has also been pretty thoroughly tested.  If I can get valid data into it, I am pretty sure that it will recover RDS blocks and groups.


The Problem:

On the recovery/demodulation side, I am having problems in recovering the BPSK sub carrier and doing the demodulation.  I will present my flowgraph below.  


Summary of Flowgraph:

I use a USRP source tuned to a known-good RDS station at 93.7 MHz.  I use a low pass filter to isolate 200 KHz, then pass the signal through the WBFM receiver.  At one point I added a frequency sink here and could see the 57 KHz sub carrier clearly.

The output of the demodulator goes to a frequency translating FIR filter centred at 57 KHz with a bandwidth of ~2.6 KHz.  This signal goes into the PSK demodulator, set with what seems to be appropriate parameters - this is my main area of concern!

The RDS data stream runs at 1187.5 bps.  In the PSK demod block I compute “samples per signal” by dividing my samp_rate by the decimation of the FIR xlating filter (20), then further dividing by 1187.5 and casting to int, for a figure of 20 samples per symbol.

Bits (one per byte) coming out of the demod are packed in a LSB manner and then go into a file sink.  

I have tried several approaches to the demodulation (PFB, MPSK, PSK Demod, RRC filter, Costas Loop, CMA equalizer, etc) and through the use of constellation sinks I can see that in several iterations I have achieved a fairly good, stable 2-point constellation.  The guided tutorials and several other sources, including some videos on YouTube have been very helpful, but valid bits are eluding me.


Generally, you don't want to be handling 20 sps, and some of the blocks can fall apart over that number. You really want to knock your bandwidth down to 2 samples/symbol, which you can do in the frequency translating filter that's already decimating some.

If this works, you might then want to look at the performance of the blocks in your flowgraph to see if you'd be better off with a multistage down conversion system.

Tom


reply via email to

[Prev in Thread] Current Thread [Next in Thread]