Forum: Mikrocontroller und Digitale Elektronik STM32F4 als Audio-DSP im Auto. Überschlagen helfen


von Gerald G. (gerald_g)


Lesenswert?

Hallo,

da mich mein Ton im Auto etwas nervt, und die DSPs dort meistens erst ab 
250€ los gehen, habe ich mir Gedanken zu einem lowcost DSP gemacht.
4 Kanal Audio soll mit einem x-beliebigen Audio ADC in 24bit 48khz 
gesampled werden.
Das ganze wird dann mit dem STM32F429 Disco abgearbeitet (da dort schon 
8MB SD-RAM drauf sind) und über einen weiteren x-beliebigen Audio DAC in 
24bit und 48khz ausgegeben.

Der DSP soll:
-Hochpass(Butterworth)/Tiefpass(Butterworth)/beides pro Kanal berechnen. 
Das wollte ich mittels IIR machen. Ich erinnere mich noch düster an 
etwas, wie Anzahl der Filterelemente entspricht etwa dem Grad des 
Filters. Also bei einstellbarer 30dB/Oktave bis zu 10 Elemente im 
Filter(sprich Multiplikationen pro Kanal pro "Pass")

-Kanäle Zeitverzögern. Also einfach mehr Samples zwischenspeichern.

- 10 Band Equalizer. Hier habe ich noch etwas im Kopf, dass man 
IIR-Filter designen kann, die mit 3 Elementen einen solchen Equalizer 
beschreiben. Also eines für die mittlere Frequenz, eines für die Breite 
und eines für die Höhe der Änderung. Das wären also noch einmal 30 
Multiplikationen pro Kanal.

Macht alles in allem bis zu 90 Multiplikationen pro Kanal. Bei 4 Kanälen 
am Ausgang also 360 Multiplikationen alle 48khz, also 17,2 Mio 
Multiplikationen pro Sekunde und eben so viele Additionen.

Das sollte der STM32F429 doch packen, wenn man die FPU aktiviert, oder?
Es reicht einfach bei Coocox im Menü die Hardware FPU zu aktivieren, und 
dann sollte der Compiler meine Multiplikationen richtig übersetzen, 
oder? (Und eventuell sogar die MACC nutzen)

danke schonmal fürs lesen!

von Raymund H. (raymund_h)


Lesenswert?

24 Bit im Auto ist overkill, Floatingpoint dafür auch.

Die M4 FPU hat mit 3 Zyklen pro MAC und ohne SIMD zudem nur 1/3 der 
Leistung des 32Bit Festkomma MAC, die integer SIMD des M4 ist mit 2 x 16 
Bit MACS pro Zyklus nur bedingt für Audio nutzbar.

Das einzig wirklich sinnvolle am M4 ist hier der Takt von 180MHz, doch 
da macht fast ein 180MHz M3 mehr Sinn.

8Gb RAM braucht es auch nicht, man will Audio ja nicht 2 Tage verzögern, 
oder?

Sinnvolle Verzögerungen gehen schon mit dem internen Speicher.

Und wenn man sich die ganze Arbeit macht ist die bestimmt mehr wert als 
250€.

Außerdem ist hier eine Mehrkanalverarbeitung für die vielen Lautsprecher 
im Auto angesagt um wirklich eine akustische Verbesserung und nicht nur 
den schlechten Klang zu einem laut schreienden schlechten Klang zu 
machen.

von Gerald G. (gerald_g)


Lesenswert?

Hi,

danke für deine Antwort.

Ich weiß, das STM32F429 board ist nicht die beste Wahl hierfür, doch 
habe ich damit schon ein paar Projekte gemacht, die toolchain 
installiert und konfiguriert, und nicht zuletzt, noch eines übrig :D

Bei 3 cycles pro float Multiplikation inkl Addition, sollte das ja 
eigentlich passen.
24bit deshalb, da es quasi eine Art standard ist.

Das board hat 8Mb RAM, nich 8Gb. Wobei 4Mb davon für das Display 
reserviert sind. Da kann man eventuell auch die Kurven des Equalizers 
darstellen.

Auch wenn das Board nicht ideal ist, sollte es technisch möglich sein, 
wenn ich das richtig sehe.
Dann werde ich mal ein Adapterboard layouten, mit Spannungsversorgung 
und ADCs/DACs und anschlussbuchsen.

Falls jemand doch erkennt, dass es nicht geht, bitte rechtzeitig hier 
schreiben :D
Natürlich auch bei sonstigen Anregungen.

von Matthias (Gast)


Lesenswert?

Ich würde einen Audio-Codec für die nehmen wie den CS4245

Für die Rechnerei benutzt du am besten die CMSIS-DSP Library:
http://www.keil.com/pack/doc/CMSIS/DSP/html/index.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.