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ß!
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.
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!
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?
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.
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.
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 ;)
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.
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ß.