Hi All:

Thanks to Tom for the suggestion and comments.  I can report that with 
additional decimation down to 2 samples/symbol in the PSK demod, that I am 
getting valid data from the RDS/RBDS stream!  It was exciting to see valid data 
coming from my program for the first time!  It’s not perfect but I am 
recovering valid station identifier codes (‘PI' codes from RBDS block type ‘A’ 
and ‘C’).

Now to work on refinement of my C decoding program.  I will likely add a TCP 
sink to the flowgraph and modify the C code so that it can read either from a 
file or a socket, thus enabling real time decoding.

Kevin

> On Nov 7, 2015, at 3:53 PM, Kevin McQuiggin <mcqui...@sfu.ca> wrote:
> 
> Thank you Tom, I will adjust the decimation and then take a look at your 
> other suggestion.  I’ll keep you posted as to how it goes.  At least I feel 
> that I am on the right track now!
> 
> Kevin
> 
>> On Nov 7, 2015, at 11:02 AM, Tom Rondeau <t...@trondeau.com 
>> <mailto:t...@trondeau.com>> wrote:
>> 
>> 
>> 
>> On Sat, Nov 7, 2015 at 12:40 AM, Kevin McQuiggin <mcqui...@sfu.ca 
>> <mailto:mcqui...@sfu.ca>> 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
> 
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to