Forum: Digitale Signalverarbeitung / DSP / Machine Learning ADAT-Decoder mit DAC verbinden. Serielle Datenformate.


von Moritz Schaller (Gast)


Lesenswert?

Hallo liebes Forum,

ich möchte aus einem ADAT-Stream acht analoge Audio-Signale erhalten und 
habe zwei ICs die das bewerkstelligen sollen:

Einen Adat-Decoder: CoolAudio V1402
(Datenblatt: 
http://www.coolaudio.com/docs/datasheet/V1402_DATASHEET.pdf)

Und einen 8-Kanal D/A-Konverter (DAC): Texas Instruments PCM1680
(Produktseite mit Datenblatt: http://www.ti.com/product/pcm1680)

Mir geht es um das serielle Datenformat über das beide kommunizieren 
sollen.

Ab Werk ist der DAC auf "Left Justified" eingestellt.

Am Decoder kann ich Left-Justified auch als Format anwählen. Dazu ist 
vermerkt: "BCLK rises on WDCLK edge" (siehe: Datenblatt Seite 2) Aus den 
Bildchen darunter wird ersichtlich, dass die BitClock also immer dann 
aufsteigt wenn die WordClock den Zustand wechselt. All diese Clocks kann 
der Decoder aus dem ADAT-Stream übrigens selbst generieren.

Was mich nun verwundert ist folgendes:

Im Datenblatt des DAC steht dass für die Bitclock auch die aufsteigende 
Transiente ausschlaggebend ist, soweit so gut. Aber auf den Bildchen 
darunter fällt (!) die Bitclock wenn die Wordclock den Zustand wechselt! 
(siehe: Datenblatt Seite 15)

Das kann aber nicht sein weil ja beide Chips die selben Clocks verwenden 
sollen. Nun frage ich mich ob die Modi kompatibel sind.

Ich setze mich das erst mal mit serieller Datenübertragung auseinander. 
Muss der empfangende Chip, also der DAC, das Signal irgendwie 
zeitversetzt auslesen damit das entsprechende Bit schon komplett 
geschalten ist?

Ich bitte um Hilfe!

Gruß!

von Bitmeister (Gast)


Lesenswert?

Bei AC97 wird immer die doppelte bitclock verwendet. Vielleicht ist das 
bei dem ADAT auch so. Der hat ja nur 48kHz, soweit mir bekannt. Oder die 
Clock ist versetzt, wegen center alignment.

von Moritz Schaller (Gast)


Lesenswert?

Die Wordclock (oder Samplefrequenz) ist bei ADAT standardmäßig mit 48kHz 
getaktet.

Die Bitclock kann anscheinend auf unterschiedlichen Frequenzen laufen. 
Standardmäßig auf 3,027MHz was dem 64fachen der Wordclock entspricht.

Zusätzlich generiert der ADAT-Decoder noch eine System-Clock die mit 
12,288MHz nochmal höher liegt.

Meine Frage beziet sich aber nur auf die Phasenlage dieser Clocksignale 
zueinander. Auf der einen Abbildung ist deutlich zu sehen, dass jede 
Transiente der Wordclock mit einer aufsteigenden Transiente der Bitclock 
zusammenfällt. Auf der Abbildung im anderen Datenblatt findet sich an 
dieser Stelle eine absteigende Transiente!

von Moritz Schaller (Gast)


Lesenswert?

Ok, ich denke mir kommt langsam Licht ins Dunkel.

Gehe ich richtig in der Annahme dass ein Bit beim Sender zB zur 
aufsteigenden Flanke der BitClock umgeschalten wird, aber dann erst 
einen halben Cycle später beim Empfänger ausgelesen wird, also wenn das 
bit schon stabil seinen Zustand gewechselt hat?

von J. S. (engineer) Benutzerseite


Lesenswert?

Moritz Schaller schrieb:
> Gehe ich richtig in der Annahme dass ein Bit beim Sender zB zur
> aufsteigenden Flanke der BitClock umgeschalten wird, aber dann erst
> einen halben Cycle später beim Empfänger ausgelesen wird, also wenn das
> bit schon stabil seinen Zustand gewechselt hat?

Das ist eigentlich der Standardfall. Die meisten Geräte arbeiten so, 
dass der Takt negiert ausgeben wird, um eben genau in der Mitte der 
Daten zu sein, was das Zielgerät angeht.

Gfs meinst Du aber auch was anderes:

Ich weiss nicht auswendig, was ADAT genau liefert- Ich hatte mich nur 
kurz damit befasst. u.a. hier:

Beitrag "Re: [S] FPGA Empfehlung für Audioprojekt"
Beitrag "Re: Frage zu ADAT®-Splitter Selbstbau"

Mein ADAT to S/PDIF Decoder jedenfalls arbeitet nur als Multiplexer und 
scheint so nur Pegel umusetzen, von daher ist das Format bei beiden 
dasselbe. Die Codierung erfolgt nun bei S/PDIF im sogenannten 
Biphase-Mark-Code. Da gibt es diese Flankenwechsel scheinbar inmitten 
des Taktes. Dazu wird faktisch beim Sender der doppelte Takt benötigt, 
um das sinnvoll handeln zu können.

Ich verwende inzwischen kaum noch ADAT, wäre aber trotzdem interessant. 
Vielleicht könnte man sich diesbezüglich austauschen.  Werde bei 
Gelegenheit wohl doch noch mal ein physikalisches ADAT-Protokoll 
aufzeichnen.

von Moritz Schaller (Gast)


Lesenswert?

Hallo Jürgen,

danke für deine Antwort.

Der ADAT-Decoder (CoolAudio V1402) ist quasi eine Komplettlösung um aus 
dem ADAT-Stream alle Signale zu erhalten, die benötigt werden. Es geht 
bei diesem IC quasi darum, dass man sich mit dem ADAT-Protokoll 
überhaupt nicht auseinandersetzen muss.

Die serielle Übertragung der vier digitalen Stereo-Ausgänge soll laut 
Datenblatt in Formaten geschehen, die jeder handelsübliche DAC versteht. 
Ich denke wenn es ADAT-spezifische Besonderheiten gäbe, dann wäre darauf 
hingewiesen worden.

Die Clocksignale werden standardmäßig alle aus dem eingehenden 
ADAT-Stream abgeleitet oder generiert. Diese Signale sind auf jeden Fall 
dafür gedacht einen DAC damit anzusteuern.

Ich selbst habe bisher noch nie mit serieller Datenübertragung 
gearbeitet, deshalb werden mir erst nach und nach grundlegende 
Funktionsweisen klar. In sofern hilft mir deine Antwort sehr.

Sicher werde ich nicht um ausgiebiges Prototyping auf dem Steckbrett 
herumkommen um zu sehen welche Konfigurationen von DAC und ADAT-Decoder 
das gewünschte Ergebnis bringen.

von Georg A. (georga)


Lesenswert?

Die seriellen Interfaces (I2S, ...) sind nicht "normal" synchron, so wie 
man das in einem FPGA sonst macht... Die Formate sind von der Herkunft 
ja so steinalt, da war gleichzeitiger Clock- und Datenwechsel mit 
einhaltbarem Setup/Hold noch nicht drin ;)

von Peter (Gast)


Lesenswert?

Eigentlich sollte sich aus den Datenblättern doch entnehmen lassen, was 
genau rauskommt, welches Format und welches timing es hat. Wenn der Chip 
(ich kenne ihn nicht) proklamiert, man könne jeden DAC anschliessen, so 
wird das auch der Fall sein, im Rahmen dessen, was der Hersteller unter 
"jedem DAC" versteht.

Ein schneller Blich meinerseits offeriert schon mak eine varibale 
Datenbreite am Ausgang, also ist zumindest der CHIP ja mal einstellbar. 
Bliebe der TI-DAC und solche Dinge wie das alignment sind meist 
einstellbar. Fragt sich nur, um es in HW vorzugeben ist, oder man es per 
SW einstellen muss. Oftmals verlangen die hitec DACs unserer Tag nach 
einem I2C Master. Dann kommst Du ohne einen kleinen FPGA nicht herum und 
dann kannst Du eh alles.

von Moritz Schaller (Gast)


Lesenswert?

Hallo Peter,

richtig. Sowohl der ADAT-Decoder als auch der DAC lassen sich 
konfigurieren. Beim Decoder sind es einfach zwei Pins die mit HIGH oder 
LOW beschaltet werden. Der DAC hat aber etliche Einstellmöglichkeiten, 
die alle per SPI oder I2C in ein Register geschrieben werden.

Ich wollte mir die Software-Einstellungen nach Möglichkeit sparen und 
hatte gehofft ich könnte die Werkseinstellung benutzen. Leider wird das 
wohl nicht gehen. Nun werde ich um einen kleinen Mikrocontroller nicht 
herumkommen.

Der Controller muss ja beim Einschalten des Gerätes nur einmal 16bit 
(oder 2x 8bit?) in das Register im DAC schreiben. Was für einen 
Controller brauche ich dafür? Preis ist ein Faktor, da ich mehrere 
Geräte baue.

Gruß.

von Georg A. (georga)


Lesenswert?

Da sollten die 8-Pin-Varianten von AVR (ATtiny*) oder PIC (12F*) bequem 
reichen.

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.