Grunderna för FIR-filter
1.1 Vad är FIR-filter?
FIR-filter är en av två huvudtyper av digitala filter som används i tillämpningar för digital signalbehandling (DSP), den andra typen är IIR.
1.2 Vad betyder FIR?
FIR betyder Finite Impulse Response. Om du lägger in en impuls, det vill säga ett enda ”1”-prov följt av många ”0”-prov, kommer nollor att komma ut efter att ”1”-provet har tagit sig igenom filterets fördröjningsledning.
1.3 Varför är impulsresponsen ”ändlig”?
I det vanliga fallet är impulsresponsen ändlig eftersom det inte finns någon återkoppling i FIR. Avsaknad av återkoppling garanterar att impulsresponsen kommer att vara ändlig. Därför är termen ”ändlig impulsrespons” nästan synonymt med ”ingen återkoppling”.
Och om återkoppling används men impulsresponsen ändå är ändlig är filtret fortfarande ett FIR. Ett exempel är det rörliga genomsnittsfiltret, där det N:e tidigare provet subtraheras (återkopplas) varje gång ett nytt prov kommer in. Detta filter har ett ändligt impulssvar även om det använder återkoppling: efter N samplingar av en impuls kommer utgången alltid att vara noll.
1.4 Hur uttalar jag ”FIR?”
En del människor uttalar bokstäverna F-I-R, andra människor uttalar det som om det vore ett trädslag. Vi föredrar trädet. (Skillnaden är om man talar om ett F-I-R-filter eller ett FIR-filter.)
1.5 Vad är alternativet till FIR-filter?
DSP-filter kan också vara ”Infinite Impulse Response” (IIR). (Se dspGurus IIR FAQ.) IIR-filter använder sig av återkoppling, så när du matar in en impuls ringer utgången teoretiskt sett i all oändlighet.
1.6 Hur kan FIR-filter jämföras med IIR-filter?
Varje har för- och nackdelar. På det hela taget överväger dock fördelarna med FIR-filter nackdelarna, så de används mycket mer än IIR-filter.
1.6.1 Vilka är fördelarna med FIR-filter (jämfört med IIR-filter)?
I jämförelse med IIR-filter erbjuder FIR-filter följande fördelar:
- De kan lätt utformas så att de är ”linjära i fas” (och det är de oftast). Enkelt uttryckt fördröjer linjärfasfilter insignalen men förvränger inte dess fas.
- De är enkla att implementera. På de flesta DSP-mikroprocessorer kan FIR-beräkningen göras genom att en enda instruktion loopas.
- De lämpar sig för tillämpningar med flera hastigheter. Med multi-rate menar vi antingen ”decimering” (minskning av samplingsfrekvensen), ”interpolering” (ökning av samplingsfrekvensen) eller både och. Oavsett om det handlar om decimering eller interpolering gör användningen av FIR-filter det möjligt att utelämna en del av beräkningarna, vilket ger en viktig beräkningseffektivitet. Om däremot IIR-filter används måste varje utgång beräknas individuellt, även om den utgången kommer att kasseras (så att återkopplingen införlivas i filtret).
- De har önskvärda numeriska egenskaper. I praktiken måste alla DSP-filter implementeras med aritmetik med finit precision, det vill säga med ett begränsat antal bitar. Användningen av aritmetik med finit precision i IIR-filter kan orsaka betydande problem på grund av användningen av återkoppling, men FIR-filter utan återkoppling kan vanligtvis implementeras med hjälp av färre bitar, och konstruktören har färre praktiska problem att lösa i samband med icke-ideell aritmetik.
- De kan implementeras med hjälp av fraktionell aritmetik. Till skillnad från IIR-filter är det alltid möjligt att implementera ett FIR-filter med hjälp av koefficienter vars storlek är mindre än 1,0. (FIR-filtrets totala förstärkning kan justeras vid dess utgång, om så önskas). Detta är ett viktigt övervägande när man använder DSP:er med fast punkt, eftersom det gör implementeringen mycket enklare.
1.6.2 Vilka är nackdelarna med FIR-filter (jämfört med IIR-filter)?
I jämförelse med IIR-filter har FIR-filter ibland den nackdelen att de kräver mer minne och/eller mer beräkning för att uppnå en viss karakteristik av filterresponsen. Dessutom är vissa responser inte praktiska att implementera med FIR-filter.
1.7 Vilka termer används för att beskriva FIR-filter?
- Impulssvar – ”Impulssvaret” för ett FIR-filter är egentligen bara uppsättningen av FIR-koefficienter. (Om du lägger in en ”impuls” i ett FIR-filter som består av ett ”1”-prov följt av många ”0”-prov, kommer filtrets utgång att vara uppsättningen koefficienter, eftersom 1-provet rör sig förbi varje koefficient i tur och ordning för att bilda utgången.)
- Tap – Ett FIR-”tap” är helt enkelt ett koefficient-/fördröjningspar. Antalet FIR-taps (ofta betecknat som ”N”) är en indikation på 1) hur mycket minne som krävs för att implementera filtret, 2) hur många beräkningar som krävs och 3) hur mycket ”filtrering” filtret kan göra; i praktiken innebär fler taps en större dämpning av stoppbandet, mindre krusning, smalare filter osv.
- Multiply-Accumulate (MAC) – I ett FIR-sammanhang är en ”MAC” operationen att multiplicera en koefficient med motsvarande fördröjda dataavsnitt och ackumulera resultatet. FIR:er kräver vanligen en MAC per tappning. De flesta DSP-mikroprocessorer implementerar MAC-operationen i en enda instruktionscykel.
- Övergångsband – Frekvensbandet mellan passbands- och stoppbandskanter. Ju smalare övergångsbandet är, desto fler tappar krävs för att implementera filtret. (Ett ”smalt” övergångsband resulterar i ett ”skarpt” filter.)
- Fördröjningslinje – Den uppsättning minneselement som implementerar FIR-beräkningens ”Z^-1”-fördröjningselement.
- Cirkulär buffert – En speciell buffert som är ”cirkulär” därför att en inkrementering i slutet får den att slingra sig runt till början, eller därför att en dekrementering från början får den att slingra sig runt till slutet. Cirkulära buffertar tillhandahålls ofta av DSP-mikroprocessorer för att genomföra ”rörelsen” av proverna genom FIR-fördröjningslinjen utan att bokstavligen behöva flytta data i minnet. När ett nytt prov läggs till i bufferten ersätter det automatiskt det äldsta.