Forum: Digitale Signalverarbeitung / DSP / Machine Learning Filterdesign und TAP-Zahl


von Kast (Gast)


Angehängte Dateien:

Lesenswert?

Für eine Berechung sollen Daten von 10kHz bis 10MHz durch einen Bandpass 
gehen, der möglichst genau ist. Die Überabtastung beträgt 10,
die Daten werden also mit 100 MHz gesampelt. Mit einem Designer gelange 
ich zu einer TAP-Zahl von 512, was von der Berechnungsgeschwindigkeit 
reicht.

Die Filterantwort sieht bezüglich der Dämpfung gegen HF auf den ersten 
Blick mehr als ganz gut aus,
wenn ich aber reinzoome, ist es nicht steil genug denke ich. Besonders 
unten fällt das Filter gegen f=0 hin nur wenige dB ab.

Ich denke, dass es an der TAP-Zahl liegt, denn eine 10kHz-Welle wird vom 
Filter nur mit 10% der Periode erfasst. Brauche ich jetzt 10.000 TAPs, 
um unten genug Steilheit zu bekommen?

von Detlef _. (detlef_a)


Lesenswert?

>>Brauche ich jetzt 10.000 TAPs, um unten genug Steilheit zu bekommen?
Wenn das mal reicht. Der FIR kommt bei den kleinen Frequnzen nicht so 
schneller runter im Betragsfrequenzgang. Ein IIR als Hochpaßanteil 
könnte es bringen: Nullstelle bei 0, konjugiert komplexe Pole, die den 
Frequenzgang bei 10kHz hochzwingen. Der macht dann aber üble 
Phasenverzerrungen. Außerdem muß man für solche 'Steilheiten' im 
Frequenzgang mit sehr großen Bitbreiten rechnen.

Das Problem ist der mismatch zwischen den 100Mhz Abtastrate und der 
10kHz Grenzfrequenz, das paßt nicht zusammen.

Cheers
Detlef

von Uwe (Gast)


Lesenswert?

Üblicherweise wird die Abtastfrequenz durch Nutzung ovn Multiratenfiler 
passend herabgesetzt, um weiter herabreichende Filter zu bauen. Wenn man 
mit HBF arbeitet, wird je Oktave die Stufenzahl quasi verdoppelt. 
Während die oben dann durchaus 64 taps reichen, hättest Du bei Deinen 10 
Oktaven quasi 64*128 = 65536. Allerdings hat die Filterreduktion 
entsprechende Artefakte.

von Pascal O. (raven761)


Lesenswert?

Stichwort "Abtatstratenkonvertierung" mit der Nutzung mehrerer Filter. 
Damit brauchst du keine so steilflankigen Filter und sparst 
Rechenleistung. Wenn du schon 10 fach abgetastet hast, könntest du im 
ersten Schritt mit einem TP und großer Flankenbreite filtern (wg. 
Aliasing), dann mit der Abtastfrequenz um das 5fache runtertasten und 
nochmals filtern. Diesmal steilflankiger. Danach nochmals um die Hälfte 
runtertakten und du hast ein schönes, sauberes Spektrum das mit 
einfachen Mitteln gefiltert wurde.
Ansonsten fallen mir noch CIC- und Polyphasenfilter zu dem Thema ein. 
Einfach zu integrieren und schnell, da keine Multiplikationen nötig 
sind.

http://de.wikipedia.org/wiki/Abtastratenkonvertierung
http://de.wikipedia.org/wiki/Cascaded-Integrator-Comb-Filter

von Michael (Gast)


Lesenswert?

Pascal O. schrieb:
> Damit brauchst du keine so steilflankigen Filter und sparst
> Rechenleistung.
Da muss ich widersprechen. Aufgrund der Unzulänglichkeiten realer Filter 
wird bei gringerem Abstand von fs zu fg eher ein steileres Filter 
benötigt. Das ist mithin der Grund für die Forderung nach 
Abtastratenerhöhung bei digitalen Messystemen.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das gilt für das analoge Antialiasingfilter, nicht aber für digitale 
Filter. Die sind um so einfacher, je größer die relative Bandbreite der 
Filter ist. Also besser mehrstufig filtern und dazwischen eine 
Abtastratenwandlung, als in einem Schritt ein sehr schmales Filter zu 
implementieren.

Für den 10 kHz-Hochpass hilft das hier aber nichts, da ja 9,99 MHz 
Bandbreite erhalten bleiben sollen. Da kommt man nicht um ein steiles 
Filter herum.

von Kast (Gast)


Lesenswert?

Dachte ich mir!

von Dogbert (Gast)


Lesenswert?

Andreas Schwarz schrieb:
> Für den 10 kHz-Hochpass hilft das hier aber nichts, da ja 9,99 MHz
> Bandbreite erhalten bleiben sollen. Da kommt man nicht um ein steiles
> Filter herum.

Sicher?

Man kann mit einem Multirate-FIR-Tiefpass 10KHz Grenzfreq. arbeiten.
Dann ein FIR Allpass der die Gruppenlaufzeit dieses Filters (im 
Passband) nachbildet und wieder auf die Originalrate upsampled.

Differenz zwischen beiden und man hat einen Hochpass mit weniger 
Rechenaufwand als der FIR Hochpass.

