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!
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
Hallo genau da liegt ja mein Problem! Wie erkenne ich ob ich syncron bin ? Wie verarbeite ich mithilfe der CRC die Blöcke?
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.
@ 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.
@ 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.