Flytting Gjennomsnitt Filter Fase Forsinkelse


FIR-filtergrunnleggende 1.1 Hva er kvadratfiltrene QuFIR filtersquot FIR-filtre er en av to primære typer digitale filtre som brukes i DSP-programmer (Digital Signal Processing), den andre typen er IIR. 1.2 Hva betyr quotFIRquot betyr quotFIRquot quotFinite Impulse Responsequot. Hvis du legger inn en impuls, det vil si en enkelt quot1quot-prøve etterfulgt av mange quot0quot-prøver, vil nuller komme ut etter at quot1quot-prøven har gått gjennom filterets forsinkelseslinje. 1.3 Hvorfor er impulsresponsen quotfinitequot I det vanlige tilfellet er impulsresponsen endelig fordi det ikke er tilbakemelding i FIR. Manglende tilbakemelding garanterer at impulsresponsen vil være endelig. Derfor er uttrykket quotfinite impulse responsequot nesten synonymt med quotno feedbackquot. Men hvis tilbakemeldingen er ansatt, er impulsresponsen endelig, men filteret er fortsatt en FIR. Et eksempel er det bevegelige gjennomsnittsfilteret, hvor den Nth-forhåndseksempler trekkes tilbake (hver gang en ny prøve kommer inn). Dette filteret har en endelig impulsrespons, selv om den bruker tilbakemelding: etter N prøver av en impuls, vil utgangen vil alltid være null. 1.4 Hvordan uttaler jeg quotFIRquot Noen sier at bokstavene F-I-R andre uttaler som om det var en type tre. Vi foretrekker treet. (Forskjellen er om du snakker om et F-I-R-filter eller et FIR-filter.) 1.5 Hva er alternativet til FIR-filtre DSP-filtre kan også være quotInfinite Impulse Responsequot (IIR). (Se dspGurus IIR FAQ.) IIR-filtre bruker tilbakemelding, så når du skriver inn en impuls, ringer utgangen teoretisk på ubestemt tid. 1.6 Hvordan sammenligner FIR-filtre med IIR-filtre Hver har fordeler og ulemper. Samlet sett er fordelene ved FIR-filter større enn ulempene, så de brukes mye mer enn IIR. 1.6.1 Hva er fordelene med FIR-filter (sammenlignet med IIR-filtre) Sammenlignet med IIR-filtre, tilbyr FIR-filtre følgende fordeler: De kan enkelt utformes for å være kvadratlinjefase (og vanligvis er). Enkelt sagt, linjeskiftfiltre forsinker inngangssignalet, men donrsquot forvrenger sin fase. De er enkle å implementere. På de fleste DSP-mikroprosessorer kan FIR-beregningen gjøres ved å løse en enkelt instruksjon. De er egnet til multi-rate applikasjoner. Med multi-rate mener vi enten quotdecimationquot (redusere samplingsfrekvensen), quotinterpolationquot (øke samplingsfrekvensen), eller begge deler. Uansett om deimerer eller interpolerer, gjør bruk av FIR-filtre det mulig å utelate noen av beregningene, og gir dermed en viktig beregningseffektivitet. I motsetning dersom IIR-filtre brukes, må hver utgang beregnes individuelt, selv om den utgangen vil kasseres (slik at tilbakemeldingen vil bli innlemmet i filteret). De har ønskelige numeriske egenskaper. I praksis må alle DSP-filtre implementeres ved å bruke finite-presis aritmetikk, det vil si et begrenset antall biter. Bruk av finite-presisjon aritmetikk i IIR-filtre kan forårsake betydelige problemer på grunn av bruk av tilbakemelding, men FIR-filtre uten tilbakemelding kan vanligvis implementeres med færre biter, og designeren har færre praktiske problemer å løse i forbindelse med ikke-ideell aritmetikk. De kan implementeres ved hjelp av fraksjonal aritmetikk. I motsetning til IIR-filtre, er det alltid mulig å implementere et FIR-filter ved hjelp av koeffisienter med størrelsen mindre enn 1,0. (Den samlede gevinsten til FIR-filteret kan justeres ved utgang, hvis ønskelig.) Dette er et viktig hensyn når du bruker fastpunkts-DSP, fordi det gjør implementeringen mye enklere. 1.6.2 Hva er ulempene med FIR-filter (sammenlignet med IIR-filtre) Sammenlignet med IIR-filtre, har FIR-filtre noen ganger den ulempen at de trenger mer minne og eller annen beregning for å oppnå en bestemt filterresponskarakteristikk. Også enkelte svar er ikke praktiske å implementere med FIR-filtre. 1.7 Hvilke begreper brukes til å beskrive FIR-filter Impulsrespons - Quimpulsresponsequot av et FIR-filter er faktisk bare settet med FIR-koeffisienter. (Hvis du legger et kvoteprotokvot i et FIR-filter som består av en quot1quot-prøve etterfulgt av mange quot0quot-prøver, vil filterets utgang være settet av koeffisienter, da den ene prøven beveger seg forbi hver koeffisient i sin tur for å danne utgangen.) Trykk - En FIR quottapquot er bare et koeffisientpar. Antallet FIR-kraner, ofte angitt som quotNquot, er en indikasjon på 1) mengden minne som kreves for å implementere filteret, 2) antall kalkulasjoner som kreves, og 3) mengden av kvoteringskvotene som filteret kan utføre, flere kraner betyr mer stoppbånddemping, mindre krusninger, smalere filtre, etc. Multiply-Accumulate (MAC) - I en FIR-sammenheng er en quotMACquot drift av å multiplisere en koeffisient av den tilsvarende forsinkede dataprøven og akkumulere resultatet. FIRs krever vanligvis en MAC per trykk. De fleste DSP mikroprosessorer implementerer MAC-operasjonen i en enkelt instruksjons syklus. Overgangsbånd - Båndet mellom frekvenser mellom passbånd og stoppbåndskanter. Jo smalere overgangsbåndet, desto flere kraner er nødvendig for å implementere filteret. (Et quotsmallquot overgangsbånd resulterer i et quotsharpquot filter.) Delay Line - Settet av minneelementer som implementerer quZ-1quot forsinkelseselementene i FIR-beregningen. Sirkulær buffer - En spesiell buffer som er quotcircularquot fordi inkrementering på slutten fører til at den vikles rundt til begynnelsen, eller fordi dekrementering fra begynnelsen fører til at den vikles rundt til slutten. Sirkulære buffere leveres ofte av DSP mikroprosessorer for å implementere kvoteringskvoten av prøvene gjennom FIR-forsinkelseslinjen uten å måtte bokstavelig talt flytte dataene i minnet. Når en ny prøve legges til bufferen, erstatter den automatisk den eldste one. Recursive Moving Average Filter Bull Quote (0) 0 Bull 2 ​​160160160160 Det glidende gjennomsnittlige filteret er et FIR-filter med lengde N med alle kraner satt til 1N ) .160 Den er kjent for elendig frekvensavstand, men utmerket tidsrespons - i den forstand, er det Bessels et Bessel filter.160 Du kan implementere det med SigmaStudios FIR-blokk som beskrevet her: Jo lenger filteret er, jo mer utjevning - - men standard FIR-filteralgoritmen bruker mange instruksjoner for store filtre fordi det må multiplisere koeffisienter for hver krets.160 Dette er avfall når alle koeffisientene er de samme.160 Som kapittel 15 i Steven W. Smiths bok peker ut , kan du lage et bevegelig gjennomsnittsfilter med en rekursiv teknikk som har trykk før og etter en (N-1) størrelsesforsinkelse.160 Et slikt filter vises nedenfor som en del av en testkrets med signalkilde og et Bessel-filter for sammenligning: 160160160160 Koeffisienter er pulle d ut til den enkelte forsterkningsblokken ved inngangen.160 Den nåværende prøven legger til utgangen når den går inn i forsinkelsen, den forsinkede prøven trekker seg fra utgangen når den utgår.160 Addereren med tilbakemelding akkumulerer disse tilleggene og subtraksjonene for å danne utgang - dette gjør noe som er trivielt i C, men er ellers en smerte i GUI.160. Selv om en rekursiv teknikk brukes, forblir filteret et ekte FIR-filter - lengden av impulsresponsen er kun innstilt av forsinkelsen. 160160160160 Min testinngang er en firkantbølge med ekstra støy.160 Filtrerte resultater vises som det øvre sporet i begge bildene - Først det bevegelige gjennomsnittsfiltret: Bessel-filteret: 160160160160 Det bevegelige gjennomsnittsfilteret gir mer lyd gjennom, men det opprettholder bedre firkantet bølgeform - det går ikke rundt hjørnene, og opp - og nedskråningene er symmetriske (den lineære fasen). 160 Oppsummering av de to bølgeformene med hodetelefoner viser et tilsvarende resultat - mer støy med det bevegelige gjennomsnittsfilteret, men det karakteristiske lyden av en firkantbølge kommer gjennom. Dokumentasjon Beskrivelse gd, w grpdelay (b, a) returnerer gruppeforsinkelsesresponsen, gd. av diskret-tidsfilteret spesifisert av inngangsvektorene, b og a. Inngangvektorene er koeffisientene for telleren, b. og nevner, a. polynomene i z -1. Z-transformasjonen av det diskrete tidsfilteret er H (z) B (z) A (z) x2211 l 0 N x2212 1 b (n 1) z x2212 l x2211 l 0 M x2212 1 a (l 1) z x2212 l. Filterforsinkelsesponsen er evaluert ved 512 like fordelte punkter i intervallet 0, 960) på enhetens sirkel. Evalueringspoengene på enhetssirkelen returneres i w. gd, w grpdelay (b, a, n) returnerer gruppforsinkelsesresponsen av diskretidsfilteret evaluert ved n like fordelte punkter på enhetssirkelen i intervallet 0, 960). n er et positivt heltall. For best resultat, sett n til en verdi som er større enn filterbestillingen. gd, w grpdelay (sos, n) returnerer gruppforsinkelsesresponsen for andreordsseksjonen matrisen, sos. sos er en K-by-6 matrise, hvor antall seksjoner, K. må være større enn eller lik 2. Hvis antall seksjoner er mindre enn 2, vurderer grpdelay inngangen til å være tellervektoren, b. Hver rad av sos korresponderer med koeffisientene til et andre-ordens (biquad) filter. Den første rad av sos-matrisen tilsvarer bi (1) bi (2) bi (3) ai (1) ai (2) ai (3). gd, w grpdelay (d, n) returnerer gruppeforsinkelsesresponsen for det digitale filteret, d. Bruk designfilt til å generere d basert på frekvensresponsspesifikasjoner. gd, f grpdelay (.n, fs) spesifiserer en positiv samplingsfrekvens fs i hertz. Den returnerer en lengde-vektor, f. inneholde frekvenspoengene i Hertz hvor gruppforsinkelsesresponsen blir evaluert. f inneholder n poeng mellom 0 og fs2. gd, w grpdelay (.n, hel) og gd, f grpdelay (.n, hel, fs) bruk n poeng rundt hele enheten sirkelen (fra 0 til 2 960 eller fra 0 til fs). gd grpdelay (.w) og gd grpdelay (.f, fs) returnerer gruppforsinkelsesresponsen evaluert ved vinkelfrekvensene i w (i radianprøve) eller i f (i cyclesunit tid), hvor fs er samplingsfrekvensen. w og f er vektorer med minst to elementer. grpdelay (.) uten utgangsargumenter oppfatter gruppens forsinkelsesrespons versus frekvens. grpdelay fungerer for både ekte og komplekse filtre. Merk: Hvis inngangen til grpdelay er enkel presisjon, beregnes gruppforsinkelsen ved hjelp av en-presis aritmetikk. Utgangen, gd. er enkel presisjon. Velg ditt CountryFIR Filter FAQ Finite Impulse Response (FIR) filtre er et av de viktigste temaene innen Digital Signal Processing. Her svarer dspGuru Vanlige spørsmål om FIR-filtrering. FIR-filtergrunnleggende 1.1 Hva er kvadratfiltrene QuFIR filtersquot FIR-filtre er en av to primære typer digitale filtre som brukes i DSP-programmer (Digital Signal Processing), den andre typen er IIR. 1.2 Hva betyr quotFIRquot betyr quotFIRquot quotFinite Impulse Responsequot. Hvis du legger inn en impuls, det vil si en enkelt quot1quot-prøve etterfulgt av mange quot0quot-prøver, vil nuller komme ut etter at quot1quot-prøven har gått gjennom filterets forsinkelseslinje. 1.3 Hvorfor er impulsresponsen quotfinitequot I det vanlige tilfellet er impulsresponsen endelig fordi det ikke er tilbakemelding i FIR. Manglende tilbakemelding garanterer at impulsresponsen vil være endelig. Derfor er uttrykket quotfinite impulse responsequot nesten synonymt med quotno feedbackquot. Men hvis tilbakemeldingen er ansatt, er impulsresponsen endelig, men filteret er fortsatt en FIR. Et eksempel er det bevegelige gjennomsnittsfilteret, hvor den Nth-forhåndseksempler trekkes tilbake (hver gang en ny prøve kommer inn). Dette filteret har en endelig impulsrespons, selv om den bruker tilbakemelding: etter N prøver av en impuls, vil utgangen vil alltid være null. 1.4 Hvordan uttaler jeg quotFIRquot Noen sier at bokstavene F-I-R andre uttaler som om det var en type tre. Vi foretrekker treet. (Forskjellen er om du snakker om et F-I-R-filter eller et FIR-filter.) 1.5 Hva er alternativet til FIR-filtre DSP-filtre kan også være quotInfinite Impulse Responsequot (IIR). (Se dspGurus IIR FAQ.) IIR-filtre bruker tilbakemelding, så når du skriver inn en impuls, ringer utgangen teoretisk på ubestemt tid. 1.6 Hvordan sammenligner FIR-filtre med IIR-filtre Hver har fordeler og ulemper. Samlet sett er fordelene ved FIR-filter større enn ulempene, så de brukes mye mer enn IIR. 1.6.1 Hva er fordelene med FIR-filter (sammenlignet med IIR-filtre) Sammenlignet med IIR-filtre, tilbyr FIR-filtre følgende fordeler: De kan enkelt utformes for å være kvadratlinjefase (og vanligvis er). Enkelt sagt, linjeskiftfiltre forsinker inngangssignalet, men donrsquot forvrenger sin fase. De er enkle å implementere. På de fleste DSP-mikroprosessorer kan FIR-beregningen gjøres ved å løse en enkelt instruksjon. De er egnet til multi-rate applikasjoner. Med multi-rate mener vi enten quotdecimationquot (redusere samplingsfrekvensen), quotinterpolationquot (øke samplingsfrekvensen), eller begge deler. Uansett om deimerer eller interpolerer, gjør bruk av FIR-filtre det mulig å utelate noen av beregningene, og gir dermed en viktig beregningseffektivitet. I motsetning dersom IIR-filtre brukes, må hver utgang beregnes individuelt, selv om den utgangen vil kasseres (slik at tilbakemeldingen vil bli innlemmet i filteret). De har ønskelige numeriske egenskaper. I praksis må alle DSP-filtre implementeres ved å bruke finite-presis aritmetikk, det vil si et begrenset antall biter. Bruk av finite-presisjon aritmetikk i IIR-filtre kan forårsake betydelige problemer på grunn av bruk av tilbakemelding, men FIR-filtre uten tilbakemelding kan vanligvis implementeres med færre biter, og designeren har færre praktiske problemer å løse i forbindelse med ikke-ideell aritmetikk. De kan implementeres ved hjelp av fraksjonal aritmetikk. I motsetning til IIR-filtre, er det alltid mulig å implementere et FIR-filter ved hjelp av koeffisienter med størrelsen mindre enn 1,0. (Den samlede gevinsten til FIR-filteret kan justeres ved utgang, hvis ønskelig.) Dette er et viktig hensyn når du bruker fastpunkts-DSP, fordi det gjør implementeringen mye enklere. 1.6.2 Hva er ulempene med FIR-filter (sammenlignet med IIR-filtre) Sammenlignet med IIR-filtre, har FIR-filtre noen ganger den ulempen at de trenger mer minne og eller annen beregning for å oppnå en bestemt filterresponskarakteristikk. Også enkelte svar er ikke praktiske å implementere med FIR-filtre. 1.7 Hvilke begreper brukes til å beskrive FIR-filter Impulsrespons - Quimpulsresponsequot av et FIR-filter er faktisk bare settet med FIR-koeffisienter. (Hvis du legger et kvoteprotokvot i et FIR-filter som består av en quot1quot-prøve etterfulgt av mange quot0quot-prøver, vil filterets utgang være settet av koeffisienter, da den ene prøven beveger seg forbi hver koeffisient i sin tur for å danne utgangen.) Trykk - En FIR quottapquot er bare et koeffisientpar. Antallet FIR-kraner, ofte angitt som quotNquot, er en indikasjon på 1) mengden minne som kreves for å implementere filteret, 2) antall kalkulasjoner som kreves, og 3) mengden av kvoteringskvotene som filteret kan utføre, flere kraner betyr mer stoppbånddemping, mindre krusninger, smalere filtre, etc. Multiply-Accumulate (MAC) - I en FIR-sammenheng er en quotMACquot drift av å multiplisere en koeffisient av den tilsvarende forsinkede dataprøven og akkumulere resultatet. FIRs krever vanligvis en MAC per trykk. De fleste DSP mikroprosessorer implementerer MAC-operasjonen i en enkelt instruksjons syklus. Overgangsbånd - Båndet mellom frekvenser mellom passbånd og stoppbåndskanter. Jo smalere overgangsbåndet, desto flere kraner er nødvendig for å implementere filteret. (Et quotsmallquot overgangsbånd resulterer i et quotsharpquot filter.) Delay Line - Settet av minneelementer som implementerer quZ-1quot forsinkelseselementene i FIR-beregningen. Sirkulær buffer - En spesiell buffer som er quotcircularquot fordi inkrementering på slutten fører til at den vikles rundt til begynnelsen, eller fordi dekrementering fra begynnelsen fører til at den vikles rundt til slutten. Sirkulære buffere leveres ofte av DSP mikroprosessorer for å implementere kvoteringskvoten av prøvene gjennom FIR-forsinkelseslinjen uten å måtte bokstavelig talt flytte dataene i minnet. Når en ny prøve legges til bufferen, erstatter den automatisk den eldste. FIR-filteregenskaper 2.1 Lineær fase 2.1.1 Hva er sammenhengen mellom FIR-filtre og kvadratlinjefasquot De fleste FIR er lineærefiltre når et lineærfasefilter er ønsket, en FIR brukes vanligvis. 2.1.2 Hva er en lineær fase filterkvoteLinear Phasequot refererer til tilstanden der filterets faserespons er en lineær (lineær) funksjon av frekvens (unntatt faseomslag ved - 180 grader). Dette resulterer i forsinkelsen gjennom filteret er det samme ved alle frekvenser. Derfor forårsaker ikke filteret kvoteforvrengning eller kvoteforvrengning. Mangelen på faselengsforvrengning kan være en kritisk fordel for FIR-filtre over IIR - og analogfiltre i visse systemer, for eksempel i digitale datamodemer. 2.1.3 Hva er betingelsen for lineær fase FIR-filtre er vanligvis utformet for å være lineærfase (men de må ikke være.) Et FIR-filter er lineærfas hvis (og bare hvis) dens koeffisienter er symmetriske rundt sentrumskoeffisienten , det vil si den første koeffisienten er den samme som den siste den andre er den samme som den nest siste, etc. (Et lineært FIR-filter med et oddetall koeffisienter vil ha en enkelt koeffisient i midten som har ingen kompis.) 2.1.4 Hva er forsinkelsen av en lineær fase FIR Formelen er enkel: gitt et FIR-filter som har N kraner, forsinkelsen er: (N - 1) (2 Fs), hvor Fs er prøvetakingsfrekvens. Så for eksempel har en 21-tapp lineær fase FIR-filter som opererer ved en 1 kHz-frekvens forsinkelse: (21 - 1) (2 1 kHz) 10 millisekunder. 2.1.4 Hva er alternativet til lineær fase Ikke-lineær fase, selvfølgelig. -) Egentlig er det mest populære alternativet quotminimum phasequot. Minimumfasefiltre (som bedre kan kalles kvadratminimum-delayquot-filtre) har mindre forsinkelse enn lineærefiltre med samme amplituderespons, på bekostning av en ikke-lineær fasekarakteristikk, f. eks. Kvadratforvrengningsquot. Et lowpass-FIR-filter har sine største størrelses-koeffisienter i midten av impulsresponsen. Til sammenligning er de største størrelses-koeffisientene til et minimumsfasefilter nærmere til begynnelsen. (Se dspGurus-veiledning Hvordan lage FIR-filter med minimumsfase for mer informasjon.) 2.2 Frekvensrespons 2.2.1 Hva er Z-transformasjonen av et FIR-filter For et N-tap FIR-filter med koeffisientene h (k), hvis produksjon er beskrevet ved: y (n) h (0) x (n) h (1) x (n-1) h (2) x (n-2). h (N-1) x (n-N-1), filtrene Z transform er: H (z) h (0) z-0 h (1) z-1 h (2) z-2. h (N-1) Z - (N-1). eller 2.2.2 Hva er frekvensresponsformelen for et FIR-filter Variabelen z i H (z) er en kontinuerlig kompleks variabel, og vi kan beskrive den som: zrmiddote j w. hvor r er en størrelse og w er vinkelen til z. Hvis vi lar r1, blir H (z) rundt enhetssirkelen filtrefrekvensresponsen H (j w). Dette betyr at å erstatte ejw for z i H (z) gir oss et uttrykk for filterfrekvensresponsen H (w), som er: H (jw) h (0) e-j0 wh (1) e-j1 wh (2) ) e-j2 w. h (N-1) e-j (N-1) w. eller bruker Eulers identitet, e - ja cos (a) - jsin (a), kan vi skrive H (w) i rektangulær form som: H (jw) h (0) cos (0 w) - jsin (0 w) h (1) cos (1 w) - jsin (1 w). h (N-1) cos ((N-1) w) - jsin ((N-1) w). eller 2.2.3 Kan jeg beregne frekvensresponsen til en FIR ved hjelp av Diskrete Fourier Transform (DFT) Ja. For en N-tap FIR kan du få N jevnt fordelte punkter i frekvensresponsen ved å gjøre en DFT på filterkoeffisientene. For å få frekvensresponsen til filteret til enhver vilkårlig frekvens (det vil si ved frekvenser mellom DFT-utgangene), må du bruke formelen ovenfor. 2.2.4 Hva er DC-forsterkningen av et FIR-filter Vurder et DC (null Hz) inngangssignal bestående av prøver som hver har verdi 1.0. Etter at FIRs forsinkelseslinjen hadde fylt 1,0 eksemplene, ville utgangen være summen av koeffisientene. Derfor er forsterkningen av et FIR-filter ved DC bare summen av koeffisientene. Dette intuitive resultatet kan kontrolleres mot formelen ovenfor. Hvis vi setter w til null, er cosinusperioden alltid 1, og sinusperioden er alltid null, slik at frekvensresponsen blir: 2.2.5 Hvordan skaler jeg opp forsterkningen av et FIR-filter Bare multipliser alle koeffisientene med skalfaktoren. 2.3 Numeriske egenskaper 2.3.1 Er FIR-filene iboende stabile Ja. Siden de ikke har noen tilbakemeldingskomponenter, resulterer noen begrensede innganger i en begrenset utgang. 2.3.2 Hva gjør de numeriske egenskapene til FIR-filterene kvotere igjen. Nøkkelen er mangelen på tilbakemelding. Tallfeilene som oppstår ved implementering av FIR-filtre i datamaskinarithmetikk forekommer separat med hver beregning, men FIR doesnt quotrememberquot sine tidligere numeriske feil. I motsetning kan tilbakemeldingsaspektet av IIR-filtre føre til at numeriske feil blir sammensatt med hver beregning, da numeriske feil blir matet tilbake. Den praktiske effekten av dette er at FIRs generelt kan implementeres ved å bruke færre biter av presisjon enn IIR. For eksempel kan FIRs vanligvis implementeres med 16 bits, men IIRs krever vanligvis 32 bits, eller enda mer. 2.4 Hvorfor er FIR-filtre generelt foretrukket over IIR-filtre i multirate-systemer (dekimere og interpolere)? Fordi bare en brøkdel av beregningene som kreves for å implementere en decimerende eller interpolerende FIR på en bokstavelig måte, må det faktisk gjøres. Siden FIR-filtre ikke bruker tilbakemelding, må bare de utgangene som faktisk skal brukes, beregnes. Derfor, i tilfelle av decimating FIRs (hvor bare 1 av N utganger vil bli brukt), må de andre N-1-utgangene ikke beregnes. På samme måte for interpolerende filtre (der nuller er satt inn mellom inngangsprøvene for å øke samplingsfrekvensen), må du ikke faktisk multiplisere de innførte nullene med deres tilsvarende FIR-koeffisienter og summe resultatet du bare utelater multiplikasjonstillatelsene som er knyttet til nullene (fordi de ikke endrer resultatet uansett.) I motsetning til at IIR-filtre bruker tilbakemelding, må alle innganger brukes, og hvert inngang må beregnes fordi alle innganger og utganger bidrar til tilbakemeldingen i filteret. 2.5 Hvilke spesielle typer FIR-filtre er der Bortsett fra quotregularquot og quotextra crispyquot er det: Boxcar - Boxcar FIR-filtre er bare filtre hvor hver koeffisient er 1,0. Derfor, for en N-tap-boks, er utgangen bare summen av de siste N-prøvene. Fordi Boxcar FIRs kan implementeres ved hjelp av bare adders, er de av interesse først og fremst i maskinvareimplementeringer, hvor multiplikatorer er dyre å implementere. Hilbert Transformer - Hilbert Transformers skifter fasen av et signal med 90 grader. De brukes primært til å skape den imaginære delen av et komplekst signal, gitt sin virkelige del. Differensiator - Differensiatorer har en amplituderespons som er en lineær funksjon av frekvens. De er ikke veldig populære i dag, men brukes noen ganger til FM-demodulatorer. Lth-Band - Også kalt quotNyquistquot-filtre, er disse filtrene en spesiell klasse av filtre som hovedsakelig brukes i multirate-applikasjoner. Deres nøkkeltalingspunkt er at en av hver L-koeffisient er null - et faktum som kan utnyttes for å redusere antall multipliser-akkumulerte operasjoner som kreves for å implementere filteret. (Det berømte quothalf-bandquot-filteret er faktisk et LTH-bandfilter, med L2.) Raised-Cosine - Dette er en spesiell type filter som noen ganger brukes til digitale dataprogrammer. (Frekvensresponsen i passbåndet er en cosinusform som har blitt quotraisedquot av en konstant.) Se dspGurus Raised-Cosine FAQ for mer informasjon. Mange andre. FIR-filterdesign 3.1 Hva er metodene for å designe FIR-filtre De tre mest populære designmetodene er (i rekkefølge): Parks-McClellan: Parks-McClellan-metoden (feilkalt quotRemezquot av Matlab) er trolig den mest brukte FIR-filterdesignmetoden . Det er en iterasjonsalgoritme som aksepterer filterspesifikasjoner når det gjelder passbånds - og stoppbåndsfrekvenser, passband-rippel og stoppbånddempning. Det faktum at du direkte kan angi alle viktige filterparametrene, er det som gjør denne metoden så populær. PM-metoden kan designe ikke bare FIR-kvoter, men også FIR quotdifferentiatorsquot og FIR quotHilbert transformersquot. Windowing:. I vindusmetoden utledes en første impulsrespons ved å ta den inverterte diskrete fireiertransform (IDFT) av ønsket frekvensrespons. Deretter raffineres impulsresponsen ved å bruke et datavindue til det. Direkte beregning: Impulsresponsene av visse typer FIR-filtre (for eksempel Raised Cosine og Windowed Sinc) kan beregnes direkte fra formler. 3.2 Hvordan lager jeg faktisk FIR-filtre Med et FIR-filterdesignprogram, selvfølgelig. -) Selv om det er mulig å designe FIR-filtre ved hjelp av manuelle metoder, er det mye enklere å bare bruke et FIR-filterdesignprogram. 3.3 Hvilke FIR-filterdesignprogrammer er tilgjengelige FIR-filterdesignprogrammene finnes i tre brede kategorier: Filtreringsdesignprogrammer: Se dspGuru39s Digital Filter Design Software-side for en liste over filterdesignprogrammer. Nær og kjære til oss her på dspGuru er Iowegians eget ScopeFIR produkt. Vi tror ScopeFIR tilbyr en utmerket kombinasjon av profesjonelle funksjoner, jevnt brukergrensesnitt og rimelig pris. Vi selger den for bare 599, med en prøveperiode på 30 dager. Selv om du allerede bruker Matlab, kan ScopeFIR39s quotpoint og shootquot-evner forbedre FIR-filterets designproduktivitet. Matematikkprogrammer: Matlab og dets gratis kloner tilbyr innebygde FIR-filterdesignfunksjoner. Kildekode: En av de beste stedene på nettet for å finne kildekode for å designe FIR-filtre, er Charles Poynton39s filterdesign-programvare. FIR-filterimplementering 4.1 Hva er grunnleggende algoritmen for implementering av FIR-filtre Strukturelt består FIR-filtre av bare to ting: en prøveforsinkelseslinje og et sett med koeffisienter. Slik implementerer du filteret: Sett inntaksprøven inn i forsinkelseslinjen. Multipliser hver prøve i forsinkelseslinjen med den korresponderende koeffisienten og akkumuler resultatet. Skift forsinkelseslinjen med en prøve for å få plass til neste inngangseksempel. 4.2 Hvordan implementerer jeg FIR-filter i C Det er mange muligheter, inkludert noen få triks. For å illustrere har vi gitt et sett med FIR-filteralgoritmer implementert i C kalt FirAlgs. c i ScopeFIRs distribusjonsfil. FirAlgs. c inneholder følgende funksjoner: firbasic. Illustrerer den grunnleggende FIR-beregningen beskrevet ovenfor ved å implementere den veldig bokstavelig. firkirkulær. Illustrerer hvordan sirkulære buffere brukes til å implementere FIRs. firshuffle. Illustrerer shuffle down-teknikken som brukes av noen av Texas Instruments-prosessorer. firsplit. Splitter FIR-beregningen i to flate (ikke-sirkulære) brikker for å unngå bruk av sirkulær bufferlogikk og shuffling. firdoublez. Bruker en dobbeltsidig forsinkelseslinje slik at FIR-beregningen kan gjøres ved hjelp av en flat buffer. firdoubleh. I likhet med firdoublez bruker dette en dobbel størrelse koeffisient slik at FIR-beregningen kan gjøres ved hjelp av en flat buffer. 4.3 Hvordan implementerer jeg FIR-filtre i montering FIR-samlingsalgoritmer er ganske prosessorspesifikke, men det vanligste systemet bruker en sirkulær buffermekanisme levert av DSP-prosessoren. De grunnleggende trinnene er: Konfigurer den sirkulære bufferbelastningen koeffisient - og forsinkelseslinjepunktene. Deretter for hver inngangseksempel: Lagre innkommende data i forsinkelseslinjen øker forsinkelseslinjepekeren. Fjern multiplikator-akkumulatoren. Loop over alle koeffisientdeler akkumulerer verdiene som oppnås ved å multiplisere koeffisientene med de forsinkede prøvene. Rund eller avkort resultatet som FIR-utgangen. Alternativt brukes en shuffle-ned-metode i Texas Instruments eldre fastpunktsprosessorer for å implementere sirkulære buffere. Prosessoren beveger bokstavelig talt hver prøveforsinkelsesverdi med ett spor under hver multipliseringsakkumulering (via MACD-instruksjonen). Hver DSP mikroprosessorprodusent gir eksempel FIR-samlingskode i databøkene eller applikasjonshåndbøkene, så sørg for å se på dem før du gjenoppfinner den sirkulære bufferen. 4.4 Hvordan tester jeg min FIR-implementering Her er noen få metoder: Impulstest: En veldig enkel og effektiv test er å sette en impuls inn i den (som bare er en prøve, etterfulgt av ikke N-1 nuller.) Du kan også Sett inn et impulstog, med de 1 prøvene fordelt minst N eksempler fra hverandre. Hvis alle koeffisientene til filteret kommer ut i riktig rekkefølge, er det en god sjanse for at filteret ditt fungerer riktig. (Du vil kanskje teste med ikke-lineære fase koeffisienter, slik at du kan se hvilken rekkefølge de kommer ut.) Vi anbefaler at du gjør denne testen når du skriver en ny FIR-filterrutine. Trinntest: Skriv inn N eller flere 1 prøver. Utgangen etter N prøver, bør være summen (DC gain) på FIR-filteret. Sine Test: Skriv inn en sinusbølge på en eller flere frekvenser og se om utgangssensoren har forventet amplitude. Feid FM-test: Fra Eric Jacobsen: Min favorittprøve etter et impulstog er å ta to identiske forekomster av filteret som testes, bruk dem som I og Q-filtre og sett et komplekst FM lineært feie gjennom dem fra DC til Fs2. Du kan gjøre en FFT på resultatet og se filterets komplette frekvensrespons, sørg for at fasen er fin og kontinuerlig overalt, og samsvar med svaret til det du forventer av koeffisjonssettet, presisjonen, etc. 4.5 Hvilke triks er nyttig i å implementere FIR-filter FIR-tricksenter på to ting 1) Ikke beregne ting som ikke må beregnes, og 2) Faking sirkulære buffere i programvare. 4.5.1 Hvordan hopper jeg over overflødige beregninger Først, hvis filteret ditt har nullverdierte koeffisienter, trenger du ikke faktisk å beregne de kranene du kan legge dem ut. Et vanlig tilfelle av dette er halvbåndsfilter, som har egenskapen at hver annen koeffisient er null. For det andre, hvis filteret ditt er symmetrisk (lineær fase), kan du forhåndsinnstille prøvene som vil bli multiplisert med samme koeffisient verdi, før du gjør multiplikasjonen. Siden denne teknikken i hovedsak handler et tillegg for en multiplikasjon, er det ikke veldig nyttig i DSP mikroprosessorer som kan gjøre en multiplikasjon i en enkelt instruksjons syklus. Det er imidlertid nyttig i ASIC-implementeringer (der tillegg vanligvis er mye billigere enn multiplikasjon), og noen nyere DSP-prosessorer tilbyr nå spesiell maskinvare og instruksjoner for å benytte seg av dette trikset. 4.5.2 Hvordan feiler jeg sirkulære buffere i programvare Når harddiskstøtte for sirkulære buffere ikke er tilgjengelig, må du fake dem. Siden ANSI C ikke har noen konstruksjon for å beskrive sirkulære buffere, kan de fleste C-kompilatorer ikke generere kode for å bruke dem, selv om målprosessoren har dem. Du kan alltid implementere en sirkulær buffer ved å duplisere logikken til en sirkulær buffer i programvare (og mange har), men overhead kan være uoverkommelig, den sirkulære falske kan ta flere instruksjoner å implementere, sammenlignet med bare en enkelt instruksjon for å gjøre multiplikasjonen akkumulere drift Derfor må du fake det. Her er flere grunnleggende teknikker til falske sirkulære buffere: Del beregningen: Du kan dele hvilken som helst FIR-beregning i pre-wrap og post-wrap deler. Ved å kutte beregningen i disse to delene, kan du i hovedsak gjøre den sirkulære logikken bare én gang, i stedet for en gang per trykk. (Se firdoublez i FirAlgs. c ovenfor.) Dupliser forsinkelseslinjen: For en FIR med N kraner, bruk en forsinkelseslinje med størrelse 2N. Kopier hver prøve til riktig sted, samt på stedet pluss-N. Derfor kan FIR-beregningene MAC-kretsen gjøres på en flat buffer med N-punkter, som starter hvor som helst innenfor det første settet med N-punkter. Det andre settet med N forsinket prøver gir viklingen rundt som kan sammenlignes med en ekte sirkulær buffer. (Se firdoublez i FirAlgs. c ovenfor.) Dupliser koeffisientene: Dette ligner på ovenstående, bortsett fra at duplisering skjer i form av koeffisientene, ikke forsinkelseslinjen. Sammenlignet med den forrige metoden har dette en beregningsfordel ved ikke å lagre hver innkommende prøve to ganger, og den har også en minnefordel når samme koeffisient settes vil bli brukt på flere forsinkelseslinjer. (Se firdoubleh i FirAlgs. c ovenfor.) Bruk blokkbehandling: Ved blokkbehandlingen bruker du en forsinkelseslinje som er flere av antall kraner. Du må derfor kun flytte dataene en gang per blokk for å implementere forsinkelseslinjemekanismen. Når blokkstørrelsen blir stor, blir overhead for å flytte forsinkelseslinjen en gang per blokk, ubetydelig.

Comments

Popular posts from this blog

Forex Akademi Singapore

Kortsiktig Systematisk Handel

Binary Alternativ Megler Regulert Medisinsk Avfall