Auslegung ist wohl zeitraubender, man muss mehr auf Rechen- / 
Rundungsfehler achten.

Oder Alternativ mit "FFT Konvolution" arbeiten?

von J. S. (engineer) Benutzerseite


Lesenswert?

Andreas Schwarz schrieb:
> Die sind um so einfacher

Die Frage ist, was jetzt "einfacher" heissen soll. Dass bei geringeren 
Raten weniger TAPs benötigt werden, ist ja einleuchtend, weil jedes TAP 
einen mehrfach grossen zeitlichen Bereich umspannt. Wenn aber auf der 
höheren Rate dieselbe Spanne (mit eben mehr Taps) verwended werden, ist 
das Filter definitv genauer. Die Zahl der Stützstellen, mit der die 
Filterkoeffizienten abgebildet werden steigt ja an.

Auch vom Implementierungsaufwand ist das einfacher, es werden nur mehr 
Resourcen (RAMs und auch MULs) verwendet und viel mehr Berechungen 
durchgeführt. Dies schläft vor allem bei DSP-Plattformen zu Buche, weil 
dort jede Berechung sofort in die Zeit geht und Filterkoeffizienten aus 
dem RAM holen IO-Leistung fordert.

Bei FPGAs z.B. ist das völlig anders: Man kann die Berechungen (sowohl 
für mehrere Daten innerhalb eines Filterdurchlaufs, als auch für mehrere 
Frequenzen, als auch für mehrere Filter!) parallel instanzieren und sich 
die benötigten Filterkoeffizienten in Echtzeit berechnen lassen. Die 
ganze Geschichte geht dann nur die Fläche, man spart sich aber die 
aufwändige Behandlung der Phasen mittels Delays, wenn man phasenlineare 
Filter erzeugen will.

Der Grund der Ratenreduktion ist also vornehmlich der, der 
Resourceneinsparung, da durch das verminderte Rechnen erheblich Leistung 
gespart werden kann, während sich die zusätzlichen Fehler in Grenzen 
halten. Ausserdem kommt man irgendwann an den Punkt, dass es von den 
Resourcen gar nicht mehr geht.

Wenn im vorliegenden Fall mit einer Ratenverviertelung gearbeitet würde, 
müssten 3 Stufen implementiert werden, um auf eine sinnvolle Rate für 
die geringen Frequenzen zu kommen. Dann würden 128 TAPs reichen, um 
jeweils noch ein ca 8-16 fach oversampling zu haben. (Momentan sind es 
ja 100/10 = Faktor 10) für die höchste Frequenz. Das ergäbe einen 
relativ kleinen, optmierten Filter. Die 128 TAPs auf der untersten Stufe 
müssten aber mit rechnerisch bis zu 4*4*4*128 = 8192 TAPS abgebildetet 
werden.


Kast schrieb:
> denn eine 10kHz-Welle wird vom Filter nur mit 10% der Periode erfasst.
Die 8192 TAPs mit 100 MHz brächten es auf ca 3/4 der Welle. Das reicht 
für eine ausreichende Dämpfung gegenüber Nachbarfrequenzen. Wenn es 
steiler sein soll, dann eben mehr. Ich würde 3 Wellenlängen der tiefsten 
Frequenz nehmen, das hat sich bei meinen Audio-Apps bewährt. -> 32768 
Taps :-)

Ansonsten müsste man über eine zusätzliche Vorfilterung nachdenken: Eine 
zweistufige Filterarchitektur aus Tiefpässes mit geringer Rate, die 
zunächst alles unterhalb von z.B. 5kHz ermittelt mit einem kaskadierten 
Filter bei 7kHz, um ein sauberes Stoppband zu generieren, und diesen 
tiefrequenzen Anteil dann abziehen. Danach das höhergradiges Filter, das 
den Rest bearbeitet.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

J. S. schrieb:
> Die Frage ist, was jetzt "einfacher" heissen soll. Dass bei geringeren
> Raten weniger TAPs benötigt werden, ist ja einleuchtend, weil jedes TAP
> einen mehrfach grossen zeitlichen Bereich umspannt. Wenn aber auf der
> höheren Rate dieselbe Spanne (mit eben mehr Taps) verwended werden, ist
> das Filter definitv genauer. Die Zahl der Stützstellen, mit der die
> Filterkoeffizienten abgebildet werden steigt ja an.

Naja, was heißt genauer... das sind einfach zusätzliche Freiheitsgrade, 
die man nicht braucht. Solange das Filter im Sperrbereich ausreichend 
unterdrückt ist's ja egal wie genau das aussieht.

Andersrum hat man bei der Implementierung von schmalbandigen IIR-Filtern 
sogar massive Probleme mit der Genauigkeit, weil die Pole und 
Nullstellen alle dicht beisammen liegen und man zig Bits braucht alleine 
schon um die Koeffizienten zu quantisieren.

von Kast (Gast)


Lesenswert?

Also was nun? Geringe TAP-Zahl = genauer??

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Definiere "genauer".

von Kast (Gast)


Lesenswert?

Andreas Schwarz schrieb:
> Andersrum hat man bei der Implementierung von schmalbandigen IIR-Filtern
> sogar massive Probleme mit der Genauigkeit

Ich gebe die Frage zurück: Welche Form der Genauigkeit war gemeint, bei 
der es Probleme gibt?

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.