Finite Impulse Response Filter (FIR)


zurück zu DSP16-Bit-PICs , PIC-Prozessoren , Elektronik , Homepage

Einleitung
Low-Pass-Filter
High-Pass-Filter
Software zum FIR-Basteln
 

zu IIR-Filter
zu FFT

zurück zu DSP


Einleitung

Filter verändern Signale, indem sie z.B. aus dem Eingangssignal einzelne Frequenzen herausfiltern oder Bestandteile des Eingangssignals neu kombinieren.
Ein digitales Filter wird mit einem kontinuierlichen Zahlenstrom gefüttert, das das digitale Abbild eines analogen Signals ist. Es erzeugt daraus einen Ausgansgdatenstrom, der i.d.R. aus genausovielen Zahlen besteht.

Das FIR-Filter (finite impulse response filter bzw. finite-duration impulse response filter) ist eines der Arbeitspferde der digitalen Signalverarbeitung. Im ihm lassen sich z.B.

realisieren. Es ist ein Transversal-Filter bzw. tapped-delay line filter.

Ein FIR-Filter besteht aus einer Kette identischer Stufen. Als Hardware-Gerät wäre jede Stufe ein Register (Latch), ein Multiplikator und ein Addierer. Die Anzahl der Stufen hängt von der Anwendung ab. Ein simples Hochpassfilter kommt mit 2 Stufen aus, die Pulskompression in einem GPS-Empfänger benötigt 1024 Stufen.

Die eigentliche Filterfunktion wird durch die Multiplikatoren Cx bestimmt.
Die nachfolgend abgebildete 4-stufige Schaltung kann je nach verwendeten Multiplikatoren (C1 ... C4) ganz unterschiedliche Funktionen haben.

ein 4-stufiges FIR-Filter

In der analogen Zeit waren die Latches Verzögerungsleitungen identischer Verzögerungszeit. Heute sind es Register, die eine Eimerkette (ein Schieberegister für ganze Zahlen) bilden. Die Zahlen des Eingangsdatenstromes werden von Latch zu Latch durchgereicht. Der obere rechte Ausgang hinter dem letzten Latch ist offen. Hier beendet der originale Datenstrom seine Existenz.
An den vier gelben Multiplikatoren liegen also gleichzeitig mehrere (in diesem Falle 4) benachbarte Zahlen aus dem Datenstrom an. Diese Werte werden mit festen Multiplikatoren (C4..C1) multipliziert die Produkte werden zusammenaddiert und diese Summe ist der neue Ausgangswert des Filters. Mit jedem neuen Eingangswert, der in die Latch-Kette geschoben wird, ergibt sich ein neuer Ausgangswert am unteren rechten Ausgang. So besteht der Ausgangsdatenstrom aus genausoviel Zahlen wie der Eingangsdatenstrom.

In der Programmiersprache Pascal lässt sich ein FIR-Filter z.B. wie folgt darstellen:

for k:=0 to ende do
  Ausgang[k]:= Eingang[k]*C4 + Eingang[k+1]*C3 + Eingang[k+2]*C2 + Eingang[k+3]*C1;

wobei der Eingangsdatenstrom im Daten-Array Eingang liegt, und der Ausgangsdatenstrom in das Daten-Array Ausgang geschrieben wird.
 

FIR-Filter unterschiedlicher Funktion unterscheiden sich nur hinsichtlich der Anzahl ihrer Stufen, und in den Werten der festen Multiplikatoren Cx.
   

In einem FIR-Filter gibt es keinerlei Rückkopplungen. Die Information fließ nur von links nach rechts und von oben nach unten (bezogen auf die oben stehende Schaltung). Dadurch kann ein FIR-Filter nicht in's Schwingen geraten. Das klingt zwar gut, hat aber auch handfeste Nachteile. Schließlich sind herkömmliche Frequenzfilter ( z.B. LC-Filter) ja gerade schwingfähige Gebilde.
Für Frequenzfilterungen sind deshalb Filter mit Rückkoppelleitungen manchmal besser geeignet. Der Standardtyp ist hier das Infinite Impulse Response Filter (IIR).
 

nach oben

Low-Pass-Filter

Die nachfolgende Grafik zeigt ein das Frequenzverhalten mit einem 15-stufigen FIR realisiertes Low-Pass-Filter im Frequenzbereich von 0 Hz bis zur halben Samplefrequenz. Dargestellt sind:

Das Filter dämpft um 20 dB.

Die Multiplikatoren für die 15 Stufen sind:
0,02 / 0,08 / 0,03 / 0 / -0,07 / -0,16 / -0,22 / -0,25 / -0,22 / -0,16 / -0,07 / 0 / 0,03 / 0,08 / 0,02
Wer sie in ein Diagramm einträgt, wird feststellen, das es sich um Werte einer sin(x)/x-Funktion handelt 
 

nach oben


High-Pass-Filter

Die nachfolgende Grafik zeigt ein das Frequenzverhalten mit einem 15-stufigen FIR realisiertes High-Pass-Filter im Frequenzbereich von 0 Hz bis zur halben Samplefrequenz. Dargestellt sind:

Das Filter dämpft um 20 dB.

Die Multiplikatoren für die 15 Stufen sind:
0,02 / -0,08 / 0,03 / 0 / -0,07 / 0,16 / -0,22 / 0,25 / -0,22 / 0,16 / -0,07 / 0 / 0,03 / -0,08 / 0,02
Wer diese Werte mit den Multiplikatoren des obigen Low-Pass-Filters vergleicht, wird feststellen, dass einfach jeder zweite Multiplikator invertiert wurde.

nach oben

Software zum FIR-Basteln

Ich habe mir ein keines Windows-Softwaretool geschrieben, mit dem man bis zu 15-Stufige FIR-filter austesten kann. Es lassen sich die 15 Multiplikatoren der 15 Stufen einstellen, und es wird der Frequenz- und Phasengang des Filters grafisch angezeigt. Damit wurde auch die obigen Grafiken erstellt. Die Software ist zwar nur ein Spielzeug, aber wer mit FIR-Filtern ein wenig spielerisch experimentieren will, kann die Software dazu gern benutzen.

nach oben

zurück zu DSP16-Bit-PICs , PIC-Prozessoren , Elektronik , Homepage

Autor: sprut
erstellt am: 08.02.2006
letzte Änderung: 08.02.2006