Grundlæggende om FIR-filtre
1.1 Hvad er “FIR-filtre”?
FIR-filtre er en af de to primære typer af digitale filtre, der anvendes i DSP-applikationer (Digital Signal Processing), den anden type er IIR.
1.2 Hvad betyder “FIR”?
“FIR” betyder “Finite Impulse Response” (finite impulsrespons). Hvis man indsender en impuls, dvs. en enkelt “1”-prøve efterfulgt af mange “0”-prøver, vil der komme nuller ud, efter at “1”-prøven har bevæget sig gennem filterets forsinkelseslinje.
1.3 Hvorfor er impulsresponset “endeligt”?”
I det almindelige tilfælde er impulsresponset endeligt, fordi der ikke er nogen feedback i FIR. Manglende feedback garanterer, at impulsresponset er endeligt. Derfor er udtrykket “finite impulse response” næsten synonymt med “no feedback”.
Men hvis der anvendes feedback, men impulse response alligevel er finite, er filteret stadig et FIR. Et eksempel er det glidende gennemsnitsfilter, hvor den N-te forudgående prøve trækkes fra (feed back), hver gang en ny prøve kommer ind. Dette filter har et endeligt impulsrespons, selv om det anvender feedback: efter N stikprøver af en impuls vil output altid være nul.
1.4 Hvordan udtaler jeg “FIR?”
Nogle mennesker udtaler bogstaverne F-I-R; andre mennesker udtaler det, som om det var en slags træ. Vi foretrækker træet. (Forskellen er, om man taler om et F-I-R-filter eller et FIR-filter.)
1.5 Hvad er alternativet til FIR-filtre?
DSP-filtre kan også være “Infinite Impulse Response”-filtre (IIR). (Se dspGurus IIR FAQ.) IIR-filtre bruger feedback, så når du indfører en impuls, ringer udgangen teoretisk set i det uendelige.
1.6 Hvordan kan FIR-filtre sammenlignes med IIR-filtre?
Hvert filter har fordele og ulemper. Samlet set opvejer fordelene ved FIR-filtre dog ulemperne, så de bruges meget mere end IIR-filtre.
1.6.1 Hvilke fordele er der ved FIR-filtre (sammenlignet med IIR-filtre)?
I forhold til IIR-filtre har FIR-filtre følgende fordele:
- De kan let designes til at være “lineært fasede” (og er det som regel også). Kort sagt, lineære fasefiltre forsinker indgangssignalet, men forvrænger ikke dets fase.
- De er enkle at implementere. På de fleste DSP-mikroprocessorer kan FIR-beregningen udføres ved at lave en sløjfe af en enkelt instruktion.
- De er velegnede til applikationer med flere hastigheder. Med multirate menes enten “decimering” (reduktion af samplingfrekvensen), “interpolation” (forøgelse af samplingfrekvensen) eller begge dele. Uanset om der er tale om decimering eller interpolering, gør brugen af FIR-filtre det muligt at udelade nogle af beregningerne og dermed opnå en betydelig beregningseffektivitet. Hvis der derimod anvendes IIR-filtre, skal hvert output beregnes individuelt, selv om det at output vil blive kasseret (så feedback vil blive inkorporeret i filteret).
- De har ønskelige numeriske egenskaber. I praksis skal alle DSP-filtre implementeres ved hjælp af aritmetik med finite præcision, dvs. et begrænset antal bits. Brugen af finite-præcisionsaritmetik i IIR-filtre kan medføre betydelige problemer på grund af brugen af feedback, men FIR-filtre uden feedback kan normalt implementeres ved hjælp af færre bits, og designeren har færre praktiske problemer at løse i forbindelse med ikke-ideel aritmetik.
- De kan implementeres ved hjælp af brøkregning. I modsætning til IIR-filtre er det altid muligt at implementere et FIR-filter ved hjælp af koefficienter med en størrelsesorden på mindre end 1,0. (FIR-filterets samlede forstærkning kan om ønsket justeres ved dets udgang). Dette er en vigtig overvejelse, når der anvendes fastpunkts-DSP’er, fordi det gør implementeringen meget enklere.
1.6.2 Hvad er ulemperne ved FIR-filtre (sammenlignet med IIR-filtre)?
I forhold til IIR-filtre har FIR-filtre undertiden den ulempe, at de kræver mere hukommelse og/eller beregning for at opnå en given filterresponskarakteristik. Desuden er visse responser ikke praktiske at implementere med FIR-filtre.
1.7 Hvilke udtryk bruges til at beskrive FIR-filtre?
- Impulsrespons – “Impulsresponset” for et FIR-filter er i virkeligheden blot sættet af FIR-koefficienter. (Hvis du sender en “impuls” ind i et FIR-filter, som består af en “1”-prøve efterfulgt af mange “0”-prøver, vil filterets output være sættet af koefficienter, da 1prøven bevæger sig forbi hver koefficient på skift for at danne output.)
- Tap – Et FIR-“tap” er ganske enkelt et koefficient/forsinkelsespar. Antallet af FIR-taps (ofte betegnet som “N”) er en indikation af 1) den mængde hukommelse, der er nødvendig for at implementere filteret, 2) antallet af beregninger, der kræves, og 3) den mængde “filtrering”, som filteret kan udføre; flere taps betyder i praksis mere stopbåndsdæmpning, mindre ripple, smallere filtre osv.
- Multiply-Accumulate (MAC) – I en FIR-sammenhæng er en “MAC” den operation, hvor en koefficient multipliceres med den tilsvarende forsinkede dataeksempel og resultatet akkumuleres. FIR’er kræver normalt en MAC pr. tap. De fleste DSP-mikroprocessorer implementerer MAC-operationen i en enkelt instruktionscyklus.
- Overgangsbånd – Båndet af frekvenser mellem passband- og stopband-kanterne. Jo smallere overgangsbåndet er, jo flere taps er nødvendige for at implementere filteret. (Et “lille” overgangsbånd resulterer i et “skarpt” filter.)
- Delay Line – Sættet af hukommelseselementer, der implementerer FIR-beregningens “Z^-1”-forsinkelseselementer.
- Circular Buffer – En særlig buffer, der er “cirkulær”, fordi en inkrementering i slutningen får den til at vikle sig rundt til begyndelsen, eller fordi en dekrementering fra begyndelsen får den til at vikle sig rundt til slutningen. Cirkulære buffere leveres ofte af DSP-mikroprocessorer for at implementere “bevægelsen” af prøverne gennem FIR-delay-line uden at skulle flytte dataene bogstaveligt talt i hukommelsen. Når der tilføjes en ny prøve til bufferen, erstatter den automatisk den ældste.