Forum: Digitale Signalverarbeitung / DSP / Machine Learning PCM 1802 und USB-Controller


von Timo Birnschein (Gast)


Lesenswert?

Hallo Leute,

ich habe im Rahmen einer Studienarbeit die Aufgabe eine USB-Soundkarte
zu entwerfen.
Dabei stehe ich vor diversen Problemen, die ich teilweise (arbeite
schon gut drei Monate daran) gelöst habe - oder zumindest Ansätze
existieren.

Ein wichtiger Punkt ist die Synchronisation zweier dieser Soundkarten.
Dazu habe ich bereits einen Plan, jedoch noch nicht für das folgende
Problem:
Ich möchte zur AD-Wandlung gerne den PCM1802 verwenden. Dieser verlangt
jedoch eine Synchronisation zwischen der LRCK (rechts-links-Clock) und
SCKI (System-Clock), die nicht weiter als 6 BCK (Bit-Clock)s pro Frame
differieren darf, da sonst der Wandler einfach abschaltet.

Mir stellen sich dadurch folgende Fragen:
1. Wie kann ich ein 25Mhz+ Signal auf SCKI mit einem halbwegs
gewöhnlichen und stromsparenden Prozessor mit einer LRCK, die viel
langsamer läuft, synchronisieren? Kaum machbar ohne externe Hardware,
oder gibts da Möglichkeiten?
2. Mit hilfe welcher Maßnahmen stellt der AD-Wandler fest, dass ich das
Fenster nicht einhalte? Er müsste dazu eine Art mittelwert geben, da
kein(!) festes Verhältnis zwischen SCKI und LRCK vorgegeben ist.


Das nächste Problem ist die Auswahl der USB-Bausteine. Ich hätte gerne
- aus Platz-, Strom- und Firmware-Gründen - einen USB-Chip, mit
integriertem Controller wie z.B. der Cypress USB 2.0-CY7C68013 oder
-14A. Dieser müsste jetzt nurnoch schnell genug sein, um zwei
AD-Wandler und einen DA-Wandler auszulesen und mit Daten zu versorgen.
Leider ist der eingebette 8051 offenbar nicht schnell genug, da er er
bei 48Mhz nur 12 MIPS schafft, ich aber selbst assembliert mindestens
15-20 MIPS benötige um Daten über den USB zu holen und in den FIFO des
jeweiligen Endpunktes des USB-Devices zu schreiben (hier zum Glück in
HW gelöst), die Daten mittels Controller aus dem FIFO in den DA-Wandler
(PCM1748) zu shiften (Steuerleitungen wie BCK ect. müssen dazu mehrfach
getriggert werden) UND zusätzlich noch aus zwei AD-Wandlern seriell
Daten abzuholen und in jeweils einen FIFO schreiben, der dann in HW vom
HW-USB-Teil des Controllers abgeholt wird.
Das tolle am Cypress ist, dass er zum einen einfach zu programmieren
ist, zum andere alle USB-Seitigen Probleme in HW löst, man also nurnoch
ein paar Device-Beschreibungen anlegen muss und schon kann man anfangen
damit zu arbeiten. Leider ist der Controller (so meine bisherige
Vermutung) nicht schnell genug.

Wenn mir jemand ein paar Tipps und Anregungen geben könnte, wäre ich
wirklich sehr Dankbar, da die Suche nach passenden Controllern und
Bausteinen ohne Namen alleine immer sehr mühsam ist und
merkwürdigerweise von Chipherstellern auch nicht unbedingt gefördert
wird.

Mit freundlichen Grüßen
Timo Birnschein

von Matthias (Gast)


Lesenswert?

Wie wäre eigentlich mit PCM2900 bis PCM2906 von TI. Da musst du
eigentlich nurnoch die Platine dazu entwerfen :)

von Timo Birnschein (Gast)


Lesenswert?

Hm, die Idee ist nicht schlecht, allerdings ein kurzer Blick auf das
Datenblatt verrät mir, dass das nicht geht.

Punkt eins: Ich brauche 48Khz bei 24 Bit Auflösung.
Ich brauche ca. 105db SNR, 10ns maximalen Jitter und andere tolle Werte
bei denen man sich an den Kopf fassen muss. z.B. dass die Karte
eigentlich 3 Eingänge und einen Ausgang haben soll, aber das ist ne
andere Geschichte.

Aber die Idee war schonmal sehr gut :)

von Tom (Gast)


Lesenswert?

TI ist doch schon mal gar nicht so schlecht, da gibts auch
USB-Controller mit integriertem I2S Interface für Codecs

http://focus.ti.com/docs/prod/folders/print/tusb3200.html
http://focus.ti.com/docs/prod/folders/print/tusb3200a.html

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.