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
Ups...ich hab die falschen Frequenzpaare reinkopiert. Richtig sind die hier: F=[2200 2800 3200 3800];
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.