RDS-Projekt   #4 Block/Rahmensynchronisation, Decider, Diff. Decoder

von Johannes Mühlbauer

Inhalt

Projektbeschreibung
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:
Blockaufbau

Polynomdivision:
Blockschaltbild der Polynomdivision eines Blocks mit dem dazugehörigen Generatorpolynom g(x):
g(x) = x10 + x8 + x7 + x5 + x4 + x3 + 1
Blockschaltbild Generatorpolynom
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.

    Blockschaltbild

    Blockschaltbild Block-/Rahmensync.


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

    Ausgangsdaten der Stufe:
  • 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).

    Zurück Weiter