Forum: Digitale Signalverarbeitung / DSP / Machine Learning Wie viel Rechenpower braucht man fuer Audio


von Dirk (Gast)


Lesenswert?

Hallo,

ich baue mir grade einen Vorverstärker. SPDIFF & Analog rein und SPDIFF 
& Analog raus. Dazu kommt noch ein Prozessor (AVR) für LEDs, Tasten, RC5 
Encoder. Das ganze ist nichts wildes und damit habe ich auch keine 
Probleme.

Jetzt hatte ich aber die Idee das interne digitale Signal durch meinen 
Prozessor zu leiten, um das Signal auf einer SD-Karte zuspeichern und 
auch abspielen zu können. RAW, FLAC, oder MP3 --> kommt auf die 
benötigte Rechenleistung an.
Einen Filter würde ich auch gerne gleich mit umsetzten.

Mit DSPs habe ich noch nie was gemacht, habe aber gerade Erfahrung mit 
einem ARM7S256 vom Atmel gesammelt.

Jetzt stellt sich nur die Frage würde der für so eine Aufgabe reichen?
Wenn Nein: Für welchen Teil meiner Wünsche wäre der ARM7 noch 
einsetzbar?
Dirk

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Der AT91SAM7S256 reicht um WAV auf eine SD-Karte zu schreiben. Hab das 
hier mal ausprobiert: 
http://www.google.com/codesearch/p?hl=de#pzkOO5QRsoc/main.c&l=99

Für MP3 reicht es aber definitiv nicht, FLAC höchstwahrscheinlich auch 
nicht.

von Dirk (Gast)


Lesenswert?

Hi,

wenn WAV geht ist das doch schon mal eine Aussage.
Der Prozessor soll übrigens nicht alles gleichzeitig machen.
Nur eine der Funktionen und die System Steuerung (LEDs ...).

Das Aufnehmen ist nett wenn es geht, WAV würde mir reichen. Ich will ja 
nicht 14 Tage lang am Stück aufnehmen, 1GB reicht auch schon für einige 
Minuten im WAV Format.
Könnte OGG funktionieren?

Abspielen soll ja gehen, wie ich hier und da lesen kann.

Was mich wirklich interessiert ist ob der ARM7 reicht um das Signal zu 
Filtern. Vielleicht sogar eine Frequenzweiche?

Dirk

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Dirk wrote:
> Könnte OGG funktionieren?

Ich würde schätzen, dass man hierzu schon einen Prozessor mit DSP 
Funktionalität braucht. Samtliche Codierverfahren sind ziemlich 
rechenintensiv. Einige sind optimiert auf möglichst einfaches Dekodieren 
(wenn ich mich recht erinnere ist FLAC hier zu nennen). OGG liegt m.W. 
bereits als Fixkommaimplementierung vor, kannst es ja mal probieren und 
berichten. Was ich definitiv sagen kann ist, dass MP3 dekodieren und 
codieren gleichzeitig (Back-to-Back) auf einem Single-Core Blackfin 
geht (Fixkomma).

von Gerhard (Gast)


Lesenswert?

Für die Filter kannst du die benötigte Rechenleistung relativ einfach 
vorherbestimmen. Schau dir mal die für FIR- und IIR-Filter benötigten 
Rechenoperation und Speicherbedarf für die Ringpuffer an.

Mit Assembler, Festkommaarithmetik und 32 bit "Auflösung" (ist 
erforderlich) kriegst du bei Stereo und vorgegebener Samplingfrequenz 
ein Filter welcher Ordnung hin?

Kannst du also vergessen.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Würde ich so pauschal nicht sagen. Der Prozessor hat nicht viel zu tun 
wenn der Transfer ADC -> RAM -> DAC über DMA läuft, man hat also ein 
paar hundert Takte pro Sample zur Verfügung. Und der ARM7TDMI hat z.B. 
Befehle für signed 32x32 MAC. Damit sollte sich also schon was anfangen 
lassen.

OGG funktioniert genausowenig wie MP3, ist von der Komplexität her 
ähnlich (eher aufwändiger).

von Gerhard (Gast)


Lesenswert?

Das war bezogen auf die Frequenzweiche, also 2 Eingänge und 4 oder 6 
Ausgänge. Das ist m.E. ein bisschen zu viel des guten für den armen ARM.

von Dirk (Gast)


Lesenswert?

Den ADC will ich nicht benutzen, ich habe die Signale doch schon Digital 
im System. Der ARM7 hat eine I²S Schnittstelle. Den DMA muss ich 
benutzen sonst macht der ARM7 nur noch an der Ausgabe der Daten rum und 
hat nicht mal mehr Zeit für mein kleines Steuerprogramm. Zum Rechen 
würde der dann erstrecht nicht mehr kommen.

OK MP3 und Konsorten kann ich zum Aufnehmen also vergessen.
Abspielen geht, haben einige Projekte bewiesen.

