Forum: Digitale Signalverarbeitung / DSP / Machine Learning Einfachses Filter designen


von R. K. (uc_student)


Lesenswert?

Hallo zusammen

Ich versuchen ein digitales Hochpassfilter zu designen, welches ich sehr 
einfach und effizient implementieren kann. Für eine einfache 
Implementation ist folgendes entschedend:
-Ordnung (also Länge des Filters)
-Anzahl Koeffizienten, welchen nicht 0 sind
-Auflösung, welche die einzelnen Koeffizienten benötigen. (z.B. 3 Bit)

Gibt es ein Tool, mit welchem ich solche Filter designen kann?

Das fdatool von Matlab kann zwar Filter designen, jedoch werden diese 
nicht mit den quantisierten Koeffizienten optimiert.

Liebe Grüsse aus der Schweiz

von Christian (Gast)


Lesenswert?

Die Koeffizienten deines Filters hängen doch von der Applikation ab und 
nicht vom Tool zum Designen. Von daher versteh ich die Frage nicht 
wirklich....

von R. K. (uc_student)


Lesenswert?

Ja klar hängen die Koeffizienten schlussendlich von der Applikation ab. 
Doch um die geeignetsten Koeffizienten zu finden nutze ich jeweils ein 
Tool. Ich würde gerne beispielsweise einige Punkte im Amplitudengang 
vorgeben und das Tool gibt mir dann die einfachsten quantisierten 
Koeffizienten zurück. Die meisten Tool optimieren die Filter mit 
Fliesskommagenauigkeit und quantisieren danach. Ich denke es wäre 
besser, wenn die Quantisierung schon während der Optimierung betrachtet 
würde.

Oder bin ich auf dem völlig falschen Weg und muss es mir einfach mit Try 
and Error zusammenbasteln und hoffen, dass die Quantisierung dann ok 
ist?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Bei der analogen Filterberechnung rechnet man auch erst mal mit idealen 
Bauteilen. Danach simuliert man das Filter mit realen Bauteilmodellen, 
vor allem die Induktivitäten mit sehr endlicher Güte. Dann kann man den 
Simulator noch ein bißchen optimieren lassen.
Ich fürchte, das ist beim digitalen Filter das gleiche Probelm. Die 
Filtertheorie beschreibt erst mal nur ideale Bauteile.
Was stört denn bei der Quantisierung, schwingt das Filter oder ist nur 
die Abweichung vom Idealwert zu groß?

Ich habe mal von Berechnungsmethoden gelesen, wo die "Empfindlichkeit" 
der einzelnen Koeffizienten berechnet wird, wie stark Abweichungen in 
das gesamte Filter eingehen. Das war in ISBN 0201361302 zum Thema 
"multiplierless filters". Da werden möglichst nahe liegende einfache 
Binärbrüche als Koeffizienten gesucht, um die Multiplikation in kleinen 
FPGAs durch Schiebeoperationen zu ersetzen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Eigentlich berechnen die Filter-Design-Programme die Kurven schon 
diskret, also inklusive Quantisierung und Sampling, Tapzahl. 
Schlussendlich kann man das aber auch leicht selbst verifizieren, wenn 
man sich die Wirkung des Filters ansieht und mit dem idealen vergleicht.

Klar ist, dass jede Rundung da eine Einschränkung macht, da sich der 
Wert des Signals ändert und auch die Wirkung der Koeffizienten. Die 
müssen teilweise sehr genau sein, um nicht unakzeptable Verzerrungen zu 
generieren.

Als Faustformel kann man davon ausgehen, dass die Summe der Fehler der 
Koeffizientenrundungen maximal in der Grössenordung der 
Eingangsgenauigkeit liegen darf. Ein 256 TAP Filter summiert da 
statistisch (1 Sigma-Grenze) das 8-fache des durchschnittlichen 
Rundungsfehlers. Also muss die Auflösung der Koeffizienten mal um 3 Bit 
besser sein, als die der eingehenden Werte.

Wenn man eine Güte haben will, die nur von den Fehlern des Filters 
selber beeinflusst sein soll, bräuchte man da schon die 3-Sigma-Grenze = 
7 von 8 Bit - bei 1024 Taps also 8-9 Bit besser.

Ein Audiofilter, das bei 1024 TAPs oder mehr 24 Bit-Daten verarbeiten 
soll, muss daher schon mit 32-Bit breiten Koeffizienten gefüttert 
werden, wenn es Sinn machen soll. Im CPU-Bereich passt das so recht gut, 
problematisch wird es bei FPGAs:

Beitrag "Re: Digitales Mischpult mit FPGA"

von Markus F. (Gast)


Lesenswert?

Christoph Kessler (db1uq) schrieb:
> Bei der analogen Filterberechnung rechnet man auch erst mal mit idealen
>
> Bauteilen. Danach simuliert man das Filter mit realen Bauteilmodellen,

ich rechne nie mit idealen Bauteilen und simulieren schon gar nicht, 
weil die Simulatin mit idealen Bauteilen meist mislingt oder damische 
Ergebnisse bringt.

von Kai Z. (liquidsteel)


Lesenswert?

Schau dir Winfilter an. Ist free und meiner Meinung nach viel besser wie 
fdatool.
Als Quantisierung kannst du da zwar nur zwischen 8bit, 16bit und float 
umstellen, aber vlt. hilt dir das schon weiter.

von chris (Gast)


Lesenswert?

Meinst Du dieses:
http://www.winfilter.20m.com/

von Kai Z. (liquidsteel)


Lesenswert?

genau!

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
Noch kein Account? Hier anmelden.