FIR-filter

Eit **FIR-filter** innanføre signalhandsaming (frå engelsk; Finite Impulse Response filter) er eit digitalt filter med ein endeleg impulsrespons. Desse filtera står i kontrast til IIR-filter, som har uendeleg lang impulsrespons.
 
## Tidsplanet
Eit FIR-filter kan uttrykkast med differanselikninga
:
y(n) = \sum_{i=0}^{M}b(n)u(n-i),


der b er koeffisientvektoren, u er inngangssekvensen, y er utgangsekvensen, M er talet på koeffisientar og n er ein sampelindeks. Eit FIR-filter er med andre ord foldninga mellom koeffisientvektoren h og inngangssekvensen u. Koeffisientvektoren er av lengd M+1, medan inn- og utgangssekvensane kan ha vilkårleg lengd; i eit sanntidssystem er ikkje lengda avgrensa. FIR filter vil alltid vere stabile ettersom dei ikkje nyttar tilbakekopling.
 
Filteret genererer ein ny utgangsverdi y(n) ein gong per sampelinterval. Den artimetiske kompleksiteten er difor M+1 multiplikasjonar og M addisjonar per sampel. Ein multiplikasjon pluss addison blir ofte kalla ein MAC-operasjon, som står for multiplikasjon-akkumulasjon.

Eit FIR-filter kan òg uttrykkjast som foldninga mellom koeffisientvektoren og inngangssekvensen:
:
y(n) = b(n)*u(n),

der * er foldningsoperatoren.

Impulsresponsen til filteret er av lengd T(M+1), der T=1/f_s er sampelintervalet og f_s=1/T er sampelfrekvensen. Mange FIR-filter har lineær faseresponse, men treng ikkje ha det. Om filteret har symmetrisk coeffisientvektor er faseresponsen lineær.

## Transferfunksjon
Når differenselikninga er kjent kan ein finna transferfunksjonen ved å z-transformera differenselikninga ledd for ledd; ein forsinkelse med n sampelinterval i tidsplanet tilsvarar multiplikasjon med z^{-n} i z-planet:
:
Y(z) = b_{0}U(z)+b_{1}U(z)z^{-1}+b_{2}U(z)z^{-2}+\ldots+b_{M}U(z)z^{-M}.
 
Vi faktiriserer ut U(z):
:
Y(z) = U(z)(b_{0}+b_{1}z^{-1}+b_{2}z^{-2}+\ldots+b_{M}z^{-M})
 
og finn transferfunksjonen ved å dividera med U(z) på begge sider av likheitsteiknet:
:
 H(z) = \frac{Y(z)}{U(z)} = b_{0}+b_{1}z^{-1}+b_{2}z^{-2}+\ldots+b_{M}z^{-M}.
 
Transferfunksjon har M røter, som vert kalla nullpunk, av di H(z)=0 når z samsvarar med ei rot,

## Strukturar for symmetrisk filtervektorar

Når eit FIR-filter blir implementert som i fig. 1 er talet på 
multiplikasjonar M+1 og talet på addisjonar/subtraksjonar er M. FIR-filtere med lineær fase har enten symmetriske (Type I og Type II) eller asymmetriske (Type III og Type IV) koeffisientvektor. For filter med symmetrisk koeffisientvektor har vi at
:
 b_n = b_{M-n}

og for usymmetrisk koeffisentvektor har vi at
:
 b_n = -h_{M-n}.

Når M er eit oddetall kan vi dirfor skriva differanselikninga som
:
 y(n) = \sum_{l=0}^{(M-1)/2}b_l[u(n-l)+u(n-M+l)]  

og når M er eit paretall som
:
 y(n) = b_{M/2} u(n-M/2) + \sum_{l=0}^{M/2-1}b_l[u(n-l)+u(n-M+l)]. 

