Gast
#390660
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