In der Literatur werden Halfbandfilter im Zusammenhang mit Samplerate-Dezimierung als besonders "implementationseffizient" erwähnt. Aber sind Halfbandfilter auch wirklich effiziente Antialias-Filter? In meiner Anwendung sample ich Ultraschallsignale von 15 kHz bis ca. 180 kHz (zur Zeit noch) mit einem 12-bit, 1MSp/s ADC (AD7476A); für die weitere Verarbeitung soll die Samplerate auf 500 kSp/s dezimiert werden. Zur Vermeidung von Aliaseffekten müsste (untere Frequenz: 15 kHz) das Stoppband bei 250+15 kHz = 265 kHz beginnen; ein entsprechendes Filter (Kaiser Window, Beta=7.2) benötigt 99 Taps für eine Dämpfung von -36 dBFS @265 kHz (zur Berechnung siehe Artikel von Roberson [1]) Verzichte ich dagegen auf die Halfbandstruktur und akzeptiere eine geringe Absenkung bei 180 kHz (< -1 dB), lässt sich eine vergleichbare Performance (-36 dbFS) mit einem 43-Tap FIR-Filter erzielen (ebenfalls Kaiser, Beta=7.2). So gesehen scheinen Halfbandfilter - zumindest für Anwendungen mit größerer Bandbreite - gar nicht mehr so attraktiv. (Mangels Matlab stehen mir die von Robertson in seinem Artikel erwähnten Funktionen firhalfband() bzw. firpm() nicht zur Verfügung). DSP-Anfänger-Zusatzfrage: Wieviel Stoppband-Dämpfung will man sinnvollerweise in einem Antialias-Filter vor der Dezimierung? [1] https://www.dsprelated.com/showarticle/1113.php
Burkhard K. schrieb: > auch wirklich effiziente Antialias-Filter? Klar sind sie das, weil sich mit HBF u.a. Kaskaden aufbauen lassen, die sehr effizient arbeiten. Man muss sich aber klar vor Augen führen, dass "effizient" bedeutet, dass man viel Filter für wenig Resourcen bekommt - nicht, dass man ein maximales Ergebnis hat. Ist ähnlich wie bei CIC. Die zieht auch jeder Zweite spontan aus dem Köcher, wenn er im Hinterkopf hat, wie effizient die sein sollen. > DSP-Anfänger-Zusatzfrage: Wieviel Stoppband-Dämpfung will man > sinnvollerweise in einem Antialias-Filter vor der Dezimierung? Die maximale natürlich. Da dies ein weicher Wert ist, stellt sich die Frage nach den einsetzbaren resourcen. Man kann z.B. auch einen Viertelbandfilter bauen, mit der doppelten Frequenz abtasten und die Grenzfrequenz (nicht) auf 1/4 setzen. Filter bei doppeltem resourcen-Einsatz gefühlt 30% besser.
Moin, Burkhard K. schrieb: > Zur Vermeidung von Aliaseffekten müsste (untere Frequenz: 15 kHz) das > Stoppband bei 250+15 kHz = 265 kHz beginnen; ein entsprechendes Filter > (Kaiser Window, Beta=7.2) benötigt 99 Taps für eine Dämpfung von -36 > dBFS @265 kHz (zur Berechnung siehe Artikel von Roberson [1]) Hm - ich haett' ja eher auf 500kHz-180kHz= 320kHz als Stopbandanfang getippt. Ansonsten sind von den 99 Taps denn ja fast die Haelfte 0, d.h. es bleiben dann noch ca. 49 Multiplikationen, die man tatsaechlich machen muss - dann ist der Unterschied zu deinem 43 Tap Filter nicht mehr so riesig. (Da die Filter wohl symmetrisch aufgebaut sind, halbieren sich die Anzahl der Multiplikationen ggf. nochmal, aber dann bei beiden Filtertypen). Burkhard K. schrieb: > DSP-Anfänger-Zusatzfrage: Wieviel Stoppband-Dämpfung will man > sinnvollerweise in einem Antialias-Filter vor der Dezimierung? Soviel man halt braucht, d.h. wieviel Pegel hab' ich in meinem Originalsignal noch an der oberen Bandgrenze und was kann ich davon noch "runtergefaltet" in meinem dezimierten Signal tolerieren? Gruss WK
Dergute W. schrieb: > Hm - ich haett' ja eher auf 500kHz-180kHz= 320kHz als Stopbandanfang > getippt. Du hast natürlich recht, danke für die Korrektur. Damit entspannt sich die Lage deutlich, mit 47 Taps komme ich schon bei 300 kHz auf -72 dB. Jürgen S. schrieb: > Die maximale natürlich. Da dies ein weicher Wert ist, ... Dergute W. schrieb: > was kann ich davon noch > "runtergefaltet" in meinem dezimierten Signal tolerieren? Maximal wären bei einen 12bit Wandler -72 dB. Wenn ich über den Daumen gepeilt zwei Bit abziehe, die sowieso im Rauschen untergehen, dann -60 dB. Aber wie kann ich (vorher) abschätzen, wieviel Aliasing meine Anwendung vertragen kann? Wenn z.B. ein nachgeschalteter Frequenzzähler ab dem 8. MSB oder größer anspricht, reicht dann eine Dämpfung von 8 Bit = -48 dBFS?
Burkhard K. schrieb: > Maximal wären bei einen 12bit Wandler -72 dB. Wenn ich über den Daumen > gepeilt zwei Bit abziehe, die sowieso im Rauschen untergehen, dann -60 > dB. Aber wie kann ich (vorher) abschätzen, wieviel Aliasing meine > Anwendung vertragen kann? Das müsste schon von der Anwendung her betrachtet werden und kann dir keiner sagen. In der Regel sollte der Fehler einen Faktor 10 kleiner sein, als das was die Kette insgesamt braucht. Der Ansatz, es über den Wandler zu definieren, wäre die Ersatzlösung, nach dem Motto, "Analogfehler in der Größenordnung des Auflösungsfehlers", allerdings musst du den summarischen Fehler betrachten, also die digits die sich ergeben, wenn alle Frequenzen wirken und "aliasen". Dazu braucht es wieder eine Annahme über das Spektrum und wieviel davon im Stoppband liegt Diese könnte man heranziehen durch - bei allgemeiner Niederfrequenz einer Pauschalbetrachtung eines weißen Rauschens - bei konkret Audio einer Pauschalbetrachtung eines rosa Rauschens - bei Impulsübertragungen einer Annahme eines Rechteckspektrums - bei Radar eine Betrachtung des chirp-Spektrums - bei einer Einzelfrequenz eben der Energie dieser konkreten Frequenz Du brauchst also das Verhältnis der beiden Werte, die durch Faltung des gewünschten Spektrums bei minimaler Aussteuerung mit dem Passband einerseits und Faltung des darüber liegenden unerwünschten Spektrums im Stoppband bei maximaler Aussteuerung andererseits entstehen. Das macht aber kaum jemand, weil sich die meisten nicht so recht klar sind, was alles bei ihren Anwendungen im Stoppband herumgeistert und ungünstig rückgefaltet wird. Bei "Normalaudio" aus Mikrofonen, bekommt man kaum mehr, als 20kHz geliefert, die Dank der schwachen Aussteuerung des oberen Bandbereiches kaum besetzt sind. Da liegt dann bei einem "S" maximal 10% im Stoppband. Eine Dämpfung von 40dB sind dann schon ausreichend, um akustisch wenig Klirr zu bekommen. Bei einem Ultraschallton aus einem Ultraschallgeber sieht es etwas anders aus. Ebenfalls anders sieht es aus, will man mit einem digitalen System einen Analogsynthesizer modellieren, welcher echte Rechtecksignalformen mischt. Man kann durch zwei Überlegungen zeigen, dass man dazu dann sehr gut filtern muss, hochfrequent filtern muss und hoch abtasten muss: 1) Oberwellenanteil des Rechtecks im Unhörbaren liegt bei 40% 2) Oberwellenanteil eines Phasingsignals geht in Richtung 90%. Da man dies Oberwellen nicht hören soll, dürfen sie nicht nach unter gefaltet werden. Eine nähere Betrachtung liefert dann, dass man mit ca. 100kHz Filtern und mit 384kHz abtasten muss. Um es nahezu perfekt zu machen komme ich auf 150kHz und 768kHz: http://www.96khz.org/oldpages/comparison48khzto768khz.htm Die letzte Grafik zeigt das Problem. Vielleicht ist das ein Anstoß für deine Ultraschallthematik.
ups nicht eingelogged gewesen. Einen Nachtrag noch: Warum und wohin soll die Rate eigentlich dezimiert werden? Wenn Ultraschall von 180kHz prozessiert werden soll, gibt es eigentlich nichts mehr viel zu dezimieren. Es sei denn es wäre ein digitales PDM-Signal wie bei deiner damaligen Frage: Beitrag "MEMS Ultraschallmikro mit PDM"
Jürgen S. schrieb: > Warum und wohin soll die Rate eigentlich dezimiert > werden? Wenn Ultraschall von 180kHz prozessiert werden soll, gibt es > eigentlich nichts mehr viel zu dezimieren. Von 1000 auf 500 kSps/s. Zum einem, da der DDR-Zwischenspeicher auf dem FPGA-Board begrenzt ist, statt vielleicht 3.5 Sekunden (2x2x16 Bit) passt das Doppelte rein, zum anderen weil es später wohl eh ein 500 kSps/s ADC werden wird - und dann im Hinblick auf die Datenmenge, die bei Übertragung zum PC anfällt. engineer schrieb: > weil sich die meisten nicht so recht klar > sind, was alles bei ihren Anwendungen im Stoppband herumgeistert und > ungünstig rückgefaltet wird. Eine gewisse Vorstellung habe ich schon, siehe angehängte FFT. Den Ansatz PDM-Mikro habe ich aufgegeben (reicht nicht weit genug), stattdessen benutze ich meinen eigenen Vorverstärker. Der hat wegen des notwendigen Ausgleich des abfallenden Mikrofrequenzgangs (Knowles FG-23629, -12 dB/Octave ab 12 kHz) einen nur flach auslaufenden Noisefloor, um den sich das Antialiasfilter vor dem ADC kümmern muss. Zur Messung habe ich Verstärker und Ultraschallgeber in eine mit Schaumstoff gepolsterte Kiste gesperrt. Der Peak bei ca. 630 kHz scheint eine RF-Einstreuung zu sein, die meisten anderen sind wohl reale Verzerrungen aus der Sender-Empfänger-Strecke. Wie es in der freien Wildbahn aussieht, muss sich dann ab Frühjahr zeigen. Fledermausortungsrufe z.B. sind sehr oft Downchirps mit vermutlich geringem Oberwellenanteil, der bei Grillen oder Zikaden dagegen sehr ausgeprägt sein dürfte (Sägezahn). Es geht also weniger darum "perfekt" zu sein, als vielmehr einen guten Kompromiss hinzubekommen. Etwas Rauschen darf es schon.
Burkhard K. schrieb: > Von 1000 auf 500 kSps/s. Dann würde ich auf die maximale Frequenz fokussieren, die noch ortbar sein soll, also z.B. die 180kHz. Also z.B. ein einfacher FIR mit GF bei 500/3=166kHz oder 500*3/8=187,5, das gibt einfache Koeffizienten.
Moin, Achja - einen habbich auch noch zum Thema: Bisschen bloed fuer die Anwendung hier ist, dass natuerlich ein Halbbandfilter, egal wie steil es auch ist, bei seiner Grenzfrequenz nur 6dB Daempfung hat... Gruss WK
Dergute W. schrieb: > bei seiner Grenzfrequenz nur > 6dB Daempfung hat... Was soll dabei das Besondere sein? Die Grenzfrequenz eines jeden Filters ist doch so definiert, dass ein gewisser Abfall da ist?
Moin, Ich schrub nix von "Besondere" sondern von "Bisschen bloed". Und jetzt ueberleg' mal, wenn du eine 2:1 Dezimation machen willst, wo das Aliasspektrum losgeht, und wie ein Tiefpass aussehen sollte, damit das sicher um mehr als 6dB gedaempft wird - wenn man das denn will. Gruss WK
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.