Forum: Digitale Signalverarbeitung / DSP / Machine Learning Kennt sich wer mit dem CS8406 aus ?


von Tobi F. (Gast)


Angehängte Dateien:

Lesenswert?

Hallöchen,

ich hab hier ein kleines Projekt.
Möchte meinem Mercedes-Navi einen digitalen Ausgang verpassen.
Also den I²S-Datenstrom vor dem DA-Wandler abgegriffen und in einen 
CS8406
gesteckt.

Hinten kommt auch irgendwas raus, aber SPDIF scheint es nicht zu sein.

Erstmal langsam.
Die MCLK vom DA-Wandler (CS4331) ist 16,934 MHz = 384x fs
Ich habe einen Teiler 1:3 gebaut, um aauf 128x fs zu kommen.

Am Oszi kann ich schön die Signale SData, LRClock und SClK (und MCLK) 
sehen.

Ich sehe bei SData auch daß es sich um I²S handeln muß.
Nach der LRCLK-Flanke ist erstmal ein Bit leer, bevor der Datenstrom 
anfängt.

Am Ausgang sehe ich ein Signal mit ~2,8MHz, was ja dem SPDIF-Standard
entsprechen würde. Und nach einem Übertrager mit 2x1mH und den passenden
Widerständen erkenne ich auch einen Spannungshub von 800mV, was auch
ungefähr dem SPDIF-Standard entsprechen müsste.

Was mich noch etwas stutzig macht.
Der CS8406 kann ja 16 oder 20 bit große Datenwörter verstehen.
Das, was in den DA-Wandler reingeht ist aber 18bit groß.

Ich habe eine CD mit einem Zero-Bit-Track eingelegt, und müsste da doch
lauter Nullen sehen....(nach de Eröffnungs-Sequenzen).
Das tue ich aber nicht...

Im Anhang mal ein Schematics, wie ich mir das vorstelle.
In meinem Probeaufbau ist der Eingangs-Wähler von SDIN (AD-Data, 
DA-Data, CD-Change)
nicht verwendet. Sondern direkt an SDIN vom DA-Wandler angeschlossen.

Die etwas tricky 1:3 Teilerschaltung funktioniert zwar, aber das Signal
ist nicht 100% symmetrisch. Das Signal müsste ja 177ns lang sein.
Bei mir sinds 96ns/81ns....

Und ich habe auch keine 100%ige Übereinstimmung vom LR-Signal zum 
Masterclock-Signal. (Wie in der Spec gefordert). Der Versatz ist ~10ns

Hat irgendjemand 'ne Idee ?

Viele Grüße
Tobi F.

von Tobi F. (Gast)


Lesenswert?

Ich antworte mir mal selbst...

Es wird immer more strange....

Ich hab jetzt nochmal die Spec zum SPDIF durchgelesen.
Und jetzt erst gesehen, daß da so ein "Wechselbit-Code" verwendet wird. 
http://de.wikipedia.org/wiki/Biphase-Mark-Code
http://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Bmc.png/800px-Bmc.png

Also, nochmal das Radio ans Oszi geklemmt. (Mit 'nem Doppel-Inverter vor 
der LR-Clock)

Und das ist das, was ich sehe wenn ein normaler Track läuft
http://foto.arcor-online.net/palb/alben/30/1000530/400_3731373338306335.jpg

rot ist die LR-Clock.
grün der Datenstrom am Ausgang.

Und das ist das, was ich sehe, wenn der Zero-Bit-Track läuft.
http://foto.arcor-online.net/palb/alben/30/1000530/400_3234666639663065.jpg

Wenn man jetzt weiß, daß das ein BMC-Code ist, dann kommen nach der 
Präamble nur noch Nullen.
Also, eigentlich, wie erwartet...

Nur die Präamble...
Ist irgendwie 10 Bit lang... (oder sogar mehr, wenn am Ende Nullen 
kommen)
Laut der Spec soll die aber nur 4 Bit lang sein.

Hm. Seltsam seltsam.

Das Problem könnte ja auch sein, daß ich kein einfaches Gerät habe, um 
SPDIF einzulesen.
Vielleicht sind bei mir der Behringer oder das RFX8250 nicht gerade die 
idealen Test-Kandidaten.
(Auch wenn ich den Behringer mal an meinem CD-Player dran hatte, und da 
ging er)

Edit: Das amerikanische Wikipedia sacht die Präamble wär länger...
http://en.wikipedia.org/wiki/S/PDIF

Das, was ich soweit entziffern konnte:
00100000001...
würde passen.

Viele Grüße
Tobi

von Georg A. (Gast)


Lesenswert?

Wenn das Timing prinzipiell stimmt, müsstest du schon mal "Lärm" hören 
können. Ausser du hast das V-Bit falsch oder die anderen Userstatusbits 
sind nicht richtig gesetzt. Einige Empfänger wollen unbedingt, dass die 
da signalisierte Samplerate auch mit der tatsächlichen übereinstimmt.

Beim Timing muss man mit dem CS8406 etwas aufpassen. Wenn aus 
irgendwelchen Gründen (schlechte Signalform, kaputter Teiler, etc.) im 
Masterclock vs. I2S-Clock Takte auseinanderlaufen, kann das der Chip nur 
bis zu ein oder zwei Words per FIFO auffangen. Darüber hinaus macht er 
einen Reset, dann ist erstmal wieder kurz Ruhe. Das sollte man aber auf 
dem Oszi sehen.

BTW: Die Präambel (bzw. die 3 Stück) ist eine absichtliche Verletzung 
des Biphase-Mark. Man kann sie gut daran erkennen, dass eine Stelle mit 
3 Takten länger 1 ist also sonst, wo es max. 2 Takte ohne Wechsel gibt. 
Von der Gesamtlänge entspricht sie aber 4 normalen Datenbits.

