www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP FIR Filter mit VDPS++


Autor: FIR_FILTER (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich möchte euch was fragen, und zwar: hat schonmal jemand ein FIR
Filter geschrieben für Blackfin ADSP-BF533 mit VDSP++ 4.0 ?

Ich habe schon etwas versucht aber irgendwie verstehe ich es nicht ganz
richtig vorallem eingie befehle z.b: fir_fr16 und weitere...

kann mir jemand helfen?

Vielen Dank
Grüsse

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Angaben zu dieser Funktion fehlen dir, die die Hilfe nicht
angibt?

Autor: Filter-FIR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
so sieht mein Programm aus, das kommt ein Signal (Echo signal)
soll mit gefiltert aber igerndwie scheint nicht richtig zu
funktionieren, klar der Signal ist ein Flaot zahl wird umgewandelt in
Fractional, dann durch Blackfin bearbeitet.
Hast Du schonmal sowas gemacht, wenn ja würde mich freuen wenn Du mir
weiter helfen kannst.

Gruss



#include <filter.h>
#include <fract.h>
#include "FIR.h"
#include "BF533 Flags.h"


#include "Echo_1_1.h"


#include <string.h>

#define laenge_filter 50

float state[laenge_filter+1];
float filt_ende[laenge_filter];
float laenge_echo=256;


float filter[6][50] = {.......}



fract16     fir_delay[laenge_filter*6];
fract16     fir_coeffs[laenge_filter*6];
fir_state_fr16   fir_state[6];

//////////////////////////////////////////////////////////////
void Init_filter(void)
{

short i,j;
float f;
int u;


  for(i=0;i<6;i++)
    {
      for(j=0;j<laenge_filter;j++)
      {
        fir_coeffs[i*laenge_filter+j]=5000;//(short)(filter[i][j]*32768);
//2^15=32768
      }
    }

  for(i=0;i<6;i++)
    fir_init (fir_state[i], &fir_coeffs[laenge_filter*i],
&fir_delay[laenge_filter*i], laenge_filter,1);
}
////////////////////////////////////////////////////////////
float filt_nrg()
{
int filtnum=2; //laenge=960,del_filt;
float x[256];
fract16 Signal_in[256],Signal_out[256];
short i;
memcpy(x,echo,laenge_echo);

  // Float to Fract.
  for(i=0;i<256;i++)

  Signal_in[i]=x[i]/32768;
fir_fr16(Signal_in, Signal_out, 256 , &fir_state[filtnum]);

fir_fr16(Signal_out, Signal_in, 256 , &fir_state[filtnum]);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.