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ß.
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.