mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RDS Dekodierung von Anfang an


Autor: RDS Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: RDS Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

genau da liegt ja mein Problem!

Wie erkenne ich ob ich syncron bin ?

Wie verarbeite ich mithilfe der CRC die Blöcke?

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Aufreger deluxe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: RDS Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rein aus Interesse:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.