Aber was ist mit den Filtern? Vergessen oder habe ich gute Karten das 
zum laufen zu bringen?

Gerhard hast Du ein Paar Quellen über die Rechenoperationen und dem 
Speicherbedarf von Filtern?
Ich bin glaube ich zu Blind, ich finde nichts.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Mit ADC/DAC meinte ich die SSC-Ports. Zur Machbarkeit der Filter, das 
kommt darauf an wie viele Ein- und Ausgangskanäle du verarbeiten willst 
und wie steil der Frequenzgang werden soll. "Vergessen" musst du es 
nicht.

von Dirk (Gast)


Lesenswert?

Ah ein Lichtblick!
Nun ich denke ich komme in Stereo rein (also 2 Signale rein) und gehe 
mit 1-2 * Stereo raus (also 2-4 Signale raus). Was auch gut wäre ist 
noch ein Subwoffer Ausgang (+1 Out Signal mehr).

Das ich mehr brauche kann ich mir nicht vorstellen, soll ja kein Dolby 
7.1 System werden. Das soll nur eine Frequenzweiche werden mit der 
Möglichkeit das Signal zu verbiegen  oder wenn das nicht machbar ist 
dann wenigstens ein Filter ( nur ab X Hz das Signal Ausgeben).

Die Filter???? Nun ich denke das da Filter in der Qualität einer Analog 
Weiche reichen würden. Klar wäre es gut wenn mann die wildesten Filter 
machen könnte, aber das tut nicht not.

von gast (Gast)


Lesenswert?

AT89C51SND1

von Joe (Gast)


Lesenswert?

Für MP3 würde ich Dir den AVR32 empfehlen. Hat sogar einen DSP drauf. 
Zusätzlich bei Bedarf: kostenlosen TCP/IP/ USB / Stack und eine 
kostenlose DSP Library, DMA, und wenn willst auch nen RTOS. USB Host 
dann klemmst einfach ne SD Karte dran und gut ist. Und die Eclipse IDE 
nicht vergessen mit kostenlosem GCC. Ich denke 20MHz würden für MP3 
ausreichen...

von Gerhard (Gast)


Lesenswert?

Der AVR32 hat keinen USB-Host. SD-Karten kann man aber anschließen. Er 
hat auch keinen DSP on chip, sondern vielmehr einige DPS-ähnliche 
Befehle in seinem Befehlssatz.

Für einfache Audio-Anwendungen könnte er vermutlich ausreichend schnell 
rechnen.

Um so gut wie gute Analog-Filter zu werden, braucht man einiges an 
Rechenleistung. Wenn das Signal nicht ohnehin schon digital vorliegt, 
macht es meistens keinen Sinn, digital zu filtern. Bedenke auch die 
Lautstärkestellung. Bei einer Drei-Kanal-Stereo-Frequenzweiche 
bräuchtest du ein sechsfach-Poti. Digitale Lautstärkestellung ist so 
eine Sache, da verlustbehaftet.

von mp3 (Gast)


Lesenswert?

es gibt integer mp3 implemenationen für dieses problem, fräg aber nicht 
ob da ~60mhz ausreichen, könnte ich mir aber sehr gut vorstellen ...

von Olaf (Gast)


Lesenswert?

> Aber was ist mit den Filtern? Vergessen oder habe ich gute Karten
> das zum laufen zu bringen?

Ich wuerde lieber einen FPGA nehmen. Filtern an sich ist nicht so
aufwendig, weder fuer einen DSP noch fuer einen FPGA. Aber du willst
ja eine ganze Menge Filter mit moeglichst hoher Ordnung gleichzeitig
laufen lassen. Da scheint mir ein FPGA die sauberste Loesung zu sein
weil da die Gleichzeitigkeit systemimanent ist.

Olaf

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Erst mal gilt es herauszufinden, welche Filter (Biquad, FIR, ...) mit 
welcher Ordnung und Genauigkeit für die gewünschte Frequenzweiche nötig 
sind. Danach kann man sich Gedanken um die Implementierung machen. Ein 
FPGA ist für ein paar Audio-Filter jedenfalls Overkill, das macht jeder 
kleinere DSP nebenbei.

von Dirk (Gast)


Lesenswert?

Hi,

danke für die Antworten.
Ich werde entweder einen Arm7 nehmen, weil ich den halt gerade erst 
kennengelernt hatte und für das was ich machen will reichen wird.
Oder nur einen AVR und die SD card vergessen.

Für die Filter habe ich eine Super Alternative gefunden, es gibt doch 
die TAS3103A und die kosten nicht viel.

DSPs wären zwar auch gut aber da habe ich einfach null Erfahrung.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hat da TI beim TAS3103A von Alesis übernommen? Die kommen mir so extrem 
ähnlich vor. Sogar die Nummer in der Bauelementbezeichnung ist gleich.


Gruß -
Abdul

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.