Hallo! Mein Ziel ist es, ein digitales Filter in einem FPGA zu implementieren. Der Aufbau sieht wie folgt aus: Funktionsgenerator(sinus)->AD_Wandler->digitales_Filter->DA_Wandler->Osz i Bei der Berechnung der Filterkoeffizienten rechnet man mit der normierten Grenzfrequenz Fg (Fg=Grenzfrequenz/Abtastfrequenz=fg/fa). Ich möchte ein digitales Filter entwerfen, welches bei einer -->Abtastfrequenz von 40 kHz eine -->Grenzfrequenz von 1 Hz hat. -->Dies entspricht einer Fg von 0,000025. Dieser Filter (fa=40kHz, fg=1Hz) hat aber eine reale Grenzfrequenz (-3dB) bei ca. 100 Hz (gemessen). -->Meinen Messungen zufolge, kann ich nur digitale Filter entwerfen, bei welchen Fg > ca. 0,01 ist. Bei allen größeren Fg`s funktioniert mein digitales Filter wie gewünscht (sogar überraschend genau). Zur Information - zur Berechnung der Filterkoeffizienten verwende ich die Window-Methode mit dem Hamming-Fenster. ------------------------------------------------------------------------ -- Ist es möglich ein digitales Filter mit einer Fg < 0,01 zu entwerfen? Besteht eine Grenze bei digitalen Filtern bezüglich Fg? Wenn ja, warum? ------------------------------------------------------------------------ -- Danke für eure Antworten! Gruß
Sorry! Mir ist ein Fehler unterlaufen: Ist es möglich ein digitales Filter mit einer Fg < ca. 0,001 zu entwerfen?
Sicher ist das möglich, aber: je schmaler dein Filter ist, desto mehr machen sich Rundungsfehler bemerkbar. 0.001 f_s als Grenzfrequenz ist schon ziemlich extrem. Nimm mal die gerundeten Werte der Filterkoeffizienten wie du sie auf dem FPGA implementierst, und rechne daraus z.B. mit Matlab auf den Frequenzgang zurück, dann wirst du wahrscheinlich sehen dass der mit deiner Spezifikation nicht mehr viel zu tun hat. Statt die Wortbreite endlos zu erhöhen implementiert man solche schmalen Filter oft mit (mehrstufiger) Abtastratenwandlung, wobei jede Stufe nur eine relativ harmlose Grenzfrequenz hat. "Multirate filter" nennt sich das.
Ja, das funzt mit Integerrechnung schlecht, Du triffst die Koeffizienten nicht genau genug. Heißer Kandidat für Digitalfilter im FPGA sind CICs: http://www.xilinx.com/ipcenter/catalog/logicore/docs/cic.pdf http://en.wikipedia.org/wiki/Cascaded_integrator-comb Cheers Detlef
Hi! Erst mal ein Dankeschön an euch zwei für die schnelle Antwort. Mit sogenannten CICs bzw. Multirate Filtern habe ich mich noch nicht beschäftigt. Ich habe die Links kurz überflogen, dass werde ich jetzt jedoch umgehend noch genauer studieren. Jedoch habe ich den Eindruck, dass ich mit meiner Abtastrate runter müsste. Das ist aber schlecht da ich in der späteren Anwendung ca. alle 25us Daten bekomme und ich keine Daten verlieren will. Gruß
>> Jedoch habe ich den Eindruck, dass ich mit meiner Abtastrate runter muß Nein, Du muß nicht mit der Abtastrate runter, Du kannst bei Deinen 40kHz bleiben. Die CICs dezimieren die Abtastrate, beispielsweise von 40kHz auf 500Hz, aber die muß die Originalabtastwerte natürlich nicht wegwerfen. Ne Grenzfrequenz von 1Hz bei ner Abtastrate von 40kHz macht absolut keinen Sinn, da kann sich ja von sample zu sample nichts ändern, das ist Faktor 20k überabgetastet. Dann besser mit CIC die 40ks/s auf 40000/512 samples/s dezimieren und einen Wert dieses Filters 512 Mal nacheinander ausgeben, das ist immer noch Faktor 50 überabgetastet. Ein CIC dezimiert zwar (interpolieren kann es auch), aber man verliert keine Informationen. Das CIC transformiert samplerate zu Auflösung, Du handelst also Abtastrate gegen Bitauflösung und zwar in beide Richtungen. Man kann das mit FPGAs auch zum Exzess treiben: Ein 1-Bit Wandler (Comparator) mit hoher Abtastrate (einige MHz) liefert am FPGA mit CICs schöne 16Bit bei 48ks/s oder so. Cheers Detlef
CIC-Filter sind alles andere als optimale Dezimationsfilter, man verliert Informationen durch Aliasing von Rauschen und den krummen Frequenzgang im Durchlassbereich. Normale FIR-Filter hätten da viel bessere Eigenschaften, der einzige Vorteil von CICs ist dass sie sehr einfach zu implementieren sind. Man verwendet sie deshalb z.B. als erste Stufe bei hohen Datenraten (GSM) und/oder großen Dezimationsfaktoren; den Frequenzgang im Durchlassbereich muss man dann auf der langsamen Seite ggf. wieder mit einem FIR-Filter geradebiegen.
>>CIC-Filter sind alles andere als optimale Dezimationsfilter Ja >>man verliert Informationen durch Aliasing von Rauschen und den krummen >>Frequenzgang im Durchlassbereich. Nein. Informationstransferrate bestimmt sich mit Shannon über die Bandbreite und das SNR. Die CICs transformieren das eine in das andere. Wenn man keine Voraussetzung verletzt, geht da nix verloren >>der einzige Vorteil von CICs ist dass sie sehr einfach zu implementieren >>sind. 'einzige Vorteil' ist gut gesagt. Und der einzige Vorteil der Addition ist ebenfalls, dass sie so einfach zu implementieren ist !? CIC Filter haben seit den frühen Tagen der CD-Player ('256 fach Oversampling') als Treibsatz für AD und DA Wandlung gedient. Jeder Audio Player hat nen schnellen 1 BIT Wandler mit CICs drin. Sigma/Delta Wandler, nicht denkbar ohne CIC. MIT nem CIC, FPGA und 2 schnellen digital IOs hast Du nen hochqualitativen AD/DA Wandler for free, kost nix. Dont mess with CIC ! Cheers Detlef
Detlef _a wrote: >>>CIC-Filter sind alles andere als optimale Dezimationsfilter > Ja >>>man verliert Informationen durch Aliasing von Rauschen und den krummen >>>Frequenzgang im Durchlassbereich. > Nein. Informationstransferrate bestimmt sich mit Shannon über die > Bandbreite und das SNR. Die CICs transformieren das eine in das andere. > Wenn man keine Voraussetzung verletzt, geht da nix verloren Der Punkt an dem du Information verlierst ist der Übergang auf die niedrige Abtastrate, d.h. wenn du nur jedes n-te Sample verwendest und den Rest wegwirfst. Wenn das Signal perfekt tiefpassgefiltert wäre, dann wäre dieser Schritt für den Durchlassbereich verlustlos, weil das Signal aber wegen der relativ schwachen Sperrdämpfung des CIC-Filters noch höherfrequente Komponenten enthält bekommt man Aliasing und damit SNR-Verschlechterung im Durchlassbereich.
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.