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 ;)