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
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.
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 ;)
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.
Jaja, die Welt ist klein. Mit Dir hätte ich auch nicht gerechnet ;) Moppedfahrer?
@ 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.
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 ;)
@alle ich sehe gerade, dass dieser Thread schon etwas älter ist, aber vielleicht könnt Ihr mich etwas unterstützen. Danke 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.