STM32F4 als DSP

Gast #3100282
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
Angehängte Dateien:
Gast #3101010
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren