www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP MMACS berechnen FIR Filter


Autor: Chris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich arbeite an einem ADSP-21469 von Analog Devices und will auf diesem 
einige FIR filter laufen lassen, die ein Eingangssignal filtern und dann 
wird das ganze auf 16 Kanälen wieder ausgegeben. Ich habe einen 
Beispielkode von Analog Devices genommen, benutze ein Audio EZ-extender, 
der mir die nötigen Kanäle gibt und wenn ich ADC->DAC ohne dazwischen zu 
filtern einstelle läuft das alles.
Jetzt will ich meine Filter berechnen und die Performance vom DSP ist 
mit 900MMACS angegeben. Ich benötige 8 Filter (4 rechts, vier links) und 
meine Samplerate ist 48kHz. Das bedeutet, wenn ich alles richtig 
verstanden habe, dass ich 48000 samples die Sekunde habe, X Filtertaps 
und 900 millionen Operationen die Sekunde zur verfügung. Die maximale 
Anzahl Filtertaps wäre demnach:

48000 * X = 900*10^6 <==> X = 18750

Ich kann also maximal 18750 Filterkoeffizienten verwenden. Wenn ich das 
Ganze jetzt allerdings teste, indem ich das Signal filtere und in 
variabeln abspeichere, dann verlangsamt das Filtern meinen Prozessor so 
sehr, dass auch das ungefiltert durchgelassene Signal statt einem 
schönen Sinus, wie ich ihn in den Audio Codec des Kittes einspeise, mir 
zwar ein Sinusförmiges Signal auch wieder rausgibt, allerdings sehr 
verzerrt, scheinbar Quantisierungsrauschen weil der Prozessor es nicht 
mehr schafft, die Samples rechtzeitig auszuspucken. Ca. bei 5000 
Filterkoeffizienten ist schon Schluss, bis dahin sieht das Signal normal 
aus, danach Rauschen. Hab ich mich verrechnet? Oder läuft was ganz 
anderes Schief?

Vielen Dank schonmal für die Hilfe!

Im Anhang ist der aktuelle Code.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt-Traumangabe vermutlich. Der DSP muss auch noch was anderes 
machen als MACs berechnen, den Ringspeicher z.B.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay aber sind 5000 koeffizienten für diesen DSP nicht etwas arg wenig? 
Zumal ich mit dem gleichen code bei 192kHz Samplerate noch 4000 
Koeffizienten problemlos verwenden kann, das sind nur 1000 weniger als 
bei 48kHz, eigentlich müsste da der unterschied doch viel größer sein?

48000 * X = 900*10^6 <==> X = 18750
192000 * X = 900*10^6 <==> X = 4688

Autor: jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise gibt es einen Überlauf bei der Berechnung.

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.