RDS-Projekt |
#4 Block/Rahmensynchronisation, Decider, Diff. Decoder |
|
von Johannes Mühlbauer
Das Projekt teilt sich in mehrere Funktionsblöcke auf, diese unterscheiden sich und funktionieren wie folgt:
Decider:
Empfangener AD-Wert des Signals zum Bit-Takt wird geprüft, ob größer oder kleiner "0";
=> Wert >= 0: Bitwert = 0;
=> Wert < 0: Bitwert = 1
Differential Decoder:
Die Dekodierung des neuen Bitwertes erfolgt nach folgender Tabelle:
Previous Input (at time ti-1) |
New Input (at ime ti) |
New Output (at time ti) |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
Danach Einfügen des neuen ermittelten Bitwertes in "26-bit-shift-block-register" an vorderster Stelle.
Block-/ Gruppensynchronisation:
Struktur und Aufbau einer Datengruppe:
Da die RDS-Information in mehrere Gruppen mit der eigentlichen Information und den
dazugehörigen Blockkennungen aufgeteilt ist, ergibt sich für eine Gruppe folgende Struktur:
Polynomdivision:
Blockschaltbild der Polynomdivision eines Blocks mit dem dazugehörigen Generatorpolynom g(x):
g(x) = x10 + x8 + x7 + x5 + x4 + x3 + 1
Dabei wird jeweils der zu prüfende Block bitweise in das Polynomregister seriell
eingeschoben (alle 26 bits) und das so entstandene 10bit-Syndrom im Syndromregister nach
untenstehender Syndromtabelle mit dem dazugehörigen Offset-Word verglichen. Ist der
Vergleich erfolgreich, so ist der eingelesene Block identifiziert.
Syndromtabelle:
Offset
|
Offset word d9, d8, ..., d0
|
Syndrome S9, S8, ..., S0
|
A
|
00 1111 1100
|
01 0111 1111
|
B
|
01 1001 1000
|
00 0000 1110
|
C
|
01 0110 1000
|
01 0010 1111
|
C'
|
11 0101 0000
|
10 1110 1100
|
D
|
01 1011 0100
|
10 1001 0111
|
weitere Aufgaben der Stufe:
Prüfung des Synchronisations-Flags von "Error Decoder"
neue Synchronisation: bei jedem neuen empfangen Bit wird eine Polynomdivison mit dem "26-bit-shift-block-register"
durchgeführt und das Ergebnis dieser Division mit dem Syndrom für Block "A" verglichen; ist das Ergebnis OK, so ist
ein Block "A" gefunden. Umschaltung auf "State2"; Offset wird eliminiert und Block "A" in Gruppe gespeichert.
Synchronisation OK: nachdem auf Block "A" neu synchronisiert wurde (State2 erreicht), werden die nächsten 26 neuen
Bits im Schieberegister gesammelt und danach mit diesem neuen Block eine Polynomdivision mit Syndromvergleich wie bei Block
"A" durchgeführt. Ist Block "B" OK, so wird auf "State3" umgeschaltet, Offset für Block "B" extrahiert und in Gruppe
abgespeichert. Wird nun die Zustandsmaschine über das "Synchronisations-Flag" des "Error decoder" nicht gestört
(State3 bleibt erhalten), so wird nach jeweils 26 neu empfangenen Bits ein weiterer Block ohne Synchronisationsprüfung
abgespeichert. Ist eine Gruppe, bestehend aus 4 Blöcken, komplett empfangen, so wird diese mit dem Aufruf des "Error
Decoders" übergeben.
Eingangssignal der Stufe:
|
alle 842µs (1187,5Hz bit-rate clock) wird dieses Teilprojekt von dem vorhergehenden Teilprojekt
"Bit-Clock-Recovery" aufgerufen und der aktuelle Signalabtastwert (= codierter Symbolwert )
übergeben.
der nachfolgende "Error decoder" hat auch die Möglichkeit beim Auftreten einer bestimmten
Anzahl von Fehlern eine neue Synchronisierung anzufordern; dies erfolgt über ein sog. "err_sync-Flag" das immer
eingelesen und geprüft wird (err_sync = 0 bedeutet, daß eine Neusynchronisation erforderlich ist).
sind 104 Bits (4 Blöcke mit je 26 Bit) angekommen und richtig synchronisiert, so erhält der
"Error decoder" beim Aufruf eine komplette Gruppe mit diesen 4 Blöcken (Offset bereits von
10-bit-Prüfwort eliminiert).
Übergabe eines Anzeige-Flags (syc_rds_led) an PC-Software, um Synchronisation anzuzeigen (syc_rds_led = 1:
Synchronisieren).
|