Som andre har nevnt, bør du vurdere et IIR uendelig impulsresponsfilter i stedet for det FIR-finale impulsresponsfilteret du bruker nå Det er mer til det, men ved første øyekast implementeres FIR-filtre som eksplisitte konvolutter og IIR-filtre med ligninger. bestemt IIR-filter Jeg bruker mye i mikrokontrollere er et enkeltpolet lavpasfilter Dette er den digitale ekvivalenten til et enkelt RC-analogfilter For de fleste applikasjoner vil disse ha bedre egenskaper enn det boksfilter du bruker Mest bruk av et eskefilter som jeg har møtt, er et resultat av at noen ikke betaler oppmerksomhet i digital signalbehandlingsklasse, ikke som følge av at de trenger deres spesielle egenskaper. Hvis du bare vil dempe høyfrekvenser som du vet er støy, er et enkeltpolet lavpasfilter bedre. beste måten å implementere en digital på en mikrokontroller er vanligvis. FILT - FILT FF NEW - FILT. FILT er et stykke vedvarende tilstand Dette er den eneste vedvarende va pålitelig må du beregne dette filteret NYTT er den nye verdien som filteret blir oppdatert med denne iterasjonen. FF er filterfraksjonen som justerer filterets tyngde. Se på denne algoritmen, og se at for FF 0 er filteret uendelig tungt siden utgangen endres aldri For FF 1 er det egentlig ikke noe filter i det hele tatt, siden utgangen bare følger inngangen. Nyttige verdier er i mellom På små systemer velger du FF til 1 2 N slik at multipliseringen med FF kan oppnås som en høyre skift ved N biter For eksempel kan FF være 1 16 og multipliserer med FF derfor en riktig skift på 4 biter. Ellers trenger dette filteret bare en subtrahering og ett tillegg, selv om tallene vanligvis må være bredere enn inngangsverdien mer på numerisk presisjon i et eget avsnitt nedenfor. Jeg bruker vanligvis AD-lesinger betydelig raskere enn de trengs, og bruker to av disse filtre kaskad Dette er den digitale ekvivalenten til to RC-filtre i serie, og demper med 12 dB oktav over rollen frekvens For AD-avlesninger er det imidlertid vanligvis mer relevant å se på filteret i tidsdomene ved å vurdere trinnresponsen. Dette forteller deg hvor fort systemet ditt vil se en endring når tinget du måler forandringer. For å lette utformingen av disse filtrene som bare betyr å plukke FF og bestemme hvor mange av dem som skal kaskade, bruker jeg mitt program FILTBITS Du angir antall skiftbiter for hver FF i den kaskade serien av filtre, og den beregner trinnresponsen og andre verdier. Egentlig kjører jeg vanligvis dette via min wrapper script PLOTFILT Dette kjører FILTBITS, som lager en CSV-fil, og plottar deretter CSV-filen. For eksempel, her er resultatet av PLOTFILT 4 4.De to parameterne til PLOTFILT betyr at det vil være to filtre kaskade av typen beskrevet ovenfor. Verdiene av 4 angir antall skiftbiter for å realisere multiplikasjonen med FF De to FF-verdiene er derfor 1 16 i dette tilfellet. Det røde sporet er enhetens trinnrespons, og er det viktigste å se på. Er det slik at hvis inngangen endres øyeblikkelig, vil utgangen av det kombinerte filteret sette seg til 90 av den nye verdien i 60 iterasjoner Hvis du bryr deg om 95 settlingstid, må du vente på 73 iterasjoner, og i 50 oppgjørstid bare 26 iterasjoner . Den grønne sporen viser deg utgangen fra en enkelt full amplitude spike Dette gir deg en ide om tilfeldig støyundertrykking. Det ser ut til at ingen enkelt prøve vil forårsake mer enn en 2 5 endring i utgangen. Det blå sporet er å gi en subjektiv følelse av hva dette filteret gjør med hvit støy Dette er ikke en streng test siden det ikke er noen garanti for nøyaktig hva innholdet av tilfeldige tall ble plukket som den hvite støyinngangen for denne runden av PLOTFILT Det er bare for å gi deg en grov følelse av hvor mye det vil bli squashed og hvor glatt det er. PLOTFILT, kanskje FILTBITS, og mange andre nyttige ting, spesielt for PIC-fastvareutvikling, er tilgjengelig i PIC Development Tools-programvareutgivelsen på min nedlastinger for programvare. dedikert til numerisk presisjon. Jeg ser fra kommentarene og nå et nytt svar at det er interesse i å diskutere antall bits som trengs for å implementere dette filteret Merk at multipliseringen med FF vil skape Log 2 FF nye biter under binærpunktet På små systemer , Er FF vanligvis valgt til å være 1 2 N slik at denne multipliseringen faktisk er realisert ved en rettforskyvning av N bits. FILT er derfor vanligvis et fast punkt heltall. Merk at dette ikke endrer noen av matematikken fra prosessorens synspunkt Hvis du for eksempel filtrerer 10 bit AD-avlesninger og N 4 FF 1 16, trenger du 4 brøkdeler under 10 biters heltall-AD-avlesninger. En av prosessorene gjør at du gjør 16 biters heltalloperasjoner på grunn av 10-biters AD-avlesningene. I dette tilfellet kan du likevel gjøre nøyaktig de samme 16 biters integeroperasjoner, men begynner med AD-avlesningene skiftet med 4 bits. Prosessoren vet ikke forskjellen og trenger ikke å gjøre matematikken på hele 16 bit heltall fungerer, uansett om du anser dem for å være 12 4 faste punkter eller ekte 16 bit heltall 16 0 fast punkt. Generelt må du legge til N bits hver filterpole hvis du ikke vil legge til lyd på grunn av den numeriske representasjonen. I eksemplet ovenfor ville det andre filteret av to ha å ha 10 4 4 18 biter for ikke å miste informasjon I praksis på en 8-bits maskin som betyr at du bruker 24 bitverdier Teknisk, bare den andre polen på to ville trenge den bredere verdien, men for enkelhet i fastvare bruker jeg vanligvis den samme representasjonen, og dermed den samme koden for alle polene i et filter. Normalt skriver jeg en subrutine eller makro for å utføre en filterpoleoperasjon, og deretter bruke det til hver pol. En subroutine eller makro avhenger av om sykluser eller programminne er viktigere i det bestemt prosjekt Uansett bruker jeg litt ripe til å passere NY inn i subrutinen makroen, som oppdaterer FILT, men laster også inn i den samme riper staten NY var i Dette gjør det enkelt å bruke flere poler siden den oppdaterte FILT av en pol er NE W av den neste Når en subrutine er, er det nyttig å ha en pekepunkt til FILT på vei inn, som oppdateres til like etter FILT på vei ut. På den måten fungerer subrutinen automatisk på etterfølgende filtre i minnet hvis det kalles flere ganger Med en makro trenger du ikke en peker siden du sender inn adressen for å operere på hver iterasjon. Kodeeksempler. Her er et eksempel på en makro som beskrevet ovenfor for en PIC 18.Og her er en lignende makro for en PIC 24 eller dsPIC 30 eller 33.Both disse eksemplene er implementert som makroer ved hjelp av min PIC assembler preprocessor som er mer kapabel enn noen av de innebygde makroanleggene. clabacchio Et annet problem jeg burde ha nevnt, er implementering av fastvare Du kan skrive en enkeltpolet lavpassfilter subrutine en gang, og deretter bruke den flere ganger Faktisk skriver jeg vanligvis en slik subrutine for å ta en peker i minnet til filtertilstanden, så har du det på forhånd pekeren slik at den kan kalles i rekkefølge lett for å realisere flerpolige filtre Olin Lathrop Apr 20 12 til 15 03.1 Takk for svarene dine - alle av dem bestemte jeg meg for å bruke dette IIR-filteret, men dette filteret brukes ikke som et Standard LowPass-filter, siden jeg trenger gjennomsnittlige counterverdier og sammenligner dem for å oppdage endringer i et bestemt område, siden disse verdiene er av svært forskjellige dimensjoner avhengig av maskinvare jeg ønsket å ta et gjennomsnitt for å kunne reagere på disse maskinvarene spesifikke endringer automatisk senselen 21 mai 12 kl 12 06. Hvis du kan leve med begrensningen av en kraft på to antall elementer til gjennomsnittet, dvs. 2,4,8,16,32 etc, kan dividen enkelt og effektivt gjøres på en lav ytelse mikro med ingen dedikert deling fordi det kan gjøres som en bit skift Hvert skift høyre er en kraft på to f. eks. OPen trodde han hadde to problemer, delt i en PIC16 og minne for hans ring buffer Dette svaret viser at delingen Det er ikke vanskelig. Det tar ikke opp minneproblemet, men SE-systemet tillater delvise svar, og brukerne kan ta noe fra hvert svar for seg selv, eller til og med redigere og kombinere andre svar. Siden noen av de andre svarene krever en splittelse, er likevel ufullstendig fordi de ikke viser hvordan man effektivt oppnår dette på en PIC16 Martin 20 april 12 på 13 01. Det er et svar på et ekte glidende gjennomsnittsfilter aka boxcar filter med mindre minnebehov, hvis du ikke har det galt, kalt et kaskadeintegrator-kamfilter CIC Ideen er at du har en integrator som du tar forskjeller over en tidsperiode, og nøkkelminnebesparende enheten er at ved nedsampling behøver du ikke å lagre eve ry verdi av integratoren Det kan implementeres ved hjelp av følgende pseudokode. Din effektive bevegelige gjennomsnittslengde er decimationFactor stateize, men du trenger bare å beholde stateize-prøver. Selvfølgelig kan du få bedre ytelse dersom stateize og decimationFactor er krefter på 2, slik at divisjon og resten operatører blir erstattet av skift og maske-og. Postscript Jeg er enig med Olin om at du alltid bør vurdere enkle IIR-filtre før et glidende gjennomsnittlig filter. Hvis du ikke trenger frekvens-nullene til et boxcarfilter, en 1-polet eller 2-polet lavpasfilter vil trolig fungere fint. Hvis du imidlertid filtrerer med henblikk på dekimering, tar du en høyprøve-hastighetsinngang og gjennomsnittsverdi den for bruk ved en lavprosessprosess, da et CIC-filter kan være akkurat det du leter etter, spesielt hvis du kan bruke stateize 1 og unngå ringbufferen helt med bare en enkelt tidligere integrator verdi. Det er noen grundig analyse av matematikken bak ved å bruke de første ordene er IIR-filteret som Olin Lathrop allerede har beskrevet over på Digital Signal Processing-stakkutvekslingen, inneholder mange flotte bilder. Ligningen for dette IIR-filteret er. Dette kan implementeres ved hjelp av heltall, og ingen deling ved hjelp av følgende kode kan trenge litt feilsøking som jeg var å skrive fra minnet. Dette filteret tilnærmer et glidende gjennomsnitt av de siste K-prøvene ved å sette verdien av alfa til 1 K Gjør dette i forrige kode ved å definere BITS til LOG2 K, dvs. for K 16 sett BITS til 4, for K 4 sett BITS til 2, etc. Jeg vil verifisere koden som er oppført her så snart jeg får en endring og rediger dette svaret hvis nødvendig. Ansatt Jun 23 12 kl 04 04. Her er enpolet lavpasfilter glidende gjennomsnitt, med cutoff frekvens CutoffFrequency Svært enkel, veldig rask, fungerer bra, og nesten ingen minne overhead. Note Alle variabler har omfang utover filterfunksjonen, bortsett fra det passerte i newInput. Note Dette er et enkeltstadiefilter Flere stadier kan bli kaskad sammen for å øke skarphet av filteret Hvis du bruker mer enn ett trinn, må du justere DecayFactor som angår Cutoff-Frequency for å kompensere. Og åpenbart alt du trenger er de to linjene plassert hvor som helst, de trenger ikke egen funksjon. Dette filteret har en rampetid før det bevegelige gjennomsnittet representerer det av inngangssignalet. Hvis du trenger å omgå denne oppkjøretiden, kan du bare initialisere MovingAverage til den første verdien av newInput istedenfor 0, og håper at den første newInput ikke er en outlier. CutoffFrequency SampleRate har en rekkevidde mellom 0 og 0 5 DecayFactor er en verdi mellom 0 og 1, vanligvis i nærheten av 1.Single-presisjon flyter er gode nok for de fleste ting, jeg foretrekker bare dobbeltrom Hvis du trenger å holde fast med heltall, kan du konvertere DecayFactor og Amplitude Factor til brøkdelte tall, hvor telleren er lagret som heltallet, og nevneren er et heltall på 2, slik at du kan bitskifte til høyre som nevner i stedet for å måtte dele seg under filtersløyfen For For eksempel, hvis DecayFactor 0 99, og du vil bruke heltall, kan du angi DecayFactor 0 99 65536 64881 Og så når du multipliserer med DecayFactor i filtersløyfen, skift du bare resultatet 16.For mer informasjon om dette, en utmerket bok som s online, kapittel 19 om rekursive filtre. PS For det Moving Average paradigmet, en annen tilnærming til å sette DecayFactor og AmplitudeFactor som kan være mer relevant for dine behov, la oss si at du vil ha det forrige, ca 6 elementer i gjennomsnitt tog eter, gjør det diskret, du d legger til 6 elementer og deler med 6, slik at du kan sette AmplitudeFactor til 1 6 og DecayFactor til 1 0 - AmplitudeFactor. answered 14 mai 12 på 22 55. Alle andre har kommentert grundig på verktøyet av IIR vs FIR, og på power-of-two divisjon Jeg vil bare gi noen implementasjonsdetaljer. Nedenfor fungerer bra på små mikrocontrollere uten FPU. Det er ingen multiplikasjon, og hvis du beholder N en kraft på to, vil hele divisjonen er single-cycle bit-shifting. Basic FIR ring buffer holde en kjører buffer av de siste N verdiene, og en kjører SUM av alle verdiene i bufferen Hver gang en ny prøve kommer inn, trekker du den eldste verdien i bufferen fra SUM , erstatt den med den nye prøven, legg til den nye prøven til SUM, og utdata SUM N. Modified IIR ringbufferen holde en løpende SUM av de siste N-verdiene Hver gang en ny prøve kommer inn, SUM - SUM N, legger du til den nye prøve og utdata SUM N. answered 28 Aug 13 på 13 45. Hvis jeg leser deg riktig, beskriver du en første ordre IIR filtrere verdien du trekker, er ikke den eldste verdien som faller ut, men er i stedet gjennomsnittet av tidligere verdier. Førstegangs IIR-filtre kan sikkert være nyttig, men jeg er ikke sikker på hva du mener når du foreslår at utgangen er den samme for alle periodiske signaler Ved en 10 kHz samplingsfrekvens vil fôring av en 100 Hz firkantbølge i et 20-trinns boksfilter gi et signal som stiger jevnt for 20 prøver, sitter høyt for 30, faller jevnt for 20 prøver og sitter lavt for 30 En førstegangs IIR filter supercat Aug 28 13 til 15 31. vil gi en bølge som skarpt begynner å stige og gradvis avtar nær, men ikke ved inngangs maksimum, så begynner det å falle og gradvis avstand nær, men ikke ved inngangen minimum Svært ulik adferd supercat Aug 28 13 til 15 32. Et problem er at et enkelt bevegelige gjennomsnitt kan eller ikke kan være nyttig Med et IIR-filter kan du få et fint filter med relativt få beregninger. Den FIR du beskriver kan bare gi deg en rektangel i tid - en sync i freq - og du kan ikke styre sidelobene. Det kan være vel verdt det å kaste inn noen få heltall multipliserer for å gjøre det til en fin symmetrisk tunbar FIR hvis du kan spare klokken ticks Scott Seidman Aug 29 13 på 13 50. ScottSeidman Nei behov for multipliserer hvis man bare har hvert trinn i FIR, enten utdataene gjennomsnittet av inngangen til det stadiet og dets tidligere lagrede verdi, og deretter lagre inngangen hvis man har numerisk rekkevidde, man kan bruke summen heller enn gjennomsnittet, enten det s bedre enn et boksfilter avhenger av applikasjonen, vil trinnresponsen til et boksfilter med en total forsinkelse på 1 ms for eksempel ha en stygg d2 dt spike når inngangen endres, og igjen 1 m senere, men vil ha det minste mulige d dt for et filter med totalt 1ms forsinkelse supercat Aug 29 13 på 15 25. Hvis mikeselektriske stoffer sa at hvis du virkelig trenger å redusere minnebehovet, og du ikke husker at ditt impulsrespons er eksponentielt i stedet for en rektangulær puls, ville gå for en eksponentiell flytende ave raser filter Jeg bruker dem i stor grad Med den typen filter trenger du ikke noen buffer Du trenger ikke å lagre N forbi prøvene Bare en Så, dine minnekrav blir kuttet ned med en faktor N. Også du trenger ikke noen divisjon for det Bare multiplikasjoner Hvis du har tilgang til flytpunkt-aritmetikk, bruk flytende punktmultiplikasjoner Ellers gjør vi multipeltall og skift til høyre Vi er imidlertid i 2012, og jeg vil anbefale deg å bruke kompilatorer og MCUer som tillater deg for å arbeide med flytende punktnumre. I tillegg til å være mer minneeffektiv og raskere, trenger du ikke å oppdatere elementer i noen sirkulær buffer, jeg vil si det er også mer naturlig fordi en eksponentiell impulsrespons passer bedre til måten naturen oppfører seg, i de fleste tilfeller. ansvaret 20. april 12 på 9 59. Et problem med IIR-filteret som nesten berørt av olin og supercat, men tilsynelatende ignorert av andre, er at avrundingen introduserer noe upresisjon og potensielt bias trunkering forutsatt at N jeg en kraft av to, og bare heltall aritmetikk er brukt, skiftet rett eliminerer systematisk LSBene i den nye prøven. Det betyr at hvor lenge serien kan være, vil gjennomsnittet aldri ta hensyn til disse. For eksempel antar du sakte fallende serie 8,8,8 8,7,7,7 7,6,6, og antar at gjennomsnittet faktisk er 8 i begynnelsen. Neven 7-prøven vil gi gjennomsnittet til 7, uansett filterstyrken Bare for en prøve Samme historie for 6 osv. Tenk på det motsatte serien går opp. Gjennomsnittet vil forbli på 7 for alltid, inntil prøven er stor nok til å gjøre det endres. Selvfølgelig kan du korrigere for bias ved å legge 1 2 N 2, men som vant t virkelig løse presisjon problemet i så fall vil den avtagende serien forbli for alltid ved 8 til prøven er 8-1 2 N 2 For N 4 for eksempel vil enhver prøve over null holde gjennomsnittet uendret. Jeg tror en løsning for Det ville innebære å holde en akkumulator av de tapte LSBene. Men jeg gjorde det ikke så langt å ha kode klar, og jeg er ikke sikker på at det ikke ville skade IIR-strømmen i noen andre tilfeller av serier, for eksempel om 7,9,7,9 ville gjennomsnittlig til 8 da. Olin, din to-trinns kaskade vil også trenge en forklaring. Mener du å holde to gjennomsnittsverdier med resultatet av den første som er matet inn i den andre i hver iterasjon. Hva er fordelene med dette? Utmerket kaskad integrert-kamfiltrer. Ved Richard Lyons, Rett på Embedded Systems Programmering 31. mars 2005 14 49 PM. Det tidligere obskure CIC-filteret er nå viktig for mange trådløse kommunikasjonsoppgaver og høyt volum. Ved hjelp av CIC-filtre kan du redusere kostnadene, forbedre påliteligheten og hjelpe ytelsen. Her begynner du å starte deg. Cascaded integrator-comb CIC digitale filtre er beregningsmessige effektive implementeringer av smalbånds lowpass filtre og er ofte innebygd i maskinvareimplementeringer av decimering og interpolering i moderne kommunikasjonssystemer. CIC-filtre ble introdusert til signalbehandlingssamfunnet, av Eugene Hogenauer, mer enn to tiår siden, men deres anvendelsesmuligheter har vokst de siste årene 1 Forbedringer i chipteknologi, økningen bruk av polyphase-filtreringsteknikker, fremskritt i delta-sigma-konverteringsimplementeringer, og den betydelige veksten i trådløs kommunikasjon har alle ansporet mye interesse for CIC-filtre. Selv om oppførselen og implementeringen av disse filtrene ikke er komplisert, har dekningene deres vært knappe i litteratur av innebygde systemer Denne artikkelen forsøker å forsterke litteraturen for innebygde systemingeniører Etter å ha beskrevet noen få applikasjoner for CIC-filtre, vil jeg presentere sin struktur og oppførsel, presentere frekvensdomenet i CIC-filtre og diskutere flere viktige praktiske problemer ved å bygge disse filtene. CIC-filterapplikasjoner CIC-filtre er velegnet for antialiasingfiltrering før decimering av prøvefrekvensreduksjon, som vist i figur 1a, og for anti-imaging-filtrering for interpolerte signaler, øker prøvehastighetsøkningen som i figur 1b. Begge applikasjoner er assosiert med svært høy datahastighetsfiltrering, for eksempel maskinvarekvadraturmodulasjon an d demodulering i moderne trådløse systemer og delta-sigma AD - og DA-omformere. Fordi deres frekvensstørrelsesrespons-konvolutter er synd xx-lignende, blir CIC-filtre typisk enten etterfulgt av eller på forhånd med høyere ytelse lineærfase lowpass-tappforsinkelseslinje FIR filtre hvis oppgaver er å kompensere for CIC-filterets ikke-flate passbånd. Denne kaskadfilterarkitekturen har verdifulle fordeler. For eksempel med decimering kan du i stor grad redusere beregningsmessig kompleksitet av narrowband lowpass-filtrering sammenlignet med dersom du brukte en single-low-end finite impuls respons FIR-filter I tillegg opererer FIR-filteret med reduserte klokkeslett som minimerer strømforbruket i høyhastighets maskinvareapplikasjoner. En viktig bonus ved bruk av CIC-filtre, og en egenskap som gjør dem populære i maskinvareenheter, er det de krever ingen multiplikasjon Aritmetikken som trengs for å implementere disse digitale filtrene, er strengt tillegg og subtraksjoner. Med det sagt, la oss se hvordan CIC-filtre virker. Recursive løpende-filter-filter-CIC-filtre stammer fra begrepet rekursivt løpende-filter, som i seg selv er en effektiv form for en ikke-gjenoppbyggende flytteverdi. Tilbakekall standard D-punkt-bevegelsesmiddelprosessen i figur 2a der vi ser at D -1 summeringer pluss en multipliseres med 1 D er nødvendig for å beregne gjennomsnittsverdien y n. D-punkts flytende gjennomsnittsfilter s-utgang i tid er uttrykt som. where n er vår tidsdomener-indeks Z-domene-uttrykket for denne bevegelige averager er da sin z-domene H z overføringsfunksjon er. Jeg gir disse ligningene ikke for å gjøre ting komplisert, men fordi de blir nyttige. Ligning 1 forteller oss hvordan man bygger en bevegelig gjennomsnittlig, og ligning 3 er i form brukt av kommersiell signalbehandlingsprogramvare for å modellere frekvensdomenet til den bevegelige averager. Det neste trinnet i vår reise mot forståelse av CIC-filtre er å vurdere et tilsvarende form for den bevegelige middelmåleren, det rekursive løpeprisfilteret d i figur 2b Der ser vi at den nåværende inngangseksempelet xn er lagt til, og den eldste inngangseksemplaret xn - D blir trukket fra det forrige utgangsnivået yn -1 Det kalles rekursivt fordi det har tilbakemelding. Hver filterutgangsprøve blir beholdt og brukt å beregne neste utgangsverdi Det rekursive løpende filterets differansekvasjon har as-domene H z-overføringsfunksjonen av. Vi bruker den samme H z-variabelen for overføringsfunksjonene til det bevegelige gjennomsnittsfilteret og den rekursive løpende summen filter fordi deres overføringsfunksjoner er lik hverandre Det er sant Likning 3 er det ikke-gjenopprettede uttrykket og ligning 5 er det rekursive uttrykket for en D - point-måler Det matematiske beviset på dette finnes i boken min om digital signalbehandling, men snart Jeg vil demonstrere at ekvivalensen med et eksempel 2. Her er hvorfor vi bryr oss om rekursive kjøringsfiltre. Den standardbevegende gjennomsnittet i figur 2a må utføre D -1 tillegg per utgangssprøve. Den rekursive runnin g-sum filter har den søte fordel at bare ett tillegg og en subtraksjon kreves per utgangsprøve uavhengig av forsinkelseslengden D Denne beregningseffektiviteten gjør det rekursive løpeprisfilter attraktivt i mange applikasjoner som søker støyreduksjon gjennom gjennomsnittsnivå. Neste vi vil se hvordan et CIC-filter er i seg selv et rekursivt løpende-filter. CIC-filterstrukturer Hvis vi kondenserer forsinkelseslinjepresentasjonen og ignorerer 1D-skaleringen i figur 2b, oppnår vi den klassiske formen av et 1-ords CIC-filter, hvis kaskade strukturen er vist i figur 2c. Den fremmatede delen av CIC-filteret kalles kam-delen, hvis differensialforsinkelse er D, mens tilbakemeldingsseksjonen vanligvis kalles en integrator. Kam-scenen trekker en forsinket inngangseksempel fra gjeldende inngangseksempel, og integratoren er ganske enkelt en akkumulator. CIC-filterets differansekvasjon er. og dens z-domeneoverføringsfunksjon er. For å se hvorfor CIC-filteret er av interesse, undersøker vi først sin tid - domæneadferd, for D 5, vist i figur 3 Hvis en enhet-impuls-sekvens, en enhet-verdsatt prøve etterfulgt av mange nullverdierte prøver, ble påført kam-scenen, er trinnets utgang som vist i figur 3a Nå tenk, hva ville integratorens utgangseffekt hvis innspillingen var comb-trinnets impulsrespons Den første positive impulsen fra kamfilteret starter integrators s all-ones-utgang, som i figur 3b Derefter D-prøver senere, den negative impuls fra kam-scenen kommer til integratoren til å nullle alle ytterligere CIC-filterutgangsprøver. Hovedkvarteret er at den kombinerte enhet-impulsresponsen til CIC-filteret, som er en rektangulær sekvens, er identisk med enhetens impulsrespons for en bevegelse - avhengig filter og det rekursive løpende filteret. Flytte gjennomsnitt, rekursive løpende filtre og CIC-filtre er nærtstående. De har de samme z-domene-pole-null-posisjonene, deres frekvensstørrelsesresponser har identiske former, deres fasesponser er identiske, og T arveoverføringsfunksjoner avviker bare med en konstant skaleringsfaktor Hvis du forstår tidsdomeneradministrasjonen til en bevegelig averager, forstår du nå tid-domeneadferdigheten til CIC-filteret i figur 2c. Frekvensstørrelsen og lineærfasesponsen av en D 5 CIC-filter er vist på figur 4a hvor frekvensen s er inngangssignal-samplingsfrekvensen i Hz. Vi kan få et uttrykk for CIC-filterets frekvensrespons ved å evaluere ligning 7 s H cic z-overføringsfunksjon på z-planen s enhet sirkel, ved å sette Zej 2 gir. Bruk Euler s identitet 2 j sin ej - ikke vi kan skrive. Hvis vi ignorerer fasefaktoren i ligning 9, kan dette forholdet av syndvilkår tilnærmet av en sin xx-funksjon Dette betyr at CIC-filterets frekvensstørrelsesrespons er omtrent lik en sin xx-funksjon sentrert ved 0Hz som vi ser på figur 4a. Dette er grunnen til at CIC-filtre noen ganger kalles sinc-filter. Digitale filterdesignere liker å se z-plane pole zero plots, så vi gi z-planen charac termer av et D 5 CIC filter i figur 4c, hvor kamfilteret produserer D-nuller, like fordelt rundt enhetssirkelen, og integratoren produserer en enkelt pol, nullstiller null ved z 1 Hvert av kammenes nuller, er en D th-rotten på 1, ligger ved zmej 2 m D hvor m 0, 1, 2 D -1, tilsvarende en nullitude i figur 4a. Den normalt risikable situasjonen for å ha en filterpole direkte på enhetens sirkel trenger ikke å bekymre oss her fordi det ikke er noen koeffisientkvantiseringsfeil i vår H cic z-overføringsfunksjon. CIC-filterkoeffisienter er de og kan representeres med perfekt presisjon med fastpunktsnummerformater. Selv om rekursive, lykkes, er CIC-filtre garantert stabil, lineærfase vist i figur 4b , og har impulssvar ved finlengden. Ved 0 Hz DC er forsterkningen av et CIC-filter lik kamfilterforsinkelsen D Dette faktum, hvis avledning er tilgjengelig, vil være viktig for oss når vi faktisk implementerer et CIC-filter i maskinvaren 2.Figur 5 CIC-filter med ett trinn s brukes i decimering og interpolering Se full størrelse image. Again, CIC filtre er primært brukt for antialiasing filtrering før decimering og for anti-imaging filtrering for interpolerte signaler Med disse forestillingene i tankene bytter vi rekkefølgen av figur 2c s kam og integrator vi får lov til å gjøre det fordi disse operasjonene er lineære og inkludere dekimering av en prøvefrekvensfaktor R i figur 5a. Du kan ønske å bevise at enhetens impulsrespons av integratorkombombinasjonen, før samplingshastigheten endres, i figur 5a er lik den i figur 3c I de fleste CIC-filterapplikasjoner er frekvensendringen R lik lik combs differensialforsinkelsen D, men vi vil beholde dem som separate designparametere for nå. Figur 6 Magnituderespons av en 1-ordre, D 8 , dekimere CIC-filter før decimering aliasiing etter R 8-desimasjon Se fullstørrelsesbilde. Decimeringsoperasjonen R betyr at du sletter alle, men hver R-prøve, og resulterer i en utgangsprøvehastighet på s, ut s, i R For å invitere Figur 6a viser frekvensstørrelsesresponsen til et D 8 CIC-filter før dekimering. Spektralbåndet, med bredde B sentrert ved 0 Hz, er ønsket passbånd for filteret A-nøkkelaspektet av CIC-filtre er spektralfoldingen som finner sted på grunn av dekimasjon. Disse B-bredde-skyggede spektralbåndene sentrert om flere ganger s, i R i Figur 6a, vil alias direkte inn i ønsket passbånd etter dekimering med R 8 som vist i figur 6b Legg merke til hvordan Den største aliased spektralkomponenten, i dette eksemplet, er omtrent 16 dB under toppen av bandet av interesse. Selvfølgelig er aliasstyrkenivået avhengig av båndbredden B, desto mindre B er, jo lavere er den aliasedenergien etter decimering. Figur 7 Første rekkefølge , DR 8, interpolerende CIC-filterspektre-inngangspektrumutgangspektralbilder. Se fullstørrelsesbilde. Fig. 5b viser et CIC-filter som brukes til interpolering der R-symbolet betyr innsats R -1-nuller mellom hver xn-prøve, hvilket gir en yn utgangsprøvehastighet s, ut R s, i I denne CIC-filterdiskusjonen er interpolering definert som nullerinnsetting etterfulgt av filtrering. Figur 7a viser et vilkårlig basebåndspektrum med sine spektralreplikasjoner av et signal påført til DR 8 interpolerende CIC-filter i figur 5b Filterets utgangsspektrum i figur 7b viser hvordan ufullstendig filtrering gir opphav til uønskede spektrale bilder. Etter interpolering ligger uønskede bilder av B-bredde-basebåndspekteret ved null-sentrene, plassert ved heltallsmultipler av s, ut R Hvis vi følger CIC-filteret med et tradisjonelt lowpass-tappet forsinkelseslinje-FIR-filter, hvis stoppbånd inneholder det første bildebåndet, kan det oppnås et relativt høyt bildeavslag. Fig. 8 CIC-decimeringsfilterstruktur for tredje rekke og størrelsesrespons før decimering når DR 8 Se full størrelse image. Improving CIC demping Den vanligste metoden for å forbedre CIC filter anti-aliasing og image-reject demping er ved å øke rekkefølgen M av CIC filter ved hjelp av flere trinn Figur 8 viser strukturen og frekvensstørrelsesresponsen til et 3-ordig M 3 CIC-dekimeringsfilter. Merk den økte dempningen ved s, ut R i figur 8b sammenlignet med det første rekkefølge CIC-filteret på figur 6a fordi M 3 CIC-stadier er i kaskade, den generelle frekvensstørrelsesresponsen vil være produktet av deres individuelle svar eller. Prisen vi betaler for forbedret anti-aliasdemping er ekstra maskinvareadditiver og økt CIC-filterpassbåndsløsning. En ytterligere straff for økt filterbestilling kommer fra forsterkningen av filteret, som er eksponentielt med rekkefølgen Fordi CIC-filtre generelt må virke med full presisjon for å forbli stabil, er antall biter i adders M log 2 D, hvilket betyr en stor dataordbreddsstraff for høyere ordrefiltre Likevel er denne flerstegsimplementasjonen vanlig i kommersielle integrerte kretser, der et M-ordens CIC-filter ofte kalles et sinc M-filter. Figur 9 En-trinns CIC-filter im plementations for decimation for interpolation Se full størrelse image. Building av et CIC filter I CIC filtre kan kam-delen foregå eller følge integratorseksjonen. Det er imidlertid fornuftig å sette kammen på siden av filteret som opererer på Den nedre samplingsfrekvensen for å redusere lagringskravene i forsinkelsen Bytte kamfiltrene fra figur 5 med frekvensomformingsoperasjonene resulterer i den vanligste implementeringen av CIC-filtre, som vist i figur 9. Merk at dekimasjonsfilterets kam-seksjon nå har en forsinkelseslengdeforskjellforsinkelse for NDR Det er fordi en N-prøveforsinkelse etter dekimering med R er ekvivalent med en D-prøveforsinkelse før dekimering av R På samme måte for interpolasjonsfilteret er en N-prøveforsinkelse før interpolering av R ekvivalent med en D - prøveforsinkelse etter interpolering av R. Those Figur 9-konfigurasjoner gir to store fordeler først, kam-seksjonen s ny differensialforsinkelse er redusert til NDR som reduserer datalagringskravene andre, kam-delen opererer nå med redusert klokkefrekvens Begge disse effektene reduserer maskinens strømforbruk. Figur 10 CIC-desimasjonsfilterresponser for forskjellige verdier av differensialforsinkelse N når R 8 for to dekimasjonsfaktorer når N 2 Se fullstørrelsesbilde. Kammen Seksjonens differensialforsinkelsesdesignparameter N er typisk 1 eller 2 for høye samplingsfrekvensforhold som ofte brukes i opp ned-omformere N setter effektivt antall nuller i frekvensresponsen til et dekimasjonsfilter, som vist i figur 10a. viktig karakteristisk for en CIC-decimator er at formen på filterresponset endres svært lite, som vist i figur 10b, som en funksjon av dekimasjonsforholdet For verdier av R større enn omtrent 16 er forandringen i filterformen ubetydelig Dette tillater det samme kompensasjons-FIR-filteret som skal brukes for variabel-desimasjonsforholdssystemer. CIC-filteret lider av registeroverløp på grunn av enhetsresponsen ved hvert integratortrinn. Overløpet er uansett ce så lenge følgende to betingelser er oppfylt. rekkevidden til talesystemet er større enn eller lik den maksimale verdien som forventes ved utgangen, og filteret er implementert med to s komplement-ikke-regnende aritmetikk. Fordi en 1-orders CIC filteret har en forsterkning på D NR ved 0 Hz DC, M cascaded CIC-desimasjonsfiltre har en nettovinst på NR M Hver ekstra integrator må legge til en annen NR bits bredde for trinn. Interpolerende CIC-filtre har nuller satt mellom inngangsprøver som reduserer forsterkningen med en faktor av 1 R for å ta hensyn til de nullverdierte prøvene, så nettovinsten til et interpolerende CIC-filter er NR MR Fordi filteret må bruke heltall aritmetisk, må ordet bredder i hvert trinn i filteret være stort nok til å imøtekomme maksimalt signal fullt - skala inngangstider gevinsten på det stadiet. Selv om gevinsten til et Mth-order CIC-desimasjonsfilter er NR M, kan individuelle integratorer oppleve overløp. Deres gevinst er uendelig ved likestrøm. Som sådan er bruken av to komplement-aritmetiske løser denne overløpssituasjonen bare så lenge integratorordbredden har plass til maksimal forskjell mellom noen to påfølgende prøver med andre ord, betyr forskjellen ikke mer enn et enkelt overløp. Med de to komplementære binære formatene med sin modulære omviklingsegenskap, Følgende kamfilter vil korrekt beregne den riktige forskjellen mellom to suksessive integratorutgangsprøver. For interpolering er veksten i ordstørrelse en bit per kamfilterstrinn, og overløp må unngås for at integratorene skal akkumulere riktig. Så må vi imøtekomme en ekstra bit av dataordvekst i hvert kam-trinn for interpolering Det er litt liten fleksibilitet ved å kaste bort noen av de minst signifikante bitene LSBer i stadiene av et CIC-filter, på bekostning av ekstra støy ved filterets utgang. De spesifikke effektene av Denne LSB-fjerningen er imidlertid et komplisert problem du kan lære mer om problemet ved å lese Hogenauer s papir 1. Mens det foregående diskuteres ion-fokusert på hardkablede CIC-filtre, kan disse filtene også implementeres med programmerbare fastpunkts-DSP-brikker. Selv om disse brikkene har ubøyelige dataveier og ordbredder, kan CIC-filtrering være fordelaktig for høye endringer i samplingsfrekvensen. Store ordbredder kan innkvarteres med multiword tillegg på bekostning av ekstra instruksjoner Likevel, for store samlefrekvensendringsfaktorer, kan beregningsbelastningen per utgangssprøve i fastpunkts-DSP-sjetonger være småpensjonsfiltre. I typiske dekimasjonsinterpoleringsfiltreringsapplikasjoner vil vi ha rimelig flatpassbånd og smal Overgangsregionens filteregenskaper Disse ønskelige egenskapene er ikke gitt av CIC-filtre alene, med deres hengende passbåndsgevinster og brede overgangsregioner. Vi lindrer dette problemet, for eksempel ved dekimering ved å følge CIC-filteret med et kompensasjons-ikke-oppførbart FIR-filter, som i figur 1a, for å begrense utgangsbåndbredden og flate passbåndsgevinsten. Figur 11 Kompensasjon FIR-filter svar med et 1-ords decimering-CIC-filter med en tredje rekkefølge-dekimering Se bildet i full størrelse. Kompensasjon FIR-filterets frekvensstørrelsesrespons er ideelt en omvendt versjon av CIC-filterpasningsresponsen som ligner den som vises med den stiplede kurven i figur 11a for et enkelt tre-trykks-FIR-filter hvis koeffisientene er -1 16, 9 8, -1 16 Med den stiplede kurven som representerer den ukompenserte passbåndsløpet av et 1-ordens R 8 CIC-filter, representerer den faste kurven den kompenserte responsen til kaskadefiltre Hvis enten passbåndsbåndbredden eller CIC-filterordren øker, blir korreksjonen større, noe som krever mer kompensasjon. FIR-filterkraner Et eksempel på denne situasjonen er vist i figur 11b hvor den stiplede kurven representerer passbåndsløpet av et tredje-ordent R 8 CIC filter og den stiplede kurven, som tar form av x sin x 3, er svaret på et 15-trykks kompensasjon-FIR-filter som har koeffisientene -1, 4, -16, 32, -64, 136, -352, 1312, -352 , 136, -64, 32, -16, 4, -1. En bredbåndskorrigering betyr også signaler nær s, ut 2 er dempet med CIC-filteret og må deretter forsterkes i korrektjonsfilteret, og legger til lyd. Som sådan begrenser utøvere ofte passordbredden til kompensasjons-FIR-filteret til omtrent 1 4 frekvensen av det første nullet i CIC-filterresponsen. Disse stiplede kurvene i figur 11 representerer frekvensstørrelsesresponsene av kompenserende FIR-filtre der det ikke forekommer noen prøvefrekvensendring. FIR-filtre inngangs - og utgangsprøvehastigheter er lik s , ut utgangshastighet av det dekimerende CIC-filteret Hvis et kompenserende FIR-filter ble konstruert for å gi en ytterligere dekimering med to, ville dens frekvensstørrelsesrespons ligner den i figur 12, hvor s er kompensasjonsfilterets innmatingsfrekvens. Figur 12 Frekvensstørrelsesrespons av en Decimate-by-2-kompensasjon FIR-filter Se fullstørrelsesbilde. Avansert teknikker Her er bunnlinjen i CIC-filter-diskusjonen et decimerende CIC-filter er bare en svært effektiv rekursiv implementering av et bevegelig gjennomsnittsfilter med NR-kraner, hvis utgang er decimert av R. Likeledes er det interpolerende CIC-filteret innføring av R-1-nullprøver mellom hver inngangsprøve etterfulgt av en NR - gjennomsnittlig filter som kjører ved utgangsprøvehastigheten s, ut Kaskadimplementeringene i figur 1 resulterer i total beregningsarbeidbelastning langt mindre enn ved bruk av et enkelt FIR-filter alene for høy prøve-rate-endringsdeimering og interpolering CIC-filterstrukturer er utformet for å maksimere mengden av lavprosessbehandling for å redusere strømforbruket i høyhastighets maskinvareapplikasjoner CIC-filtre krever ingen multiplikasjon, deres aritmetikk er strengt tillegg og subtraksjon. Deres ytelse gjør det mulig å anføre at CIC-filtre teknisk sett er tynne, gjennomsnittlig filtrering machines. In closing, er det måter å bygge ikke-gjenoppbyggende CIC filtre som lette voksenproblemet med ordbredde av de tradisjonelle rekursive CIC filtre De avanserte CIC-filterarkitekturene er omtalt i boken Forstå digital signalbehandling, 2E 2. Richard Lyons er en konsulentsystemer ingeniør og foreleser med Besser Associates i Mountain View, Ca Han er forfatteren av Forståelse av digital signalbehandling 2 E og en tilknyttet editor for IEEE Signal Processing Magazine hvor han opprettet og redigert DSP Tips Tricks-kolonnen Du kan nå ham hos Hogenauer, Eugene En økonomisk klasse av digitale filtre for dekimering og interpolering, IEEE-transaksjoner på akustikk, tale og signalbehandling Vol ASSP-29, pp. 155-162, april 1981.Lyons, Richard, Understanding Digital Signal Processing, 2. Ed Prentice Hall, Upper Saddle River, New Jersey, 2004, s. 556-561. Konto Deaktivert. E-post Verification Required. Alminnelig. Takk for registrering . Opprett nytt passord. Opprett nytt passord. Sign inn for å fullføre konto Merge. Resend Verification Email. Verification Email Sent. Email Verified. Change Password. Password Changed. Create N ew Password. Create Nytt Password. Understanding cascaded integrator-comb filters. Save to My Library Følg Comments. Richard LyonsMarch 31, 2005. Den tidligere uklar CIC filteret er nå viktig for mange høyvolum trådløse kommunikasjonsoppgaver og utstyr. Ved hjelp av CIC-filtre kan kuttes kostnader, forbedring av pålitelighet og hjelpeprestasjon. Here sa primer for å komme i gang. Cascaded integrator-comb CIC digitale filtre er computationally effektive implementeringer av narrowband lowpass filtre og er ofte integrert i hardware implementeringer av decimering og interpolering i moderne kommunikasjonssystemer. CIC filtre ble introdusert til signalbehandlingssamfunnet, av Eugene Hogenauer, for mer enn to tiår siden, men deres anvendelsesmuligheter har vokst de siste årene. 1 Forbedringer i chipteknologi, økt bruk av polyphase-filtreringsteknikker, fremskritt i delta-sigma-konverterings-implementeringer og betydelig vekst i trådløs kommunikasjon har alle spurt mye interesse i n CIC-filtre. Selv om oppførselen og implementeringen av disse filtrene ikke er komplisert, har dekningene deres vært knappe i litteraturen til innebygde systemer. Denne artikkelen forsøker å forsterke litteraturen for innebygde systemingeniører. Etter å ha beskrevet noen få søknader om CIC-filtre, har jeg ll introdusere sin struktur og oppførsel, presentere frekvensdomenet ytelse av CIC filtre, og diskutere flere viktige praktiske problemer ved å bygge disse filtre. CIC filter applikasjoner CIC filtre er velegnet for antialiasing filtrering før decimering sampling rate reduksjon, som vist i figur 1a og for anti-imaging filtrering for interpolerte signaler samplingsøkning økning som i figur 1b Begge applikasjoner er assosiert med meget høy datahastighetsfiltrering, slik som maskinvarekvadraturmodulasjon og demodulering i moderne trådløse systemer og delta-sigma AD og DA-omformere. Figurer 1 CIC-filterapplikasjoner. Klikk på bildet for å forstørre. Fordi deres frekvensstørrelse-respon se konvolutter er synd xx-lignende, CIC-filtre blir typisk enten fulgt av eller på forhånd med høyere ytelse lineærfase lowpass-tappede forsinkelseslinje-FIR-filtre hvis oppgaver skal kompensere for CIC-filterets ikke-flate passbånd. Denne kaskadfilterarkitekturen har verdifulle fordeler For eksempel med decimering kan du i stor grad redusere beregningsmessig kompleksitet av narrowband lowpass-filtrering sammenlignet med dersom du brukte et enkelt lavpass-finitivt impulsrespons FIR-filter I tillegg opererer FIR-filteret som følger med redusert klokkefrekvens som minimerer strømforbruket i høyhastighets maskinvareapplikasjoner. En avgjørende bonus ved bruk av CIC-filtre, og en egenskap som gjør dem populære i maskinvareenheter, er at de ikke trenger noen formidling. Den aritmetikken som trengs for å implementere disse digitale filtrene, er strengt tillegg og subtraksjoner. Bare med det sagt, la det være s se hvordan CIC-filtre virker. Rekursive løpende-filter-filter-CIC-filtre stammer fra ideen om et rekursivt løpende fil ter som i seg selv er en effektiv form for en ikke-gjenoppbyggende flytteverdi. Tilbakekall standard D-punkt-bevegelsesmiddelprosessen i figur 2a Der ser vi at D -1-summeringer pluss en multipliseres med 1 D, er nødvendige for å beregne gjennomsnittsverdien y n. D-punkt-flytende gjennomsnittlig filter s-utgang i tid er uttrykt som. where n er vår tidsdomener-indeks. Z-domeneuttrykket for denne bevegelige averageren er mens dets z-domene H z-overføringsfunksjon er. Jeg gir disse ligningene ikke for å gjøre ting komplisert, men fordi de er nyttige. Ligning 1 forteller oss hvordan man bygger en bevegelig gjennomsnittlig, og Equation 3 er i form som brukes av kommersiell signalbehandlingsprogramvare for å modellere frekvensdomeneradferansen til den bevegelige middel. Det neste trinnet I vår reise mot forståelse er CIC-filtre å vurdere et tilsvarende form for den bevegelige middelmåleren, det rekursive løpeprisfilteret som er avbildet i figur 2b Der ser vi at den nåværende inntakseksempel xn er lagt til, og den eldste inngangseksempelet xn-D trekkes fra fra forrige utgangsnivå yn -1 Det kalles rekursivt fordi det har tilbakemelding. Hver filterutgangsprøve beholdes og brukes til å beregne neste utgangsverdi. Det rekursive løpende filterets differansekvasjon er. har az-domene H z-overføringsfunksjonen av. Vi bruker den samme H z-variabelen for overføringsfunksjonene til det bevegelige gjennomsnittsfilteret og det rekursive løpeprisfilteret fordi deres overføringsfunksjoner er likte hverandre. Det er sant. Equation 3 er det ikke-gjenopprettede uttrykket og ligning 5 er det rekursive uttrykket for en D-point averager Det matematiske beviset på dette finnes i boken min om digital signalbehandling, men snart vil jeg demonstrere at likeverdighet med et eksempel 2. Her er hvorfor vi bryr oss om rekursive kjøringsfiltre som standard flytteverdi i Figur 2a må utføre D -1 tillegg per utgangsprøve. Det rekursive løpeprisfilteret har den søte fordel at bare ett tillegg og en subtraksjon kreves per utgangsprøve, betraktes s av forsinkelseslengden D Denne beregningseffektiviteten gjør det rekursive kjøringsfiltret attraktivt i mange applikasjoner som søker støyreduksjon gjennom gjennomsnitt. Deretter skal vi se hvordan et CIC-filter er i seg selv, et rekursivt løpende filter. CIC-filterstrukturer Hvis vi kondenserer forsinkelseslinjepresentasjonen og ignorere 1D-skalingen i figur 2b får vi den klassiske formen av et 1-ords CIC-filter, hvis kaskadestruktur er vist på figur 2c. Den fremmatede delen av CIC-filteret kalles kam-delen, hvis differensial forsinkelse er D, mens tilbakemeldingsseksjonen vanligvis kalles en integrator. Kam-scenen trekker en forsinket inngangseksempel fra gjeldende inngangseksempel, og integratoren er rett og slett en akkumulator. CIC-filterets differanseekvasjon er. og sin z-domeneoverføringsfunksjon er. Figur 3 CIC-filter med tidsdomæne CIC-filter når D 5 Se fullstørrelsesbilde. For å se hvorfor CIC-filteret er av interesse, undersøker vi først sin tidsdomenadferd, for D 5, vist i Figur 3 Hvis en enhet-impuls-sekvens, en enhet-verdsatt prøve etterfulgt av mange nullverdierte prøver, ble påført kam-scenen, er trinnets utgang som vist på figur 3a. Nå tenk, hva ville være utgangen av integrator hvis dens inngang var kam-trinnets impulsrespons Den første positive impuls fra kamfilteret starter integrators s all-ones-utgang, som i figur 3b. Da kommer D-prøver senere, kommer den negative impulsen fra kam-scenen til integratoren til å null alle ytterligere CIC-filterutgangsprøver. Hovedproblemet er at den kombinerte enhet-impulsresponsen til CIC-filteret, som er en rektangulær sekvens, er identisk med enhet-impulsresponsene av et glidende gjennomsnittfilter og det rekursive løpende filter Flytte gjennomsnitt, rekursive løpende filtre og CIC-filtre er nærtstående. De har de samme z-domene pole zero-posisjonene, deres frekvensstørrelsesresponser har identiske figurer, deres fasesponser er identiske, og deres overføringsfunksjoner er bare forskjellige. med en konstant skalafaktor Hvis du forstår tidsdomeneradministrasjonen til en bevegelig gjennomsnittlig, forstår du nå tid-domeneadferdigheten til CIC-filteret i figur 2c. Figur 4 Karakteristikker for et enkelt-trinns CIC-filter når D 5 Vis full Frekvensstørrelsen og lineærfasesponsen til et D 5 CIC-filter er vist i figur 4a hvor frekvensen s er inngangssignal-samplingsfrekvensen i Hz. Vi kan oppnå et uttrykk for CIC-filterets frekvensrespons ved evaluere ekvation 7 s H cic z-overføringsfunksjon på z-plans sirkelsirkel, ved å sette Zej 2 gir. Bruk Eulers identitet 2 j sin ej - ikke vi kan skrive. Hvis vi ignorerer fasefaktoren i ligning 9, er forholdet of sin terms can be approximated by a sin xx function This means the CIC filter s frequency magnitude response is approximately equal to a sin xx function centered at 0Hz as we see in Figure 4a This is why CIC filters are sometimes called sinc filters. Digital - filter designers like to see z - pla ne pole zero plots, so we provide the z - plane characteristics of a D 5 CIC filter in Figure 4c, where the comb filter produces D zeros, equally spaced around the unit-circle, and the integrator produces a single pole canceling the zero at z 1 Each of the comb s zeros, being a D th root of 1, are located at z m e j 2 m D where m 0, 1, 2 D -1, corresponding to a magnitude null in Figure 4a. The normally risky situation of having a filter pole directly on the unit circle need not trouble us here because there is no coefficient quantization error in our H cic z transfer function CIC filter coefficients are ones and can be represented with perfect precision with fixed-point number formats Although recursive, happily CIC filters are guaranteed stable, linear-phase shown in Figure 4b, and have finite-length impulse responses At 0Hz DC the gain of a CIC filter is equal to the comb filter delay D This fact, whose derivation is available, will be important to us when we actually implement a CIC filter in hardware 2.Figure 5 Single-stage CIC filters used in decimation and interpolation View full-sized image. Again, CIC filters are primarily used for antialiasing filtering prior to decimation and for anti-imaging filtering for interpolated signals With those notions in mind we swap the order of Figure 2c s comb and integrator we re permitted to do so because those operations are linear and include decimation by a sample rate change factor R in Figure 5a You may wish to prove that the unit-impulse response of the integrator comb combination, prior to the sample rate change, in Figure 5a is equal to that in Figure 3c In most CIC filter applications the rate change R is equal to the comb s differential delay D but we ll keep them as separate design parameters for now. Figure 6 Magnitude response of a 1st-order, D 8, decimating CIC filter before decimation aliasiing after R 8 decimation View full-sized image. The decimation operation R means discard all but every R th sample, resulti ng in an output sample rate of s, out s, in R To investigate a CIC filter s frequency-domain behavior in more detail, Figure 6a shows the frequency magnitude response of a D 8 CIC filter prior to decimation The spectral band, of width B centered at 0Hz is the desired passband of the filter A key aspect of CIC filters is the spectral folding that takes place due to decimation. Those B - width shaded spectral bands centered about multiples of s, in R in Figure 6a will alias directly into our desired passband after decimation by R 8 as shown in Figure 6b Notice how the largest aliased spectral component, in this example, is roughly 16dB below the peak of the band of interest Of course the aliased power levels depend on the bandwidth B the smaller B is, the lower the aliased energy after decimation. Figure 7 1st-order, D R 8, interpolating CIC filter spectra input spectrum output spectral images View full-sized image. Figure 5b shows a CIC filter used for interpolation where the R symbol means insert R -1 zeros between each x n sample, yielding a y n output sample rate of s, out R s, in In this CIC filter discussion, interpolation is defined as zeros-insertion followed by filtering Figure 7a shows an arbitrary baseband spectrum, with its spectral replications, of a signal applied to the D R 8 interpolating CIC filter of Figure 5b The filter s output spectrum in Figure 7b shows how imperfect filtering gives rise to the undesired spectral images. After interpolation, unwanted images of the B - width baseband spectrum reside at the null centers, located at integer multiples of s, out R If we follow the CIC filter with a traditional lowpass tapped delay-line FIR filter, whose stopband includes the first image band, fairly high image rejection can be achieved. Figure 8 3rd-order CIC decimation filter structure, and magnitude response before decimation when D R 8 View full-sized image. Improving CIC attenuation The most common method to improve CIC filter anti-aliasing and ima ge-reject attenuation is by increasing the order M of the CIC filter using multiple stages Figure 8 shows the structure and frequency magnitude response of a 3rd-order M 3 CIC decimating filter. Notice the increased attenuation at s, out R in Figure 8b compared with the 1st-order CIC filter in Figure 6a Because the M 3 CIC stages are in cascade, the overall frequency magnitude response will be the product of their individual responses or. The price we pay for improved anti-alias attenuation is additional hardware adders and increased CIC filter passband droop An additional penalty of increased filter order comes from the gain of the filter, which is exponential with the order Because CIC filters generally must work with full precision to remain stable, the number of bits in the adders is M log 2 D , which means a large data word-width penalty for higher order filters Even so, this multistage implementation is common in commercial integrated circuits, where an M th-order CIC filter is of ten called a sinc M filter. Figure 9 Single-stage CIC filter implementations for decimation for interpolation View full-sized image. Building a CIC filter In CIC filters, the comb section can precede, or follow, the integrator section It s sensible, however, to put the comb section on the side of the filter operating at the lower sample rate to reduce the storage requirements in the delay Swapping the comb filters from Figure 5 with the rate-change operations results in the most common implementation of CIC filters, as shown in Figure 9 Notice the decimation filter s comb section now has a delay length differential delay of N D R That s because an N - sample delay after decimation by R is equivalent to a D - sample delay before decimation by R Likewise for the interpolation filter an N - sample delay before interpolation by R is equivalent to a D - sample delay after interpolation by R. Those Figure 9 configurations yield two major benefits first, the comb section s new differential delay is decreased to N D R reducing data storage requirements second, the comb section now operates at a reduced clock rate Both of these effects reduce hardware power consumption. Figure 10 CIC decimation filter responses for various values of differential delay N when R 8 for two decimation factors when N 2 View full-sized image. The comb section s differential delay design parameter N is typically 1 or 2 for high sample-rate ratios as is often used in up down-converters N effectively sets the number of nulls in the frequency response of a decimation filter, as shown in Figure 10a. An important characteristic of a CIC decimator is that the shape of the filter response changes very little, as shown in Figure 10b, as a function of the decimation ratio For values of R larger than roughly 16, the change in the filter shape is negligible This allows the same compensation FIR filter to be used for variable-decimation ratio systems. The CIC filter suffers from register overflow because of the unity fee dback at each integrator stage The overflow is of no consequence as long as the following two conditions are met. the range of the number system is greater than or equal to the maximum value expected at the output, and. the filter is implemented with two s complement nonsaturating arithmetic. Because a 1st-order CIC filter has a gain of D NR at 0Hz DC , M cascaded CIC decimation filters have a net gain of NR M Each additional integrator must add another NR bits width for stages Interpolating CIC filters have zeros inserted between input samples reducing its gain by a factor of 1 R to account for the zero-valued samples, so the net gain of an interpolating CIC filter is NR M R Because the filter must use integer arithmetic, the word widths at each stage in the filter must be wide enough to accommodate the maximum signal full-scale input times the gain at that stage. Although the gain of an Mth-order CIC decimation filter is NR M individual integrators can experience overflow Their gain is i nfinite at DC As such, the use of two s complement arithmetic resolves this overflow situation just so long as the integrator word width accommodates the maximum difference between any two successive samples in other words, the difference causes no more than a single overflow Using the two s complement binary format, with its modular wrap-around property, the follow-on comb filter will properly compute the correct difference between two successive integrator output samples. For interpolation, the growth in word size is one bit per comb filter stage and overflow must be avoided for the integrators to accumulate properly So, we must accommodate an extra bit of data word growth in each comb stage for interpolation There is some small flexibility in discarding some of the least significant bits LSBs within the stages of a CIC filter, at the expense of added noise at the filter s output The specific effects of this LSB removal are, however, a complicated issue you can learn more about the is sue by reading Hogenauer s paper 1.While the preceding discussion focused on hard-wired CIC filters, these filters can also be implemented with programmable fixed-point DSP chips Although those chips have inflexible data paths and word widths, CIC filtering can be advantageous for high sample-rate changes Large word widths can be accommodated with multiword additions at the expense of extra instructions Even so, for large sample-rate change factors the computational workload per output sample, in fixed-point DSP chips, may be smallpensation filters In typical decimation interpolation filtering applications we want reasonably flat passband and narrow transition-region filter performance These desirable properties are not provided by CIC filters alone, with their drooping passband gains and wide transition regions We alleviate this problem, in decimation for example, by following the CIC filter with a compensation nonrecursive FIR filter, as in Figure 1a, to narrow the output bandwidth a nd flatten the passband gain. Figure 11 Compensation FIR filter responses with a 1st-order decimation CIC filter with a 3rd-order decimation View full-sized image. The compensation FIR filter s frequency magnitude response is ideally an inverted version of the CIC filter passband response similar to that shown by the dashed curve in Figure 11a for a simple three-tap FIR filter whose coefficients are -1 16, 9 8, -1 16 With the dotted curve representing the uncompensated passband droop of a 1st-order R 8 CIC filter, the solid curve represents the compensated response of the cascaded filters If either the passband bandwidth or CIC filter order increases the correction becomes greater, requiring more compensation FIR filter taps An example of this situation is shown in Figure 11b where the dotted curve represents the passband droop of a 3rd-order R 8 CIC filter and the dashed curve, taking the form of x sin x 3, is the response of a 15-tap compensation FIR filter having the coefficients -1, 4, -16, 32, -64, 136, -352, 1312, -352, 136, -64, 32, -16, 4, -1.A wideband correction also means signals near s, out 2 are attenuated with the CIC filter and then must be amplified in the correction filter, adding noise As such, practitioners often limit the passband width of the compensation FIR filter to roughly 1 4 the frequency of the first null in the CIC-filter response. Those dashed curves in Figure 11 represent the frequency magnitude responses of compensating FIR filters within which no sample-rate change takes place The FIR filters input and output sample rates are equal to the s, out output rate of the decimating CIC filter If a compensating FIR filter were designed to provide an additional decimation by two, its frequency magnitude response would look similar to that in Figure 12, where s, in is the compensation filter s input sample rate. Figure 12 Frequency magnitude response of a decimate-by-2 compensation FIR filter View full-sized image. Advanced techniques Here s the bottom line of our CIC-filter discussion a decimating CIC filter is merely a very efficient recursive implementation of a moving-average filter, with NR taps, whose output is decimated by R Likewise, the interpolating CIC filter is insertion of R -1 zero samples between each input sample followed by an NR - tap moving-average filter running at the output sample rate s, out The cascade implementations in Figure 1 result in total computational workloads far less than using a single FIR filter alone for high sample-rate-change decimation and interpolation CIC filter structures are designed to maximize the amount of low-sample-rate processing to minimize power consumption in high-speed hardware applications Again, CIC filters require no multiplication their arithmetic is strictly addition and subtraction Their performance allows us to state that, technically speaking, CIC filters are lean, mean filtering machines. In closing, there are ways to build nonrecursive CIC filters that ease the wo rd-width growth problem of the traditional recursive CIC filters Those advanced CIC filter architectures are discussed in my book Understanding Digital Signal Processing, 2E 2.Richard Lyons is a consulting systems engineer and lecturer with Besser Associates in Mountain View, Ca He is the author of Understanding Digital Signal Processing 2 E and an associate editor for the IEEE Signal Processing Magazine where he created and edits the DSP Tips Tricks column You can reach him at. Hogenauer, Eugene An Economical Class of Digital Filters For Decimation and Interpolation, IEEE Transactions on Acoustics, Speech and Signal Processing Vol ASSP-29, pp 155-162, April 1981.Lyons, Richard, Understanding Digital Signal Processing, 2nd Ed Prentice Hall, Upper Saddle River, New Jersey, 2004, pp 556-561.
Flytende gjennomsnitt. Dette eksemplet lærer deg hvordan du beregner det bevegelige gjennomsnittet av en tidsserie i Excel. Et glidende gjennomsnitt brukes til å utjevne uregelmessigheter topper og daler for å enkelt gjenkjenne trender. Først, la oss ta en titt på vår tidsserier.2 På Data-fanen klikker du Data Analysis. Note kan ikke finne Data Analysis-knappen Klikk her for å laste Analysis ToolPak-tillegget.3 Velg Flytt gjennomsnitt og klikk OK.4 Klikk i feltet Inngangsområde og velg området B2 M2. 5 Klikk i intervallboksen og skriv inn 6.6 Klikk i feltet Utmatingsområde og velg celle B3.8 Plott en graf av disse verdiene. Planlegging fordi vi angir intervallet til 6, er det bevegelige gjennomsnittet gjennomsnittet for de foregående 5 datapunktene og det nåværende datapunktet Som et resultat, blir tømmer og daler utjevnet Grafen viser en økende trend Excel kan ikke beregne det bevegelige gjennomsnittet for de første 5 datapunktene fordi det ikke er nok tidligere datapunkter.9 Gjenta t...
Comments
Post a Comment