von Tobi F. (Gast)


Lesenswert?

Hallo,

ich hab mir gestern nochmal das Datenauge von der ganzen Sache 
angeschaut.
Es sieht wohl so aus, als ob ich da noch ein Timing-Problem am Eingang 
habe.
Das Signal am Ausgang sieht zwar aus, wie SPDIF, aber es springt 
manchmal
etwas hin und her. Und dann kann der Empfänger das natürlich nicht rück-
schlüsseln.

Die Alternative ist jetzt ein DIT4192 oder DIT4096 von TI.
Der kann nämlich auch 384x fs ohne so ein Teilergedöhns.

Den werde ich jetzt einfach mal probieren. Kost ja net so viel.

Danke für Deine Hilfe !

Viele Grüße
Tobi

von Georg A. (Gast)


Lesenswert?

> aber es springt manchmal etwas hin und her.

Jo. Dann gehen dir Takte verloren. Synce das Oszi mal auf den 
I2S-Wordclock und schau dann das SPDIF an. Da müsste man deutlich sehen, 
dass die Präambel durchwandert.

Bist du 1000%ig sicher, dass das durch den Teiler und nicht durch 
schlechte Signalintegrität kommt? Meiner Erfahrung nach sind die 
Crystals..äh... Ciruse da etwas mimosig. Mach mal 33-50R in MCLK und 
SCLK, oder ganz schnell gepfuscht einige 10-100pF gegen GND. Wenn das 
SPDIF sich weniger schnell gegen I2S verschiebt, ist das der richtige 
Weg...

von Tobi F. (Gast)


Lesenswert?

Ich hab jetzt einfach mal einen DIT4192 bestellt.
Der kann nämlich 384x fs im Hardwaremode verstehen.

Dann fällt das ganze Teilergedöhns weg.

Jetzt ist das Ding heute gekommen.... in TSSOP !!!!
Wie soll ich das den bitte löten ?
(Ich hab ja noch keine passende Platine)

von Tobi F. (Gast)


Lesenswert?

Heute kam der DIT4192.
Verdammt in TSSOP.
Wie soll ich das denn löten.

Nach einer ruhigen Tasse Kaffee und der Lupe hab ich mich rangesetzt:

http://foto.arcor-online.net/palb/alben/30/1000530/400_6637396430336465.jpg

Hoffentlich hab ich alles richtig angeschlossen.

Nach einem kleinen Hickup mit meine CD-Laufwerk. Lief nicht an, wenn ich 
den RST des DIT4192 mit dem D2B-Controller-RST verband)
RST soll für 500ms Low sein, und danach High. Ich hab den Pin fix mit 
einem 10k-Widerstand gegen 5V verbunden. Und mit einem Drähtchen
das Reset gegen Masse "simuliert".

Konnte ich ein wunderschönes SPDIF-Signal am Ausgang sehen.
Getriggert auf die LR-Clock.
Wunderbare 2.8MHz.
Schön stabil.

Nur seh ich keinen Datenstrom.
Sehe ich am Ausgang wunderbar stabil ein SPDIF-Signal.
Frequenz ist okay mit 2.8Mhz.
Preamble scheint auch nicht so verkehrt zu sein.

Nur ändert es sich nicht.
Hier und da zuckt mal ein Bit....
Aber ich müsste doch einen Datenstrom sehen...

Edit:
Oszibilder
Eingang. Gelb: LR-Clock. Blau:Datenstrom vom Laufwerk
http://foto.arcor-online.net/palb/alben/30/1000530/400_3136626362643338.jpg

Ausgang Gelb: LR-Clcock Blau: Ausgang Txp
http://foto.arcor-online.net/palb/alben/30/1000530/400_3131643066663833.jpg

Bissi größer
http://foto.arcor-online.net/palb/alben/30/1000530/400_6536653431363535.jpg

Ich find, das schaut ganzs sauber aus.

Wo hab ich das jetzt wieder verbockt ?

von Tobi F. (Gast)


Lesenswert?

Heureka es geht !!!!

Beim Stöbern im Netz nach Beschaltungsbeispielen hab ich 'ne Seite von 
'nem Franzosen gefunden:
http://www.premiss.org/dotclear/index.php?2008/08/14/16-etude-de-faisabilite-d-un-decodeur-dd-dts-pl-a-base-de-yss912-ou-yss918
Mit einer Schematic:
http://www.premiss.org/dotclear/pdf/dit4192-sch.pdf

Und siehe da, er hatte drei Pins anders beschaltet.
L (für Consumer / Pro-Mode - Copyright)
BLSM (für irgendso 'n Eingangs/Ausgangsbit. Blockstart)
Und MDAT (ein unwichtiger Pin, für eine Mono-Anwendung)

Auch wenn ich nicht vermutete, daß dies der Grund sein könnte, dachte 
ich, mehr als probieren kannstes net.

Also nochmal vorsichtig an der Platine die Drähtchen abgelötet und dabei 
festgestellt, daß ein Draht nicht
richtig dran war... Und zwar die SerialData-Clock.

Also alles nochmal nachgelötet.
Ans Oszi dran....

Und siehe da. Ein Datenstrom.

Dann ans Radio RFX8250 angestöpselt.
Hört hört. Da kommt was raus. freu

Danke für die Tipps und Unterstützung !

von Tobi F. (Gast)


Lesenswert?

Aber eine Frage hätte ich noch.

Hat wer 'ne Eagle Lib für den DIT4192 ?

:-)

von Georg A. (Gast)


Lesenswert?

Selber machen und auf einem Ausdruck einmal Probeliegen.

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.