mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Verständnisproblem - FIR-Filter


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Verständnisproblem bei den FIR-Filtern. Vieeleicht kann mir 
jemand weiterhelfen.

Ich möchte meinen Analogeingang per Bandpass filtern und diese Daten am 
Analogausgang wieder ausgeben.

Dazu bekomme ich per DMA Audio-Happen die 64 Elemente umfassen. Setze 
ich auf diesen Buffer jetzt den FIR-Filter an, so bekomme ich bei den 
ersten Elementen ein Problem, da die Werte X[n-k] ja nicht mehr 
vorhanden sind. Diese wurden ja in dem vorangegangenen Buffer bereits 
geschickt.

Meine Frage: Das ließe sich ja lösen in dem ich den vorangegangen Buffer 
zusätzlich speichere.  Da ich wenig RAM habe würde ich das aber doch 
gerne vermeiden. Muss ich das tun oder gibt es für das Problem einen 
anderen Weg?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es ein FIR-Filter sein soll, dann kommst du nicht drum rum 
entsprechend der Filterlänge genügend alte Samples zu speichern. 
Allerdings musst du nicht den ganzen vorherigen DMA-Block speichern. 
Spendier dem Filter einen eigenen Ring Buffer der die letzten K 
(K=Filterlänge) Samples speichert.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Info.

Ich habe meinen Buffer jetzt zu einem Ring-Buffer abgeändert. Allerdings 
stoße ich dabei auf ein weiteres Problem. Wenn ich die DSP-Lib von TI 
verwenden will, dann kann ich diese gar nicht nutzen ohne die Daten 
vorher in einen anderen Buffer zu kopieren. Ein Ring-Buffer wird von der 
Bibliothek nicht unterstützt.

Mal von meinem RAM-Problem abgesehen, wäre damit der gesamte 
Zeit-Vorteil der DSP-Lib hinfällig.

Hat die DSP-Lib schon jemand mal benutzt?

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom schrieb:
> Wenn ich die DSP-Lib von TI verwenden will, dann kann ich diese gar nicht
> nutzen ohne die Daten vorher in einen anderen Buffer zu kopieren. Ein
> Ring-Buffer wird von der Bibliothek nicht unterstützt.

Das finde ich jetzt insofern ein wenig kurios, als dass gerade 
Ringpuffer in der Signalverarbeitung oft und gerne verwendet werden. So 
werden zum Beispiel die Koeffizienten für ein FIR-Filter üblicherweise 
als Ring betrachtet, man setzt einen Zeiger auf das erste Element und 
dann geht's fröhlich immer in die Runde rum ;-)

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.