Hi zusammen! Ich hatte vor kurzem folgende Idee zum Bau eines Digitalverstärkers: 1. hochweriger A/D-Wandler nimmt das Originalsignal an (Digitaleingang später natürlich auch) und wandelt es direkt in einen digitalen Datenstrom um (gibt von Analog Devices einen Audio-Stereo-A/D-Wandler mit 24-bit @ 96 kHz - such ich euch auf Wunsch nochmal raus) 2. Der digitale Datenstrom wird von einem (oder mehreren) Mikrocontrollern oder DSPs in verschiedene Frequenzbänder unterteilt (3 - 5) 3. optional: Das Signal wird verzögert und/oder phasengedreht 4. Der digitale Datenstrom wird beispielsweise über Cat.5-Kabel bis unmittelbar zu den Boxen geleitet (Bitte nachher nicht an solchen Kleinigkeiten festhalten - Glasfaser geht natürlich auch ;) ) 5. Die digitalen Signale werden mit eigens für den jeweiligen Frequenzbereich optimierten Verstärkern (Tiefe Töne: hohe Leistung, hohe Auflösung der Elongation, geringe zeitliche Auflösung; Hohe Töne: geringe Leistung, hohe zeitliche Auflösung) unmittelbar vor der Membran D/A-gewandelt und verstärkt. Im Ergebnis hätte ich da gerne einen Verstärker/Endstufe mit unfassbar hohem Signal-Rausch-Abstand, den ich per USB kalibrieren kann (Phasen, Laufzeiten, etc.) Ich wollte das Thema einfach mal mit euch durchdiskutieren. Vielleicht hat der ein oder andere schon Erfahrung damit. Vielleicht ist das ganze auch aufgrund der Signallaufzeiten zum Scheitern verurteilt - wobei Musik ohne Film dann immer noch gehen würde. Ich denke zunächst ist der Algorithmus für die Frequenzweiche das Interessanteste. Später vielleicht der Aufbau und die Optimierung der Endstufen. Bin mal gespannt ;)
Für sowas würde ich aufgrund der benötigten Anzahl an Schnittstellen vielleicht einen FPGA empfehlen. Zum berechnen der Filter kann man ja einen Softcore einsetzen. Ansonsten gibt es hier im Forum/Wiki auch ein Projekt.
Danke für die Einschätzung. Hatte jetzt vorerst eine 32-bit MCU von Atmel im Auge - die sind für mich im Moment noch greifbarer als FPGAs. Bei FPGAs weiß ich noch nicht, wie ich mit den paar Logik-Elementen auskommen soll... habe das Gefühl, ich habe davon eine etwas falsche Vorstellung. So viele Schnittstellen werden's wohl auch nicht... das meiste sind serielle Datenströme. Mit DSPs kenne ich mir ehrlich gesagt (noch) gar nicht aus. Um welches Projekt im Forum/Wiki handelt es sich? Folgende Threads zum Thema Frequenzweiche habe ich gefunden: Der Beitrag hier Beitrag "Aktive Filter (Frequenzweiche)" hat mich schonmal zu http://en.wikipedia.org/wiki/Butterworth_filter geführt... muss mir da noch erarbeiten, wie sich das alles digital berechnen lässt - find's bis jetzt noch nicht offensichtlich. Beitrag "digitale Frequenzweiche mit Atmega 8535" beschäftigt sich mit einem einfachen Spectrum-Analyzer - ist ja nicht wirklich schwer und reicht für meine Zwecke leider nicht. Beitrag "DSP für Aktivlautsprecher?" Klingt auf jeden Fall interessant und hat mich zu http://focus.ti.com/docs/prod/folders/print/tas3103a.html geführt. Der hat allerdings "nur" drei Ausgänge und ich wollte mich halt selbst mal an dem Problem versuchen und nicht allzu viele Teile von der Stange zu holen. Ansonsten gefällt der! Preis ist auch fair. Hier wird was Ähnliches versucht, wie ich vor habe... allerdings analog Beitrag "Frequenzselektiver AMP im NF-Bereich" Das Projekt hier klang auch sehr vielversprechend... scheint sich aber nichts mehr zu tun und die Ausgänge der Schaltung wären auch wieder analog gewesen: Beitrag "TAS3xxx - Digitaler Audio Prozessor" Die 54 anderen Threads zu den Themen fand ich nicht wirklich passend. Mein erster Ansatz basiert auf einer einfachen Fourier-Analyse (96 Bänder) und anschließender Resynthese zu 5 Frequenzgruppen. Muss mal schauen, ob die Rechnung aufgeht und ob ich einen geeigneten Träger für den Algorithmus finde. Im Moment schaue ich noch, ob ich die Latenzzeiten im unteren Frequenzbereich kleiner kriege, sieht aber gut aus. Werd mich jetzt noch was ziellos in die Berechnung von Filtern einarbeiten. Ist wahrscheinlich ganz einfach, aber mir fehlt noch ein wenig die Orientierung.
Naja, du brauchst ja im Endeffekt für jeden Kanal (bzw. Stereokanal) eine serielle Schnittstelle. Per Software kommst du da vermutlich schnell an die Grenze der Rechenleistung und ein normaler uC hat vermutlich nicht genügend Hardwareschnittstellen. Mit einem FPGA kannst du quasi beliebig viele serielle Schnittstellen an deinen Softcore hängen. Mit dem richtigen FPGA hast du auch massig Platz. Ich vermute du denkst da eher an einen CPLD wenn du "ein paar Gatter" schreibst. Das kann man nicht vergleichen. Wieso willst du das mit FFT machen, wieso kein einfaches digitales Filter (FIR, IIR und was es da alles gibt)?
Habe die Filter noch nicht ganz verstanden... muss mich wie oben geschrieben noch tiefer in die Materie einarbeiten. Alle Artikel, die ich hier rumliegen habe beschreiben nur die Eigenschaften der FIR- und IIR-Filter und nicht, wie sie berechnet werden. Ich weiß, dass ich iegendwelche Koeffizienten brauche... wo ich die herbekomme, und ws ich damit nachher mache weiß ich noch nicht genau. Lerne halt noch ;) Warum Fourier? Damit kenne ich mich im Moment noch am Besten aus und mit irgendwas muss ich ja mal anfangen ;) Der dickste Cyclone hat 5300 logic cells. Bei reiner 32-bit Arithmetik komme ich auf 5300 / 32 = 165 32-Operationen, die ich darauf ausführen kann - das wäre was dünn. Wie gesagt, ich kann mir das nicht vorstellen, dass das alles sein soll. Die Anzahl der verfügbaren Gatter ist in meinen Augen uninteressant, oder habe ich da was verwechselt? CPLDs fallen klar raus.
Da hast du was falsch verstanden. Ich kenn jetzt den Cyclone nicht, aber ein mittlerer FPGA von Xilinx hat 500k Zellen. Dazu noch etwas RAM und sonstige Hardwarebausteine (Multiplizierer etc). Selbst ein kleinerer FPGA hat bei der Implementierung von einem Microblaze (einem 32-Bit RISC) mit ein bisschen Peripherie noch die Hälfte seines Platzes übrig. Zur Filterberechnung gibt es massig Programme. Software wie Matlab (oder die freien "Klone") können mit Sicherheit auch sowas und geben teilweise gleich den passenden C-Code aus.
Die Spartan3-FPGAs von Xilinx haben 50K bis 5M sog. "System Gates"... ich denke, die meinst du mit Zellen. Wie viele davon brauch ich denn beispielsweise für einen 32-Bit-Volladdierer? (jetzt ohne große Optimierung) Ich würde jetzt unwissend wie ich bin 32 sog. "Equivalent Logic Cells" aneinanderkabeln. Jede davon addiert mir mittels LUT Bit A + Bit B + Carry und liefert mir die Summe und das neue Carry. Ein FPGA mit 1M System Gates hat gerade mal 17280 logic cells - würde für 540 32-Bit-Additionen reichen :/ Wo ist mein Verständnisfehler? Die Filtergeschichte habe ich denke ich verstanden... berechnen werde ich das erstmal zu Fuß um sicherzugehen, dass ich auf dem richtigen Weg bin. Fühle mich in der komplexen Zahlenebene noch nicht ganz zu Hause... aber es wird. Danke soweit für die Infos!
Habe ein ziemlich geniales Dokument zu dem Thema gefunden: http://deposit.ddb.de/cgi-bin/dokserv?idn=970716729&dok_var=d1&dok_ext=pdf&filename=970716729.pdf Das beschreibt sehr gut den Aufbau rauscharmer Komponenten wie A/D-Umsetzer, D/A-Umsetzer, Filter, etc. so... bin dann mal weiterlesen...
Kai Giebeler wrote: > Ich würde jetzt unwissend wie ich bin 32 sog. "Equivalent Logic Cells" > aneinanderkabeln. Jede davon addiert mir mittels LUT Bit A + Bit B + > Carry und liefert mir die Summe und das neue Carry. Ein FPGA mit 1M > System Gates hat gerade mal 17280 logic cells - würde für 540 > 32-Bit-Additionen reichen :/ > Wo ist mein Verständnisfehler? Man führt natürlich nicht alle Rechenoperationen parallel durch, sondern nacheinander. Der Filter kann z.B. mit 50 MHz laufen und pro Sample > 1000 Multiplikationen/Additionen durchführen. Schau dir mal dieses Projekt an: Audio-DSP mit Spartan 3-FPGA
Habe das Projekt schon länger im Blick... allerdings werden hier nicht mehr die mir fehlenden Grundlagen erörtert, sprich: FPGA, VHDL und Filteralgorithmen :( Was ich bräuchte wäre ein Tutorial "Algorithms to equalize a time discrete series of audio samples"... am Besten mit Quellcode Was ich mir bis jetzt in diesem Zusammenhang erarbeitet und weitgehend verstanden habe: - Laplace-Transformation (habe Verständnisschwierigkeiten bei der Rücktransformation) - Fourier-Transformation (gut, die kenne ich schon was länger ;) ) - Impulsantwort - Faltung Was ich noch nicht verstanden habe: - Biquads - was ist das? Wie setze ich die ein? - Filterkoeffizienten - wo kommen die her (jetzt mal von Matlab abgesehen)? Wo setze ich die wie ein? Mit meinem jetzigen Kennstnisstand würde ich einfach einen Impuls mit Fourier oder Laplace in die Frequenzdomäne transformieren, das Ergebnis phasenverschieben und die Amplituden anpassen, das Ergebnis wieder in die Zeitdomäne rücktransformieren und das eingehende Signal damit falten. Ich habe aber bei Laplace wie gesagt Probleme mit der diskreten Rücktransformation und Fourier kriege ich nur bei periodischen Signalen sinnvoll angewandt... was mein eingehender Impuls nunmal nicht ist. Außerdem ist die Faltung extrem rechenintensiv. hoffentlich kann jemand was mit meinem geistigen Gewirr was anfangen ;) Ich les mich dann mal weiter durch's Internet... hoffentlich sind bald die Bücher da...
Habe etwas ähnliches schon "im Auge". Am PC bereits nutzbar wenn man foobar hat (mp3 Player und mehr. Ich habe damit digitale Raumkorrektur gemacht (versucht): [http://drc-fir.sourceforge.net/] Der Erfolg ist so naja. Es wird einfach mit der Impulsantwort FIR gefiltert, Koeffizienten bekommt man z.B. aus der FFT. Jetzt kommt der Haken: Je länger die Zeitverzögerung ist desto höher ist der Rechenaufwand. Ein leistungsfähiger PC oder Workstation, also schneller als ein DSP, stösst damit schnell an seine Grenzen. Kannst ja mal ausprobieren ob es was für dich ist. Ansonsten liefert Behringer ein digitales Lautsprechermanagementsystem für appel and egg. Alles was du brauchst... ULTRADRIVE PRO DCX2496 www.behringer.com (www.thomann.de für 248EUR)
Danke für den Projekthinweis... les mich da gleich mal durch.
Das mit der überlangen Impulsantwort ist mir auch aufgefallen. Ich
wollte mit der Impulsantwort höchstens Phase und Amplitude verändern.
Die Laufzeitkorrekturen soll je ein nachgeschalteter Rinpuffer für jeden
Lautsprecher übernehmen - das verkürzt die Impulsdauer enorm.
Die Fertigsysteme interessieren mich im Moment noch nicht - bin noch
optimistisch genug, das selbst (und mit eurer Hilfe natürlich ;) )
hinzubekommen.
> Der Erfolg ist so naja.
Woran liegt's? Bzw. inwiewern? Nur das Problem mit der Rechenleistung,
oder ist die Qualität nicht zufriedenstellend?
so, hole jetzt erstmal Brötchen...
>Die Fertigsysteme interessieren mich im Moment noch nicht - bin noch >optimistisch genug, das selbst (und mit eurer Hilfe natürlich ;) ) >hinzubekommen. Ich zumindest werde da wohl keine Hilfe sein, da es mir im Moment noch zuviele unbekannte Variablen gibt. Die Fertigsysteme interessieren mich auch nicht, sie können auch kein FIR. Das drumherum also Bauteile für A/D ist bei Behringer aber absolut brauchbar und auch rauszukriegen evtl sogar nutzbar. Als Breitbandfan mit FE103E (1,9g Membranmasse) möchte ich die Gruppenlaufzeit optimieren. Auch 2g Membranmasse sind natürlich viel zu schwer obwohl der FE103E schon ein richtiger Hammer ist. Man will mir einreden das man das nicht hört. Also was ein DSL-Modem aus dem Takt bringt das hört ein Mensch gar nicht... Das möchte ich mit 20g Membranen machen schließlich kommt auch noch Sonofil und ein BR-Rohr dazu. (vergessen: http://www.hometheatershack.com/roomeq/ auch mit AVR32 etwas dabei) >> Der Erfolg ist so naja. >Woran liegt's? Bzw. inwiewern? Nur das Problem mit der Rechenleistung, >oder ist die Qualität nicht zufriedenstellend? Ich verwende eine m-audio Delta2496, die für mich relativ konkurrenzlos dasteht alternativ habe ich Crystal Sound DA Chips. Ich denke dass es mit der Rechengenauigkeit zusammenhängt, d.h. es müssen mehr als nur floats her, das wurde auch anderswo schon bemängelt. Den Delay via Verzögerungsschaltung zu machen krankt genau an dem für das Ohr sehr kritischen Grundtonbereich, also entweder machst du die Entzerrung über FIR oder es lohnt sich gar nicht: http://www.fairaudio.de/lexikon-g.html#Gruppen-Laufzeit Im Hintergrund steht der Präzedenzeffekt um den geht es hier.
Die Arbeit von Swen Müller habe ich übrigens schon lange. Für einen akademischen Grad ist sie allemal gut und auch amüsant. Es ist ein klassisches Beispiel dafür wie man zu Null gleich Null kommt. Am Ende werden Leute mit halboffenem Mund zu Hörsessions befragt, naja. Für den Fall, dass einem die Sache "am Herzen" liegt muss man Zwischenlösungen und Optimierungen und Kompromisse machen. Ich denke schon dass da noch einiges drin ist.
Finde die Arbeit auch recht amüsant - schön viele Stilblüten drin ;) Hat mir aber dennoch eine ganze Ecke weitergeholfen, was das Verständnis für die Materie angeht und sind einige gute Ideen drin. Klar gibt's am Ende einen Kompromiss an Qualität, Echtzeittauglichkeit, Aufwand und Kosten - meine Priorität liegt im Moment noch ganz klar bei der Qualität... zumindest bis ich die Kosten kenne ;)
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.