Forum: Digitale Signalverarbeitung / DSP / Machine Learning STM32F4 als DSP


von Olaf (Gast)



Lesenswert?

Hallo Leute

Vielleicht interessiert sich ja noch jemand dafuer in weit man heutige 
Microcontroller als DSP verwenden kann. Um dafuer ein Gefuehl zu 
bekommen habe ich mal schnell mit Oktave ein Bandpass berechnet:

fs=40000
Nyquist=fs/2;
F=[3000 4000 6000 8000];
A=[0 1 0];
dev=[0.004 10^(0.1/20)-1 0.004];
[M,Wn,beta,typ]= kaiserord(F,A,dev,fs);
[H,freq]=freqz(b,[1],512);

Im Anhang einmal der berechnete Filter aus Octave, und einmal das 
Messergebnis mit meinem Oszi (Huellkurve) und Signalgenerator.

Das Sampling laeuft mit 40khz, der Filter ist noch in keiner Weise 
speziell auf die CPU optimiert und das Problem optimiert 
(16Bit*16Bit=32Bit multiplikation)



 // So machen das Renesascontroller, aber dafuer sind ARM zu doof.
 //  filsum=rmpa_w(0,MAXTAP,Taps,data+MAXTAP-filpos);

 // Fuer jede CPU:
 for (i=0; i<MAXTAP; i++)
  {
  filsum = filsum + (signed long) ( RingData[MAXTAP-filpos+i]
        * Taps[i]);
  }

In der Praxis benoetigt der Controller dann 55% seiner Rechnenleistung 
bei 168Mhz und 187Taps.

Mit anderen Worten damit kann man schon was machen. :-)

Olaf

von Olaf (Gast)


Lesenswert?

Ups...ich hab die falschen Frequenzpaare reinkopiert. Richtig sind die 
hier:
F=[2200 2800 3200 3800];

von Kai (Gast)


Lesenswert?

Also mit etwas Optimierung sollte man das auf <= 9% Auslastung bekommen 
:-)

Stichworte
- SIMD Instruktionen nutzen (ist ja ein M4 Kern)
- Symmetrie der Filterkoeffiziententabelle ausnutzen
- Bei den Koeffiziententabellen mit Pointern arbeiten und 
inkrement/decrement der Pointer nutzen.

Wenn es Stereosignale sein/werden sollen kann man das auch noch 
ausnutzen, da die Filterkoeffizienten ja gleich bleiben und man sich 
dadurch das zweimalige durchgehen durch die Koeffiziententabelle sparen 
kann.

Schau Dir auch mal CMSIS-DSP an:
CMSIS-DSP: DSP library with over 60 functions in fixed-point (fractional 
q7, q15, q31) and single precision floating-point (32-bit) 
implementation

Nicht gerade immer das beste und effizienteste, aber spart am Anfang 
etwas Arbeit.

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.