Forum: Mikrocontroller und Digitale Elektronik Probleme mit RDS Synchronisation


von Quixx (Gast)


Lesenswert?

Hallo alle zusammen,

beschäftige mich zur Zeit mit dem Bau eines RDS Decoders, allerdings 
blicke ich bei der Synchronisation nicht durch.
Welche Teile der empfangenen 26 Bit muß ich womit XOR verknüpfen und was 
muß am Ende der Rechnung raus kommen?
ein Rechenbeispiel wäre nicht schlecht.


Vielen Dank im Voraus!
Quixx

von Klugscheisser (Gast)


Lesenswert?

Für den Fall, das sich hier gerade kein RDS-Spezi herumtreibt, wäre ein 
Hinweise auf das Dokument und dort die genaue Seite und der Satz, auf 
den Du Dich beziehst, hilfreich.

So spart sich ein Hilfswilliger die RDS-Doks nochmal selbst zu lesen.

von ruepel (Gast)


Lesenswert?

Ok, das ist zwar schon 13 Jahre her, daß ich das mal auf' nem Z80 
gemacht habe, aber zufällig habe ich gerade den Artikel vor mir. Wenn Du 
tiefer, aber kompakt einsteigen möchtest: Simon J. Parnall, "Decoding 
RDS", Electronics & Wireless World, February 1989, p. 148 - 152.

In Kürze: Du mußt die parity check Matrix (26x10) H verwenden

H =
1000000000
0100000000
0010000000
0001000000
0000100000
0000010000
0000001000
0000000100
0000000010
0000000001
1011011100
0101101110
0010110111
1010000111
1110011111
1100010011
1101010101
1101110110
0110111011
1000000001
1111011100
0111101110
0011110111
1010100111
1110001111
1100011011

Das sind 26 Zeilen.
Mit dem RDS-Decoder empfängst Du einen Bitstrom mit 1187.5 Hz. Nach 
jedem neuen Bit, daß Du empfängst, mußt Du dieses und die vorher 
empfangenen 25 Bits mit dieser Matrix multiplizieren.
Multiplizieren kling kompliziert, vereinfacht: Wenn in Deinem Bitstrom 
aus 26 Bits z.B. als 3.,4. und 17. Bit eine 1 auftaucht,  mußt Du die 
Zeile 3, 4 und 17 von der H-Matrix miteinander XOR-verknüpfen.
Es kommen also 26 Bit rein, und nach der XOR-Verknüpfung derjenigen 
Zeilen, die entsprechend Deinem momentanen Datenstrom 1er Bits 
entsprechen, am Schluß 10 Bit raus.

Ziel ist es letztendlich , den Gruppenanfang von A,B,C, C' oder D zu 
finden. Ergibt die XORerei innerhalb von H am Ende folgendes Ergebnis 
(10 Bit breit),

1111011000 (Gruppe A)
1111010100 (Gruppe B)
1001011100 (Gruppe C)
1111001100 (Gruppe C') (soweit ich aber von damals weiß, wird C' bei uns 
in Germany nicht verwendet)
1001011000 (Gruppe D)

dann hast Du ein sogenanntes Syndrom gefunden. Das Syndrom zeigt an, daß 
Du die 16 Bit Daten innerhalb Deines 26 Bit Datenstromes (die restlichen 
10 Bit sind ja CRC) als echte Nutzdaten verwursten kannst.
Wenn Du 4 Syndrome erfolgreich hintereinander empfängst (Also 104 Bits, 
wobei alle 26 Bits nacheinander Syndrom A,B,C,D erscheinen, also 
zyklisch), hast Du eine "Gruppe" empfangen und Dein Kasten ist 
synchronisiert ;)

von ruepel (Gast)


Lesenswert?

Achso, ich fand das damals ungeheuer spannend, die Gurke mit einem SAA 
6579 aufzubauen, hat auch nach einiger Zeit funktioniert.

Aber wenn Du dir diesen Krempel sparen möchtest, gibt es inzwschen z. B. 
den SAA6588. Der findet die Syndrome selbst und kann per I2C ausgelesen 
werden.

von Klugscheisser (Gast)


Lesenswert?

Hallo Rüpel, mit Dir habe ich nun garnicht gerechnet ;-)))

von ruepel (Gast)


Lesenswert?

Jaja, die Welt ist klein. Mit Dir hätte ich auch nicht gerechnet ;)
Moppedfahrer?

von Quixx (Gast)


Lesenswert?

@ Klugscheisser:

http://www.mictronics.de/download/RDS_Decoder/EN50067_RDS_Standard.pdf
Seite 63.


@ruepel:

Dankeschön! Genau da lag das Problem.
Ich hatte immer probiert das CRC, also die letzten 10 Bits, mit der 
Matrix zu multiplizieren statt alle 26.
Die 1er Bits des Datenwortes wurden korrekt einbezogen, aber eben auch 
das kompl. CRC.
Kein Wunder, dass meine Ergebnisse falsch waren.

Ich verwende den TDA7330B, ist zwar nicht das gelbe vom Ei, aber dafür 
leicht zu bekommen und preiswert.
Der SAA6588T ist eigentlich nur über SEGOR zu beziehen und mit über 7€ + 
Versand recht teuer.
http://www.segor.de/suche.shtml?foto=1&Q=saa6588t&M=1
Kennst Du evtl. eine andere Bezugsquelle für den SAA6588T?

Vielen Dank nochmal.

von ruepel (Gast)


Lesenswert?

Zum SAA6588(T) habe ich keine weitere Bezugsquelle, meinen habe ich auch 
von Segor.
Der TDA7330 ist doch gut, und mit den heutigen AVRs ist die 
Matrixrechnerei in angemessener Rechenzeit zu machen.
Find' ich auch ehrlicher, als den 6588er zu verwenden ;)

von Bernhard S. (bernhard)


Lesenswert?

@alle

ich sehe gerade, dass dieser Thread schon etwas älter ist,

aber vielleicht könnt Ihr mich etwas unterstützen.

Danke

Bernhard

von Bernhard S. (bernhard)


Lesenswert?

Link vergessen, sorry:

Beitrag "RDS CRC Prüfbit Berechnung"

Bernhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.