Forum: Mikrocontroller und Digitale Elektronik RDS Dekodierung von Anfang an


von RDS Anfänger (Gast)


Lesenswert?

Hallo

Ich baue mir gerade eine kleine Stereoanlagen, an der eigentlich alles
geht. Doch nun wollte ich das System um einen RDS Dekoder ergänzen,
doch ich verstehe überhaupt nichts.

Angennommen, ich habe jetzt 26 Bit empfangen, woher soll ich wissen,
welche Bits ich vor mir habe. Wenn ich dann die richtigen Bits jemals
habe muss ich sie ja mit einem 10x26 Bit Generatormatrix multiplizieren
doch wie? Ich kann doch nicht ein Matrix mit einer Zahl multiplizieren,
oder? Dann verstehe ich gar nichts mehr.

Kann mir jemand helfen?

Vielen Dank im Vorraus!

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Du must nach jedem einzelnen Bit prüfen ob du Bit- und Block synchron
bist. Wenn Synchronität hergestellt ist, kannst du die Blöcke mit Hilfe
der CRC prüfen und verarbeiten.

Ich habe einen RDS Decoder bereits gebaut:
http://www.mictronics.de/?page=rdsdec

/Michael

von RDS Anfänger (Gast)


Lesenswert?

Hallo

genau da liegt ja mein Problem!

Wie erkenne ich ob ich syncron bin ?

Wie verarbeite ich mithilfe der CRC die Blöcke?

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Als von Anfang an:

Du empfängst einen RDS Datenstrom mit hilfer der Clock und Daten
Signale.
Innerhalb des Datenstroms gibt es keinen Anhaltspunkt für den Start und
das Ende eines Blocks. Um einen Block zu empfangen must du den Empfänger
als erstes in Bit- und Blocksynchronität zum Datenstrom bringen.

Das geht wie folgt:
Du empfängst 26 Bit aus dem Datenstrom. Jetzt überprüfst du diesen
Datensatz auf gültige CRC. Das geht am einfachstem mit vorberechneten
CRC Werten für jedes einzelne Bit. Für jedes 1 Bit wird der
entsprechende CRC Wert mit der empfangenen CRC XOR verknüpft.
Wenn du das gemacht hast bleibt am Ende das Syndrom übrig. Für jeden
der 5 Blöcke gibt es ein Syndrom, du braucht nun nur das eben
berechnete zu prüfen und weist welchen Block du empfangen hast,
vorausgesetzt die CRC und das Syndrom waren gültig.

Wenn du kein gültiges Syndrom nach der Berechnung erhalten hast,
schiebst du die 26 Bit um eins nach links und hängst am Ende EIN
weiteres empfangenes Bit an, nun fürst du die obige Berechnung wieder
durch und überprüfst wieder auf ein gültiges Syndrom.

Das ganze machst du solange bis Du ein gültiges Syndrom gefunden hast.
Nun ist der Empfänger Bit- und Blocksynchron zum Datenstrom.
Solltest Du ab jetzt ein ungültiges Syndrom berechnen, must du sofort
wieder bei Null anfangen und erneut die Synchronität herstellen, das
man davon ausgehen muss das diese nicht mehr gegben ist.

Mit dieser Prozedur stellst du spätestens nach 26 weiteren empfangenen
Bits die Synchronität her, wenn der Datenstrom nicht unterbrochen
wurde.

Anhand des gültigen Syndrom kannst Du nun festellen welchen der 5
Blöcke du empfangen hast, und die enthaltenen Daten verarbeiten.

von Aufreger deluxe (Gast)


Lesenswert?

@ RDS Anfänger

Welchen RDS-Dekoder benutzt du? Es gibt nämlich auch welche, die die
ganze Syndromgeschichte schon automatisch machen und dir lediglich via
I2C die dekodierten Blöcke zur Verfügung stellen. Evtl. kannst du dir
den Aufwand komplett sparen.

von RDS Anfänger (Gast)


Lesenswert?

@ Aufreger

Leider verwende ich nicht einen solchen Dekoder, son deshalb, da ich
keine Bezugsquelle finden konnte.

@ Michael Wolf

Vielen Dank für die Hilfe ich werde es jetzt erst mal probieren ob ich
es richtig verstanden habe.

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Rein aus Interesse:

In was programmierst Du? Und für welchen Controller?

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.