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?
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.
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?
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 ;-)
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.