Som vist i fig. 2 og 3 kan vi bretta skiftregisteret i Fig. 1, utføra addisjonane x(n)+x(n-M), x(n-1)+x(n-M+1), etc., før vi utfører multiplikasjonane. Dette er illustrert i fig. 2 og fig. 3 for M eit partal respektivt eit oddetall. Talet på multiplikasjonar kan dermed reduserast til M/2+1, eller M/2, medan talet på addisjonar blir M+1 som før. Typiske døme på FIR-filtere med symmetrisk impulsrespons er LP-, HP-, BP- og BS-filter. Filtere med asymmetrisk impulsrespons (Type III og Type IV) kan òg implementerast med strukturane vist i fig. 2 og 3; addisjonane må da byttast ut med subtraksjonar. Filtere som ikkje har nokon symmetri derimot, må implementerast med strukturen vist i fig. 1 og krev M+1 multiplikasjonar.

Når eit FIR-filter med lineær fase skal implementerast med ein digital signalprosessor (DSP) vil vi ikkje kunne dra fordel av å bruka strukturane i fig. 2 og 3, ettersom ein DSP kan utføra både ein multiplikasjon og ein addisjon/subtraksjon per instruksjonsperiode. Det same er tilfellet med mikroprosessorar i moderne PCar. Men om filteret blir implementert i form av ein ASIC, FPGA eller ein mikrokontroller kan vi dra fordel av dei folda strukturane i fig. 2 og 3. I et sanntids-system må alle multiplikasjonane og addisjonane/subtraksjonane utførast ein gong per sampelinterval, så dei folda strukturane i fig. 2 og 3 kan utnyttast for å redusera klokkefrekvensen eller for å spara areal.

## Design av FIR-filter
Vanlege metodar for design av FIR-filter er

* Vindaugemetoden
* Frekvenssamplingsmetoden
* Vekta minstekvadratersdesign
* Parks-McClellan metoden

### Vindaugemetoden
Med denne metoden tek ein utgangspunkt i eit ideelt LP-filter, som har ein frekvensrespons som er heilt flat opp til knekkfrekvensen, og null for høgare frekvensar. Eit tek så den inverse Foruier-transformen, som resulterer i impulsresponsen, som for eit ideelt LP-filter er  ein sinc-funksjon. Koeffisientvektoren er ein sampla versjon av impulsresponsen. Etter som sinc-funksjonen har uendeleg stor utstrekning vil koeffisientvektoren ha uendeleg mange koeffisientar. For at det skal vera muleg å realisera filteret i maskinvare, eller programvare, lyt ein avgrensa talet på koeffisientar M+1. 
 
Koeffiseintvektoren til eit ideelt FIR LP-filter er symmetrisk om midten, så halvparten av koeffisientane skal multipliserast med framtidige inngangsverdiar.Om ein har samla inn inngangsverdiane på førehand skapar ikkje dette problem, men for sanntidsrealiseringar har ein ikkje framtidig data. Ein løyser då dette problemet ved å samla opp M/2 verdiar i ein buffer, ofte ein ringbuffer. Dette fører til at utgangssekvensen blir forsinka med M/2 sampelinterval i høve til inngangssekvensen. Men alle frekvensane i passbandet blir forsinka med (M/2), som er det sama som at faseresponsen er lineær:
:
 \angle H(e^{j\omega}) = -\omega\frac{M}{2} \mbox{, }-\pi

der \omega=2\pi f er frekvensen i rad/s og f er frekvensen i Hz.

Om ein kuttar koeffisientvektoren abrupt seien ein at ein nyttar ein rektangulært vindu. Dette fører til ripple i frekvensresponsen (Gibbs fenomen). Ein kan redusera dette problemet ved å multiplisera koeffisientventoren med ein glattefunksjon, òg kalla glattevindu, som vektar ned endane på koeffisientvektoren. Det finst mange slike glattevindu, men ein av dei vanlegaste i samband med FIR-filter er eit sokalla Hanning-vindu.
 
### Parks-McClellan-metoden
Denne algoritmen vert nytta til design av equirippel FIR-filter og lineær fase FIR-filter generelt. Algoritmen er ein iterativ prosedyre som er basert på eit vekta feilkriterie. Han finn dei optimale FIR filter koeffisientane i samhøve til minimiseringa av dette feilkriteriet. Parks-McClellan metoden er meir fleksibel enn til dømes vindusmetoden, og er ein mykje nytta metode for design av FIR-filter.

## Referansar

## Sjå òg
* Digitalt filter (generelt om diskrete filter)
* IIR-filter (rekursivt diskret filter)