RDS - an Investigation
RDS? It's an abbreviation for Radio Data System. RDS is a European standard for sending small amounts of digital information using conventional FM radio broadcasts.
Where do I find a RDS signal? A Roberts Radio R9921 will do.
To understand the RDS digital format I need to play with it. That is easier to do in C++ than with PIC assembler. I'll use a 16F84 PIC as an interface. RDS data are sent serially to a PC com port for further investigation.
Each falling edge of the clock triggers a 19200 serial frame to be send to the PC. The data and quality bits are sent in the lower 2 bits. The remaining 6 bits form the ASCII code for the digit 0. ORed together they code:
0 data 0 bad quality
Here's the PIC source.
Connected to a PC
With a good signal:
The above screen shot reads 011010100011100111101110011110010000011...
Mistuning the radio causes errors:
Decoding the stream
In software I have 26 syndrome detectors running in parallel. When a syndrome detector finds a valid A, B, C , C', or D syndrome, it emits a letter, and which of the 26 detectors found it.
Here we see detector 20 happens to be the one of choice, with some spurious hits from other detectors.
Spurious detections can be filtered out with a state machine ensuring Block B follows Block A, Block C follows Block B etc.
My First Radio Text Decode!
This sequence was sent interspersed with other groups (here deleted). Group 2A is the Radiotext (RT) message.
Mixing It- Featuring Minotaur Shock, Foehn & Mum and dad.
Tuning to Classic FM, and inspecting the Group 2A Radio text, and the A/B "clear screen" code I get this sequence:
Let's see if the alternate frequencies tie up to transmitters in my locality...
Tuning to Classic FM on 100.4 MHz (Bedfordshire) there are 7 Alternate frequencies (0A group)
Ofcom lists transmitter information.
Tuning to Radio 2 on 88.6 MHz, the local repeater at Bow Brickhill, there are 10 Alternate frequencies (0A group)
Info from http://www.bbc.co.uk/reception/transmitters/radio_trans/england_fm.shtml Main in Red, relay in black.
Yes, the alternate frequencies do tie up!
A Windows application is born...
A Windows dialog app is knocked out. The RDS data stream is pulled apart and displayed.
And another. This is a PIC based RDS encoder.
An Alternate Connection Interface?
Several people has asked me to release a version of the RDS application that doesn't require the extra PIC circuit. "Other applications put RDAA (2) to DSR (pin 6) and RDCL (16) to RI (pin 9) and with ground (pin 5). Why do use a PIC?"
I'll consider this. In my original design I chose a PIC to serial the data as I didn't want the RDS clock (1187.5Hz) and data getting mis-timed. This could occur this the PC is under heavy network load or Graphics loading. The serial port doesn't have a high priority interrupt, and if you're looking for RDS signal issues, you don't want a dubious interface connection to further confuse the situation.
UNITED STATES RBDS STANDARD This standard is available free. It includes all of the specifications in Cenelec EN50067: 1998 plus some additional features for the United States. Follow this link to see what the differences are.
http://www.rds.org.uk/ The RDS Forum is the professional association of the users of the Radio Data System broadcast technology.
Here's a YouTube demo of PS, REG and AF:
email me! Nick June