Glidande Medelvärde Cic Filtret


Som andra har nämnt bör du överväga ett IIR-oändligt impulssvarningsfilter i stället för det FIR-finitiva impulsresponsfiltret du använder nu. Det är mer till det, men vid första anblicken implementeras FIR-filter som uttryckliga omvälvningar och IIR-filter med ekvationer. speciellt IIR-filter Jag använder mycket i mikrokontroller är ett enkelspalt lågpassfilter Detta är den digitala motsvarigheten till ett enkelt RC-analogfilter För de flesta applikationer kommer dessa att ha bättre egenskaper än det boxfilter som du använder De flesta användningarna av ett lådfilter Som jag har stött på är en följd av att någon inte uppmärksammar sig i den digitala signalbehandlingsklassen, inte som ett resultat av att de behöver sina speciella egenskaper. Om du bara vill dämpa högfrekvenser som du vet är buller, är ett enkelpoligt lågpassfilter bättre Bästa sättet att implementera en digitalt i en mikrokontroller är vanligtvis. FILT - FILT FF NEW - FILT. FILT är en bit av beständig stat Detta är den enda bestående va Riable du behöver beräkna detta filter NEW är det nya värdet som filtret uppdateras med denna iteration FF är filterfraktionen som justerar filterets tyngd. Se på denna algoritm och se till att för FF 0 är filtret oändligt tungt eftersom Utgången ändras aldrig För FF 1 är det verkligen inget filter alls eftersom utmatningen följer bara ingången. På små system väljer du FF att vara 1 2 N så att multipliceringen med FF kan utföras som ett rätt skift av N-bitar Exempelvis kan FF vara 1 16 och multiplicera med FF därför en rättväxling på 4 bitar. Annars behöver detta filter endast en subtrahera och en tillägg, även om siffrorna vanligtvis behöver vara bredare än ingångsvärdet mer på numerisk precision i en separat sektion nedan. Jag brukar ta AD-avläsningar betydligt snabbare än de behövs och tillämpa två av dessa filter kaskad. Detta är den digitala motsvarigheten till två RC-filter i serie och dämpas med 12 dB oktav över rollen frekvens Men för AD-avläsningar är det vanligtvis mer relevant att titta på filtret i tidsdomänen genom att överväga sitt stegsvar. Detta berättar hur snabbt ditt system kommer att se en förändring när den sak du mäter förändringar. För att underlätta utformningen av dessa filter som Bara betyder att du väljer FF och bestämmer hur många av dem som ska kaskad använder jag mitt program FILTBITS Du anger antalet skiftbitar för varje FF i den kaskadade serien av filter, och det beräknar stegsvaret och andra värden. I själva verket kör jag vanligtvis detta via My wrapper script PLOTFILT Detta kör FILTBITS, vilket gör en CSV-fil, sedan plottar CSV-filen Till exempel här är resultatet av PLOTFILT 4 4.De två parametrarna till PLOTFILT betyder att det kommer att finnas två filter kaskad av den ovan beskrivna typen Värdena Av 4 anger antalet skiftbitar för att inse multipliceringen med FF De två FF-värdena är därför 1 16 i det här fallet. Det röda spåret är enhetens stegsvar och är den viktigaste att titta på. Säger du att om ingången ändras omedelbart kommer utmatningen av det kombinerade filtret att lösa sig till 90 av det nya värdet i 60 iterationer Om du bryr dig om 95 avvecklingstid måste du vänta på 73 iterationer och för 50 avvecklingstid bara 26 iterationer . Det gröna spåret visar utmatningen från en enda full amplitudspik Detta ger dig en uppfattning om slumpmässigt brusundertryck Det verkar som om inget enda prov kommer att orsaka mer än en 2 5 förändring i utgången. Det blå spåret är att ge en subjektiv Känslan av vad det här filtret gör med vitt brus Detta är inte ett strikt test eftersom det inte finns någon garanti för vad exakt innehållet i slumpmässiga siffror valts som den vita brusinmatningen för denna körning av PLOTFILT Det är bara för att ge dig en grov känsla av hur mycket det blir squashed och hur smidigt det är. PLOTFILT, kanske FILTBITS, och många andra användbara saker, speciellt för PIC-firmwareutveckling finns i programvarulicens för PIC Development Tools på min nedladdningar av programvaran. Dedikerad om numerisk precision. I ser från kommentarerna och nu ett nytt svar att det finns intresse att diskutera antalet bitar som behövs för att implementera detta filter Observera att multiplikationen med FF kommer att skapa logg 2 FF nya bitar under binärpunkten På små system , Är FF vanligen vald att vara 1 2 N så att denna multiplicering faktiskt realiseras av en rättväxling av N bitar. FILT är därför vanligtvis ett fastpunkts heltal Observera att detta inte ändrar någon av matematiken från processorns synvinkel Om du till exempel filtrerar 10 bitars AD-avläsningar och N 4 FF 1 16 behöver du 4 fraktionsbitar under 10 bitars heltal AD-läsningar. En av de flesta processorer gör att du gör 16 bitars heltalstransaktioner på grund av 10-bitars AD-avläsningar I det här fallet kan du fortfarande göra exakt samma 16 bitars integeroperationer, men börja med AD-avläsningarna vänster förskjutna med 4 bitar. Processorn känner inte till skillnaden och behöver inte. Att göra matte på hela 16 bitars heltal fungerar om du anser att de är 12 4 fast punkt eller sant 16 bitars heltal 16 0 fixpunkt. I allmänhet behöver du lägga till N bitar varje filterpole om du inte vill lägga till ljud på grund av den numeriska representationen. I exemplet ovan skulle det andra filtret av två ha att ha 10 4 4 18 bitar för att inte förlora information I praktiken på en 8-bitars maskin betyder det att du använder 24 bitars värden. Tekniskt sett behöver bara den andra polen av det bredare värdet, men för enkelhetsgraden för fasta enheter brukar jag använda samma representation, och därmed samma kod för alla poler i ett filter. Normalt skriver jag en subrutin eller ett makro för att utföra en filterpoleoperation och applicera sedan den på varje pol Om en subrutin eller ett makro beror på huruvida cykler eller programminne är viktigare i det Speciellt projekt Hur som helst använder jag en del repetillstånd för att skicka NEW till subrutinen makro, som uppdaterar FILT, men laddar också in i samma skrapstat NYHET var i Detta gör det enkelt att tillämpa flera poler eftersom den uppdaterade FILT-en av en pol är NE W av den nästa När en subrutin är det användbar att peka på FILT på vägen in, som uppdateras till strax efter FILT på vägen ut. Således fungerar subrutinen automatiskt på efterföljande filter i minnet om det kallas flera gånger Med ett makro behöver du inte en pekare eftersom du skickar in adressen för att fungera på varje iteration. Code Examples. Here är ett exempel på ett makro som beskrivits ovan för en PIC 18. Och här är ett liknande makro för en PIC 24 eller DsPIC 30 eller 33.Both dessa exempel implementeras som makron med min PIC assembler preprocessor som är mer kapabel än någon av de inbyggda makro anläggningarna. clabacchio Ett annat problem som jag borde ha nämnt är implementering av fast programvara. Du kan skriva en enkelpolig lågpassfilter subrutin en gång och sedan applicera den flera gånger. Faktum är att jag vanligtvis skriver en sådan subrutin för att peka i minnet till filtertillståndet, sedan ha det förskott Pekaren så att den kan kallas i följd lätt för att realisera flera poliga filter Olin Lathrop Apr 20 12 på 15 03.1 Tack så mycket för dina svar - alla bestämde jag för att använda det här IIR-filtret, men det här filtret används inte som ett Standard LowPass-filter eftersom jag behöver genomsnittliga räknevärden och jämför dem för att upptäcka ändringar i en viss räckvidd eftersom de här värdena har mycket olika dimensioner beroende på maskinvara jag ville ta ett genomsnitt för att kunna reagera på dessa hårdvaror specifika ändringar automatiskt senselen 21 maj 12 på 12 06. Om du kan leva med begränsningen av en kraft av två antal objekt i genomsnitt dvs 2,4,8,16,32 etc så kan delningen enkelt och effektivt ske på en Lågpresterande mikro med ingen dedikerad delning eftersom det kan ske som en bitskift. Varje växlingsrätt är en kraft av två. OP-enheten trodde att han hade två problem, delade i en PIC16 och minne för hans ringbuffert. Detta svar visar att delningen Det är inte svårt Visserligen behandlar det inte minnesproblemet, men SE-systemet tillåter partiella svar, och användarna kan ta något från varje svar för sig själva, eller till och med redigera och kombinera andra svar. Eftersom några av de andra svaren kräver en delning, är likaledes ofullständiga eftersom de inte visar hur man effektivt kan uppnå detta på en PIC16 Martin 20 april 12 på 13 01. Det finns ett svar på ett riktigt glidande medelfilter aka boxcar filter med mindre minne krav, om du inte har något att tänka på. Kallas ett kaskadintegrator-comb filter CIC Tanken är att du har en integrator som du tar skillnader över en tidsperiod, och den viktigaste minnesbesparande enheten är att genom downsampling behöver du inte lagra eve Ry-värdet på integratorn Det kan implementeras med följande pseudokod. Din effektiva glidande medellängd är decimationFactor stateize men du behöver bara behålla statusprover självklart. Du kan självklart få bättre prestanda om din stateize och decimationFactor är krafter på 2, så att divisions - och återstående operatörer ersättas av skift och mask-ands. Postscript Jag håller med Olin om att du alltid bör överväga enkla IIR-filter före ett glidande medelfilter Om du inte behöver frekvens-nollarna hos ett boxcarfilter, en 1-polig Eller 2-poligt lågpassfilter kommer antagligen att fungera bra. Om du filtrerar i syfte att decimera med en högprovsränta inmatning och med medelvärdet för användning med en lågprocess, då ett CIC-filter Kan vara precis vad du letar efter speciellt om du kan använda stateize 1 och undvika ringbufferten helt och hållet med bara ett enda tidigare integratorvärde. Det finns en djupgående analys av matematiken bakom användandet av de första orden er IIR-filter som Olin Lathrop redan har beskrivit på Digital Signal Processing-stackutbytet innehåller massor av vackra bilder Ekvationen för detta IIR-filter är. Detta kan implementeras med hjälp av heltalserier och ingen delning med följande kod kan behöva lite felsökning som jag Skrivte från minnet. Detta filter approximerar ett glidande medelvärde av de sista K-proven genom att ställa in värdet av alfa till 1 K Gör det här i föregående kod genom att definiera BITS till LOG2 K, dvs för K 16 set BITS till 4, för K 4 sätta BITS till 2 osv. Jag ska verifiera koden som anges här så snart jag får en ändring och rediger detta svar om det behövs. Svarade 23 juni 12 kl 04 04. Här är ett poligt lågpassfilter glidande medelvärde med Cutoff frekvens CutoffFrequency Mycket enkel, mycket snabb, fungerar bra och nästan inget minne överhead. Notera Alla variabler har räckvidd bortom filterfunktionen, utom det som passerade i newInput. Note Detta är ett enda stegsfilter Flera steg kan kaskadas tillsammans för att öka Skärpa av Filtret Om du använder mer än ett steg måste du justera DecayFactor som relaterar till Cutoff-Frequency för att kompensera. Och självklart allt du behöver är de två linjerna placerade någonstans, de behöver inte egen funktion. Detta filter har en uppstartstid innan det rörliga genomsnittet representerar det för ingångssignalen Om du behöver kringgå den här uppstartstiden kan du bara initiera MovingAverage till det första värdet av newInput istället för 0, och hoppas att den första newInput inte är en outlier. CutoffFrequency SampleRate har ett intervall mellan 0 och 0 5 DecayFactor är ett värde mellan 0 och 1, vanligen nära 1.Single-precision floats är tillräckligt bra för de flesta saker, jag föredrar bara dubbelar. Om du behöver hålla fast med heltal kan du konvertera DecayFactor och Amplitude Factor till fraktionella heltal, där täljaren lagras som heltalet och nämnaren är ett heltalseffekt på 2 så att du kan bitskiftas till höger som nämnaren i stället för att dela upp under filterslingan För Exempel om DecayFactor 0 99, och du vill använda heltal, kan du ställa DecayFactor 0 99 65536 64881 och sedan när du multiplicerar med DecayFactor i din filterslinga, skiftar du bara resultatet 16. För mer information om detta, en utmärkt bok som S online, kapitel 19 om rekursiva filter. PS För det Moving Average-paradigmet, kan ett annat sätt att ställa in DecayFactor och AmplitudeFactor som kan vara mer relevant för dina behov, låt oss säga att du vill ha föregående, ca 6 poster i genomsnitt tog Eter, gör det diskret, du lägger till 6 föremål och delas med 6, så du kan ställa in AmplitudeFactor till 1 6 och DecayFactor till 1 0 - AmplitudeFactor. answered 14 maj 12 på 22 55. Alla andra har kommenterat noggrant på verktyget Av IIR vs FIR, och på power-of-two-division Jag vill bara ge några detaljer om genomförandet Nedan fungerar det bra på små mikrokontroller utan FPU Det finns ingen multiplicering, och om du håller N en kraft av två delar hela divisionen Är encyklisk bitskiftning. Baskisk FIR-ringspuffbuffert håller en löpbuffert med de sista N-värdena och ett löpande SUM av alla värden i bufferten Varje gång ett nytt prov kommer in, subtrahera det äldsta värdet i bufferten från SUM , Ersätt det med det nya provet, lägg till det nya provet till SUM och mata ut SUM N. Modified IIR-ringbufferten, fortsätt SUM av de sista N-värdena Varje gång ett nytt prov kommer in, lägg till SUM-SUM N, lägg till det nya Prov och output SUM N. answered 28 aug 13 på 13 45. Om jag läser dig rätt beskriver du en första order IIR filtrera det värde du subtraherar är det t äldsta värdet som faller ut, men istället är det genomsnittet av tidigare värden Första ordningens IIR-filter kan säkert vara användbart men jag är inte säker på vad du menar när du föreslår att utgången är samma för alla periodiska signaler Vid en provkvot på 10 kHz matas en 100 Hz kvadratvåg i ett 20-stegs filter med en signal som stiger jämnt för 20 prover, sitter högt för 30, sjunker jämnt för 20 prover och sitter lågt för 30 En första ordning IIR filter supercat aug 28 13 vid 15 31. kommer att ge en våg som kraftigt börjar stiga och gradvis nivåer nära men inte vid ingångens maximala nivå, börjar sedan kraftigt falla och gradvis nivåer av nära men inte vid ingången minimum Mycket annorlunda beteende supercat Aug 28 13 på 15 32. Ett problem är att ett enkelt glidande medel kan eller inte kan vara användbart Med ett IIR-filter kan du få ett fint filter med relativt få beräkningar. Den FIR du beskriver kan bara ge dig en rektangel i tid - en sync i Freq - och du kan inte hantera sidloberna Det kan vara väl värt att kasta in ett fåtal heltal multipliceras för att göra det till en fin symmetrisk avstämningsbar FIR om du kan spara klockan ticks Scott Seidman Aug 29 13 på 13 50. ScottSeidman Nej behöver multipliceras om man helt enkelt har varje steg i FIR-enheten antingen mata in medelvärdet av inmatningen till det aktuella läget och dess tidigare lagrade värde och lagra sedan inmatningen om man har numeriskt område, man kan använda summan snarare än genomsnittet Oavsett om det S bättre än ett lådfilter beror på applikationen stegresponsen hos ett lådfilter med en total fördröjning på 1ms, till exempel, kommer att ha en otäck d2 dt spik när ingången ändras och igen 1ms senare men kommer att ha det minsta möjliga d dt för ett filter med totalt 1ms fördröjning supercat aug 29 13 på 15 25.As mikeselektronik sagt, om du verkligen behöver minska dina minnesbehov, och du tänker inte på att ditt impulsrespons är en exponentiell istället för en rektangulär puls, jag skulle gå för en exponentiell rörlig ave raser filter Jag använder dem i stor utsträckning Med den typen av filter behöver du inte någon buffert. Du behöver inte lagra N tidigare prover. Bara en Så, dina minneskrav skärs med en faktor N. Även du behöver inte någon division för det Endast multiplikationer Om du har tillgång till flytande punkträkning, använd flytande punktmultiplikationer Annars gör vi multipelantal och ändringar till höger Vi är dock 2012 och jag rekommenderar dig att använda kompilatorer och MCU som tillåter dig För att arbeta med flytande punkter. Förutom att vara mer minneseffektivt och snabbare behöver du inte uppdatera objekt i någon cirkulär buffert. Jag skulle säga att det också är mer naturligt eftersom ett exponentiellt impulsrespons matchar bättre hur naturen beter sig, i de flesta fall. ansvarad 20 april 12 på 9 59. Ett problem med IIR-filtret som nästan berört av olin och supercat men tydligen ignoreras av andra är att avrundningen introducerar en viss oriktighet och eventuellt bias trunkering förutsatt att N i en kraft av två och enbart heltalsräkningar används, växlingen höger eliminerar systematiskt LSB: erna i det nya provet. Det betyder att hur lång serien någonsin kan vara, kommer genomsnittsvärdet aldrig att ta hänsyn till dem. För exempel, anta en långsammare minskande serie 8,8,8 8,7,7,7 7,6,6 och antar att medelvärdet verkligen är 8 i början Fist 7-provet kommer att ge genomsnittet till 7, oavsett filterstyrkan Bara för ett prov Samma berättar för 6 osv. Tänk på motsatsen går serien upp. Medelvärdet kommer att förbli på 7 för alltid tills provet är stort nog för att få det att ändras. Naturligtvis kan du korrigera för bias genom att lägga till 1 2 N 2, men som vann t verkligen lösa precisionsproblemet i så fall kommer den minskande serien att stanna för alltid vid 8 tills provet är 8-1 2 N 2 För N 4 till exempel kommer något prov över noll att hålla medeltalet oförändrat. Jag tror en lösning för Det skulle innebära att man höll en ackumulator av de förlorade LSB: erna men jag gjorde inte det tillräckligt långt för att få kod redo, Och jag är inte säker på att det inte skulle skada IIR-strömmen i några andra fall av serier, till exempel om 7,9,7,9 skulle vara genomsnittliga till 8 då. Olin, din tvåstegs kaskad skulle också behöva någon förklaring. Menar du att du håller två genomsnittsvärden med resultatet av den första matas in i den andra i varje iteration. Vad är nyttan av detta? Utanför kaskad integrerade kamfilter. Med Richard Lyons, Riktlinjer för inbyggda systemprogrammering den 31 mars 2005 14 49 PM. Det tidigare dunkla CIC-filtret är nu avgörande för många trådlösa kommunikationsuppgifter och - utrustning med hög volym. Genom att använda CIC-filter kan du minska kostnaderna, förbättra pålitligheten och hjälpa till med prestanda..Cascaded integratorkammar CIC-digitala filter är beräknings-effektiva implementeringar av smalbandslågfilter och är ofta inbäddade i hårdvaruimplementeringar av decimering och interpolering i moderna kommunikationssystem. CIC-filter introducerades till signalbehandlingssamhället, av Eugene Hogenauer, mer än två decennier sedan, men deras tillämpningsmöjligheter har ökat de senaste åren 1 Förbättringar i chipteknik, ökningen Sed användning av polyfasfiltreringstekniker, framsteg i delta-sigma-konverteringsimplementeringar och den betydande tillväxten i trådlös kommunikation har alla väckt mycket intresse för CIC-filter. Även om beteendet och genomförandet av dessa filter inte är komplicerat har deras täckning varit knapp i litteratur av inbyggda system Denna artikel försöker öka litteraturen för inbyggda systemingenjörer Efter att ha beskrivit några applikationer för CIC-filter ska jag presentera sin struktur och beteende, presentera frekvensdomänprestanda för CIC-filter och diskutera flera viktiga praktiska problem För att bygga dessa filter. CIC-filterapplikationer CIC-filter är väl lämpade för antialiasingfiltrering före decimering av provhastighetsminskning, såsom visas i Figur 1a och för antimikningsfiltrering för interpolerade signaler, ökar provhastighetsökningen som i Figur 1b. Båda applikationerna är associerad med mycket hög datahastighetsfiltrering, såsom hårdvarukvadraturmodulering an d-demodulering i moderna trådlösa system och delta-sigma AD - och DA-omvandlare. Eftersom deras frekvens-magnitude-response-kuvert är sin xx-likadana, följs typiskt CIC-filter antingen av eller föregås av högre prestanda linjärfas lowpass-tapp-fördröjningslinje FIR Filter vars uppgifter ska kompensera för CIC-filtret s icke-platt passband Den kaskadfilterarkitekturen har värdefulla fördelar Till exempel med decimering kan du avsevärt minska den komplexa komplexiteten för narrowband lowpass-filtrering jämfört med om du använde en enda lowpass-finitiv impuls Respons FIR-filter Dessutom fungerar FIR-filtret som följer med reducerade klockfrekvenser, vilket minskar strömförbrukningen i höghastighets hårdvaruapplikationer. En avgörande bonus för att använda CIC-filter och en egenskap som gör dem populära i hårdvaruenheter är det de behöver ingen multiplikation Den aritmetik som behövs för att implementera dessa digitala filter är strikt tillägg och subtraheringar. Med det sagt, låt oss se Hur CIC-filter fungerar. Recursivt löpande filterfilter CIC-filter härstammar från begreppet rekursivt löpande filter som i sig är en effektiv form av en icke-återkommande rörlig medelvärde. Återkalla standard D-punkts rörlig genomsnittsprocess i Figur 2a där vi ser att D -1 summeringar plus en multiplicera med 1 D är nödvändiga för att beräkna medelvärdesutmatningen y n. D-punktets rörliga genomsnittsfilter s-utgång i tid uttrycks som. där n är vårt tidsdomänindex Z-domänuttrycket för denna rörliga medelvärde är medan dess z-domän H z-överföringsfunktion är. Jag ger dessa ekvationer inte att göra saker komplicerade, men eftersom de blir användbara Ekvation 1 berättar hur man bygger en rörlig medelvärde och ekvation 3 är i formen som används av kommersiell signalbehandlingsprogramvara för att modellera frekvensomriktarens beteende hos det rörliga medelvärdet. Nästa steg i vår resa mot förståelse av CIC-filter är att överväga en likvärdig form av den rörliga medelvärdet, det rekursiva löpande filtret avbildar d i Figur 2b Där ser vi att det nuvarande inmatningsprovet xn läggs till och det äldsta inmatningsprovet xn-D subtraheras från föregående utgångsgenomsnitt yn -1 Det kallas rekursivt eftersom det har feedback. Varje filterutmatningsprov behålls och används för att beräkna nästa utmatningsvärde Det rekursiva löpningsfilteret s skillnadsekvation har az-domän H z-överföringsfunktion av. Vi använder samma H z-variabel för överföringsfunktionerna för det rörliga genomsnittliga filtret och det rekursiva löpande summan Filtrera eftersom deras överföringsfunktioner är lika med varandra Det är sant Ekvation 3 är det icke återkommande uttrycket och ekvation 5 är det rekursiva uttrycket för en D-point-medelvärde Det matematiska beviset på detta finns i min bok om digital signalbehandling, men inom kort Jag ska visa att ekvivalens med ett exempel 2. Här är varför vi bryr oss om rekursiva löpningsfiltre, den standardrörande medelvärdena i Figur 2a måste utföra D-1-tillägg per utmatningsprov. Den rekursiva löpningen g-sum filter har den söta fördelen att endast en addition och en subtraktion krävs per utgångsprov oberoende av fördröjningslängden D Denna beräkningseffektivitet gör det rekursiva löpande filtret attraktivt i många applikationer som söker brusreduktion genom medelvärde. Nästa kommer vi att se Hur ett CIC-filter är i sig ett rekursivt löpande filter. CIC-filterstrukturer Om vi ​​kondenserar fördröjningsledningsrepresentationen och ignorerar 1D-skalan i Figur 2b erhåller vi den klassiska formen av ett 1-ordningens CIC-filter, vars kaskad Strukturen visas i figur 2c. Den frammatade delen av CIC-filtret kallas kam-sektionen, vars differentialfördröjning är D medan återkopplingssektionen typiskt kallas en integrator. Kam-scenen subtraherar ett fördröjt ingångsprov från det aktuella ingångsprovet och integratorn Är helt enkelt en ackumulator. CIC-filterets skillnadsekvation är och dess z-domänöverföringsfunktion är. För att se varför CIC-filtret är av intresse, undersöker vi först sin tid Domänbeteende, för D5, som visas i figur 3 Om en enhet-impuls-sekvens, ett enhetligt värderat prov följt av många nollvärderade prover, applicerades på kam-scenen, är det utmatade scenens utgång som visas i figur 3a Tänk nu vad som skulle vara integratorns utgång om dess inmatning var kammapladsens impulsrespons. Den initiala positiva impulsen från kamfiltret startar integratorns all-all-utgång, som i Figur 3b Därefter D-prover senare, den negativa Impuls från comb-scenen anländer till integratorn för att nollställa alla ytterligare CIC-filterutgångsprover. Huvudproblemet är att det kombinerade enhetsimpulssvaret hos CIC-filtret, som är en rektangulär sekvens, är identisk med enhetsimpulssvaren hos en rörelse - filter och det rekursiva löpande filtret Rörande medelvärden, rekursiva löpande filter och CIC-filter är nära släktingar De har samma z-domänpole nollställen, deras frekvensmagnetsvar har identiska former, deras fassvar är identiska, och t Arvöverföringsfunktioner skiljer sig endast åt med en konstant skalfaktor. Om du förstår tidsdomänbeteendet hos en rörlig medelvärderare förstår du nu CIC-filterets tidsdomänbeteende i Figur 2c. Frekvensstyrkan och linjärfasvaret hos en D 5 CIC-filtret visas i figur 4a där frekvensen s är insignalens samplingsfrekvens i Hz. Vi kan få ett uttryck för CIC-filterets frekvenssvar genom att utvärdera ekvation 7 s H cic z-överföringsfunktion på z-planen S enhetscirkel, genom att ställa in zej 2 som ger. Använda Euler s identitet 2 j sin ej - ej vi kan skriva. Om vi ​​ignorerar fasfaktorn i ekvation 9 kan detta förhållande av syndvillkor approximeras med en sin xx-funktion CIC-filterets frekvensstorleksrespons är ungefär lika med en sin xx-funktion som är centrerad vid 0Hz som vi ser i Figur 4a. Därför kallas CIC-filter ibland sinc-filter. Digital-filter-designers tycker om att se zplane pole zero-plots, så vi Ge z-plan charac Termer av ett D 5 CIC-filter i Figur 4c, där kamfiltret producerar D-nollor, lika fördelade kring enhetscirkeln, och integratorn producerar en enda pol, avbryter nollpunkten på z 1 Var och en av kamerns nollor är en D roten till 1, ligger vid zmej 2 m D där m 0, 1, 2 D -1, som motsvarar en magnitud null i Figur 4a. Den normalt riskabla situationen att ha en filterpol direkt på enhetens cirkel behöver inte oroa oss Här för att det inte finns något koefficientkvantiseringsfel i vår H cic z-överföringsfunktion. CIC-filterkoefficienterna är de och kan representeras med perfekt precision med fastpunktsnummerformat. Även om rekursiva, är lyckligtvis CIC-filter garanterade stabila, linjärfas som visas i figur 4b , och har ändlängdsimpulsresponser Vid 0Hz DC är förstärkningen av ett CIC-filter lika med kamfilterfördröjningen D Detta faktum, vars avledning är tillgänglig, kommer att vara viktigt för oss när vi faktiskt implementerar ett CIC-filter i hårdvaran 2.Figur 5 CIC-filter med ett steg S som används i decimering och interpolering Se bild i full storlek. I jämförelse används CIC-filter främst för antialiasingfiltrering före decimering och för antimikrofiltrering för interpolerade signaler. Med dessa begrepp i åtanke byter vi ordningen i Figur 2c s kam och integrator Vi får tillåtas att göra det eftersom dessa operationer är linjära och inkluderar decimering med en samplingsfrekvensförändringsfaktor R i figur 5a. Du kan önska att bevisa att enhetens impulsrespons av integratorkombinationen före förändringshastigheten förändras i figur 5a är lika med i Figur 3c I de flesta CIC-filterapplikationer är kursförändringen R lika med combs-differentialfördröjningen D men vi kommer att behålla dem som separata designparametrar för nu. Figur 6 Magnitudsvar av en 1-ordning, D 8 decimering CIC-filter före decimering aliasiing efter R 8-decimering Se bild i full storlek. Decimeringsoperationen R betyder att alla men alla R: e prov slängs, vilket resulterar i en utmatningsprovhastighet av s, ut s, i R för att investera Figur 6a visar frekvensreaktionssvaret för ett D 8 CIC-filter före decimering. Spektrumbandet med bredden B centrerad vid OHz är det önskade passbandet för filter A-nyckelaspekten av CIC-filter är spektralvikningen som sker på grund av decimering. Dessa B-breddskalade spektralband som centreras om multiplar av s, i R i Figur 6a kommer alias direkt i vårt önskade passband efter decimering med R 8 som visas i figur 6b Den största aliaserade spektralkomponenten, i detta exempel, är ungefär 16 dB under toppen av bandet av intresse. Naturligtvis beror de aliaserade effektnivåerna på bandet bredd B, desto mindre B är, desto lägre aliaserad energi efter decimering. Figur 7 1: a ordning , DR 8, interpolera CIC-filterspektruminmatningsspektrumutgångspektralbilder Se bild i full storlek. Figur 5b visar ett CIC-filter som används för interpolering där R-symbolen betyder insert R -1-nollor mellan varje xn-prov, vilket ger en Yn utgångsprovhastighet s, ut R s, i I denna CIC-filterdiskussion definieras interpolering som nollinsättning följt av filtrering Figur 7a visar ett godtyckligt basbandspektrum med sina spektralreplikationer av en signal som appliceras på DR 8 interpolerande CIC-filtret i Figur 5b Filtrets s-utgångsspektrum i Figur 7b visar hur ofullständig filtrering ger upphov till de oönskade spektralbildningarna. Efter interpolering ligger oönskade bilder av B-breddbasbandspektrumet vid nollcentren, som är belägna vid heltal multiplar av s, Ut R Om vi ​​följer CIC-filtret med ett traditionellt lowpass-tryckt fördröjningslednings-FIR-filter, vars stoppband innehåller det första bildbandet, kan en ganska hög bildavvisning uppnås. Fig. 8 CIC-decimeringsfilterstruktur för tredje ordning och magnitudsvar före decimering när DR 8 Visa bild i full storlek. Förbättring av CIC-dämpning Den vanligaste metoden för att förbättra CIC-filterets anti-aliasing och bildavvisande dämpning är genom att öka ordningen M i CIC Filter med flera steg Figur 8 visar strukturen och frekvensstyrkan hos ett 3-ordning M 3 CIC-decimeringsfilter. Notera den ökade dämpningen vid s, ut R i figur 8b jämfört med 1-ordningens CIC-filter i Figur 6a Eftersom M 3 CIC-steg är i kaskad, det generella svaret på frekvensstyrkan kommer att vara en produkt av deras individuella svar eller. Priset vi betalar för förbättrad anti-aliasdämpning är ytterligare hårdvaruuppgraderingar och ökat CIC-filterpassbandsläckning. Ett ytterligare straff för ökad filterorder kommer från förstärkningen av filtret, vilket är exponentiellt med ordningen Eftersom CIC-filter generellt måste fungera med fullständig precision för att förbli stabil är antalet bitar i addersna M log 2D, vilket innebär en stor dataordbreddsstraff för högre Orderfiltre Än så så är denna flerstegsimplementation vanlig i kommersiella integrerade kretsar, där ett M-ordnings CIC-filter ofta kallas ett sinc M-filter. Figur 9 Enstegs CIC-filter im Ansträngningar för decimering för interpolering Se bild i full storlek. Bygga ett CIC-filter I CIC-filter kan kamdelen gå före eller följa integratorsektionen. Det är emellertid vettigt att placera kamdelen på sidan av filtret som arbetar vid den lägre samplingsfrekvensen för att minska lagringskraven i fördröjningen Byte av kamfiltret från Figur 5 med hastighetsbytesoperationerna resulterar i den vanligaste implementeringen av CIC-filter, såsom visas i Figur 9 Observera att decimationsfiltrets kamavsnitt nu har en Fördröjningslängdskillnadsfördröjning av NDR Det är därför att en N-provfördröjning efter decimering med R är ekvivalent med en D-provfördröjning före decimering av R På samma sätt för interpolationsfiltret är en N-provfördröjning före interpolering av R ekvivalent med en D - Provfördröjning efter interpolering av R. Those Figur 9-konfigurationer ger två stora fördelar först, kamdelen s nya differentialfördröjning sänks till NDR, vilket minskar datalagringskrav andra, Kamdelen arbetar nu med en reducerad klockhastighet Båda dessa effekter minskar hårdförbrukningens strömförbrukning. Figur 10 CIC-decimeringsfiltersvar för olika värden av differentialfördröjning N när R 8 för två decimeringsfaktorer när N 2 Visa bild i full storlek. Kammaren Sektionsskillnadsfördröjningsdesignparametern N är typiskt 1 eller 2 för höga samplingsfrekvensförhållanden som ofta används i uppomvandlare N ställer effektivt antalet nollor i frekvensresponsen hos ett decimeringsfilter, såsom visas i figur 10a. Viktig egenskap hos en CIC-decimator är att formen på filtersvaret förändras väldigt lite, som visas i figur 10b, som en funktion av decimeringsförhållandet. För värden på R som är större än ungefär 16 är förändringen i filterformen försumbar. Detta tillåter Samma kompensations-FIR-filter som ska användas för system med variabelt decimeringsförhållande. CIC-filtret lider av registerflöde på grund av enhetens återkoppling vid varje integrationsstadium. Överflödet är utan konsekvens Ce så länge följande två villkor är uppfyllda. Antalet system är större än eller lika med det maximala värdet som förväntas vid utgången, och filtret implementeras med två s kompletterande omräkningsmedel. Eftersom en första order CIC Filter har en förstärkning av D NR vid 0 Hz DC, M-kaskad CIC-decimeringsfilter har en nettovinst på NR M Varje ytterligare integrator måste lägga till en annan NR-bitbredd för steg. Interpolering av CIC-filter har nollor inmatat mellan ingångsproverna, vilket minskar förstärkningen med en faktor 1 R för att ta hänsyn till de nollvärderade proverna, så nettovärdet för ett interpolerande CIC-filter är NR MR Eftersom filtret måste använda heltal aritmetik måste ordbredderna vid varje steg i filtret vara tillräckligt bred för att rymma maximal signal full - skala ingångstider förstärkningen vid det skedet. Även om vinsten av ett M-ordning CIC-decimeringsfilter är NR M kan enskilda integratörer uppleva överflöde. Förlusten är oändlig vid likström. Såsom användningen av två s komplementräkenskaper löser denna överflödessituation så länge som integratorordbredden rymmer maximal skillnad mellan två två successiva prover, med andra ord innebär skillnaden inte mer än ett enda överflöde. Med hjälp av två komplement binära format med sin modulära omsättningsegenskap, Det efterföljande kamfilteret ska korrekt beräkna den korrekta skillnaden mellan två successiva integratorutgångsprover. För interpolering är tillväxten i ordstorlek en bit per kamfiltersteg och överflödet måste undvikas för att integratorerna ackumuleras ordentligt. Så måste vi rymma en extra bit av datordetillväxten i varje kamsteg för interpolering Det finns en viss liten flexibilitet vid bortkastning av några av de minst signifikanta bitarna LSB i stadierna av ett CIC-filter, på bekostnad av ökat brus vid filtrets s-utgång. De specifika effekterna av Denna LSB-borttagning är emellertid en komplicerad fråga som du kan lära dig mer om problemet genom att läsa Hogenauer s paper 1.While den föregående diskussionen Jon fokuserad på CIC-filter med fast kabel, kan dessa filter också implementeras med programmerbara fastpunkts-DSP-chips. Även om dessa chips har oflexibla databanor och ordbredder kan CIC-filtrering vara fördelaktigt för höga sammanslagningar. Stora ordbredder kan rymma Med flera ordstillägg på bekostnad av extra instruktioner. För stora växelkursförändringsfaktorer kan beräkningsbelastningen per utmatningsprov, i fastpunkts-DSP-chips, emellertid vara småpensationsfilter. I typiska decimeringsinterpolationsfiltreringsapplikationer vill vi ha en relativt platt passband och smal Övergångsregionens filterprestanda Dessa önskvärda egenskaper tillhandahålls inte ens av CIC-filter ensam med sina hängande passbandshöjningar och breda övergångsområden. Vi lindrar detta problem, exempelvis i avkodning genom att följa CIC-filtret med ett kompensations-icke-återkommande FIR-filter, som i Figur 1a, för att begränsa utmatningsbandbredden och platta passbandförstärkningen. Figur 11 Kompensation FIR-filter Svar med ett CIC-filter med 1: a-ordning med en decimering av 3-ordning Visa bild i full storlek. Kompensation FIR-filterets frekvensstyrka är idealiskt en inverterad version av CIC-filterpassbandsvaret som det som visas med den streckade kurvan i Figur 11a för ett enkelt tre-tapps-FIR-filter vars koefficienter är -1 16, 9 8, -1 16 Med den prickade kurvan som representerar den uncompensated passband-droppen av ett 1-ordning R 8 CIC-filter representerar den solida kurvan det kompenserade svaret hos Kaskadfilter Om antingen passbandets bandbredd eller CIC-filterorder ökar blir korrigeringen större och kräver mer kompensation FIR-filterkranar Ett exempel på denna situation visas i figur 11b där den prickade kurvan representerar passbandslåsen på ett 3-ordningers R8 CIC-filter och den streckade kurvan, som tar form av x sin x 3, är svaret på ett 15-taps-kompensations-FIR-filter med koefficienterna -1, 4, -16, 32, -64, 136, -352, 1312, -352 , 136, -64, 32, -16, 4, -1.A bredbandskorrigering betyder även signaler nära s, ut 2 dämpas med CIC-filtret och måste sedan förstärkas i korrigeringsfiltret och lägga till brus. Såsom så begränsar utövarna ofta passbandets bredd på kompensations-FIR-filtret till ungefär 1 4 frekvensen av det första nollpunktet i CIC-filterresponsen. Dessa streckade kurvor i figur 11 representerar frekvensstorlekssvaren för kompenserande FIR-filter, inom vilka ingen förändring av provränta äger rum. FIR-filterens inmatnings - och utgångsprovhastigheter är lika med s , Utmatningshastighet för det decimererande CIC-filtret Om ett kompenserande FIR-filter utformades för att ge en ytterligare decimering med två, skulle dess frekvensstyrka svara liknar det i Figur 12, där s, i är kompensationsfiltrets s-inmatningsprovhastighet. Figur 12 Frekvens magnitud svar av en Decimate-by-2 kompensation FIR filter Visa full storlek image. Advanced tekniker Här är den nedre delen av vår CIC-filter diskussion ett decimating CIC filter är bara en mycket effektiv rekursiv implementering av ett glidande medelfilter med NR-kranar, vars produktion decimeras med R. Likaså är det interpolerande CIC-filtret införande av R-1-nollprover mellan varje ingångsprov följt av en NR - medelfilter som körs vid utgångsprovhastigheten s, ut. Kaskadimplementeringarna i Figur 1 resulterar i total beräknad arbetsbelastning som är långt mindre än att använda ett enda FIR-filter ensam för hög samplingsförändring decimering och interpolering CIC-filterstrukturer är utformade för att maximera mängden av bearbetning med låg samplingshastighet för att minimera strömförbrukningen i höghastighets hårdvaruapplikationer CIC-filter kräver ingen multiplicering. deras aritmetik är strikt tillägg och subtraktion. Resultatet ger oss möjlighet att ange att CIC-filter tekniskt sett är mager, medelfiltrering Machines. In closing, det finns sätt att bygga icke återkommande CIC-filter som underlättar ordbredds tillväxtproblemet hos de traditionella rekursiva CIC-filteren De avancerade CIC-filterarkitekturerna diskuteras i min bok Understanding Digital Signal Processing, 2E 2. Richard Lyons är en konsultsystem ingenjör och föreläsare med Besser Associates i Mountain View, Ca Han är författaren till Förstå Digital Signal Processing 2 E och en associerad redaktör för IEEE Signal Processing Magazine där han skapade och redigerar DSP Tips Tricks-kolumnen Du kan nå honom på. Hogenauer, Eugene En ekonomisk klass av digitala filter för avkodning och interpolering, IEEE-transaktioner inom akustik, tal och signalbehandling Vol ASSP-29, s. 155-162, april 1981. Lycklar, Richard, Förstå digital signalbehandling, 2: a Ed Prentice Hall, Upper Saddle River, New Jersey, 2004, s. 556-561. Konto Deaktiverat. E-postbekräftelse krävs. Senast gjort. Tack för registrering . Skapa nytt lösenord. Skapa nytt lösenord. Sign in för att slutföra kontofusion. 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ölj Comments. Richard LyonsMarch 31, 2005. Det tidigare obskyra CIC-filtret är nu viktigt för många högvolymer för trådlös kommunikation och utrustning. Användning av CIC-filter kan klippa kostnader, förbättra tillförlitligheten och hjälpa till med prestanda Här får du en primer för att komma igång. Katalyserade integratorkammar CIC-digitala filter är beräkningsmässigt effektiva implementeringar av smalbandslågfilter och är ofta inbäddade i hårdvaruimplementeringar av decimering och interpolering i moderna kommunikationssystem. CIC-filter introducerades till Eugene Hogenauer för signalbehandling, för mer än två årtionden sedan, men deras tillämpningsmöjligheter har ökat de senaste åren. 1 Förbättringar av chipteknik, ökad användning av polyphase-filtreringstekniker, framsteg i delta-sigma-konverteringsimplementeringar och Betydande tillväxt i trådlös kommunikation har alla väckt mycket intresse i n CIC-filter. Även om beteendet och genomförandet av dessa filter inte är komplicerat har deras täckning varit knapp i litteraturen av inbyggda system. Denna artikel försöker öka litteraturen för inbyggda systemingenjörer Efter att ha beskrivit några applikationer för CIC-filter, har jag ll presentera sin struktur och beteende, presentera frekvensdomänprestanda för CIC-filter och diskutera flera viktiga praktiska problem vid byggandet av dessa filter. CIC-filterapplikationer CIC-filter är lämpade för antialiasingfiltrering före decimering av provräntesänkning, såsom visas i figur la och för antimikrofiltrering för interpolerade signaler samplingshöjningsökning som i figur 1b. Båda applikationerna är associerade med mycket hög datahastighetsfiltrering, såsom hårdvarukvadraturmodulering och demodulering i moderna trådlösa system och delta-sigma AD och DA converters. Figure 1 CIC filter applications. Click på bilden för att förstora. Eftersom deras frekvens-magnitude-respon se envelopes are sin x x - like, CIC filters are typically either followed or preceded by higher performance linear-phase lowpass tapped-delay-line FIR filters whose tasks are to compensate for the CIC filter s non-flat passband That cascaded-filter architecture has valuable benefits For example, with decimation, you can greatly reduce computational complexity of narrowband lowpass filtering compared with if you d used a single lowpass finite impulse response FIR filter In addition, the follow-on FIR filter operates at reduced clock rates minimizing power consumption in high-speed hardware applications. A crucial bonus in using CIC filters, and a characteristic that makes them popular in hardware devices, is that they require no multiplication The arithmetic needed to implement these digital filters is strictly additions and subtractions only With that said, let s see how CIC filters operate. Recursive running-sum filter CIC filters originate from the notion of a recursive running-sum fil ter which is itself an efficient form of a nonrecursive moving averager Recall the standard D - point moving-average process in Figure 2a There we see that D -1 summations plus one multiply by 1 D are necessary to compute the averager output y n. The D - point moving-average filter s output in time is expressed as. where n is our time-domain index The z - domain expression for this moving averager is. while its z - domain H z transfer function is. I provide these equations not to make things complicated, but because they re useful Equation 1 tells us how to build a moving averager, and Equation 3 is in the form used by commercial signal-processing software to model the frequency-domain behavior of the moving averager. The next step in our journey toward understanding CIC filters is to consider an equivalent form of the moving averager, the recursive running-sum filter depicted in Figure 2b There we see that the current input sample x n is added, and the oldest input sample x n - D is subtracted from the previous output average y n -1 It s called recursive because it has feedback Each filter output sample is retained and used to compute the next output value The recursive running-sum filter s difference equation is. having a z - domain H z transfer function of. We use the same H z variable for the transfer functions of the moving-average filter and the recursive running-sum filter because their transfer functions are equal to each other It s true Equation 3 is the nonrecursive expression and Equation 5 is the recursive expression for a D - point averager The mathematical proof of this can be found in my book on digital signal processing, but shortly I ll demonstrate that equivalency with an example 2.Here s why we care about recursive running-sum filters the standard moving averager in Figure 2a must perform D -1 additions per output sample The recursive running-sum filter has the sweet advantage that only one addition and one subtraction are required per output sample, regardles s of the delay length D This computational efficiency makes the recursive running-sum filter attractive in many applications seeking noise reduction through averaging Next we ll see how a CIC filter is, itself, a recursive running-sum filter. CIC filter structures If we condense the delay-line representation and ignore the 1 D scaling in Figure 2b we obtain the classic form of a 1st-order CIC filter, whose cascade structure is shown in Figure 2c The feedforward portion of the CIC filter is called the comb section, whose differential delay is D while the feedback section is typically called an integrator The comb stage subtracts a delayed input sample from the current input sample, and the integrator is simply an accumulator The CIC filter s difference equation is. and its z - domain transfer function is. Figure 3 Single-stage CIC filter time-domain responses when D 5 View full-sized image. To see why the CIC filter is of interest, first we examine its time-domain behavior, for D 5, shown in Figure 3 If a unit-impulse-sequence, a unity-valued sample followed by many zero-valued samples, was applied to the comb stage, that stage s output is as shown in Figure 3a Now think, what would be the output of the integrator if its input was the comb stage s impulse response The initial positive impulse from the comb filter starts the integrator s all-ones output, as in Figure 3b Then, D samples later, the negative impulse from the comb stage arrives at the integrator to zero all further CIC filter output samples. The key issue is that the combined unit-impulse response of the CIC filter, being a rectangular sequence, is identical to the unit-impulse responses of a moving-average filter and the recursive running-sum filter Moving averagers, recursive running-sum filters, and CIC filters are close kin They have the same z - domain pole zero locations, their frequency magnitude responses have identical shapes, their phase responses are identical, and their transfer functions differ only by a constant scale factor If you understand the time-domain behavior of a moving averager, then you now understand the time-domain behavior of the CIC filter in Figure 2c. Figure 4 Characteristics of a single-stage CIC filter when D 5 View full-sized image. The frequency magnitude and linear-phase response of a D 5 CIC filter is shown in Figure 4a where the frequency s is the input-signal sample rate in Hz. We can obtain an expression for the CIC filter s frequency response by evaluating Equation 7 s H cic z transfer function on the z - plane s unit circle, by setting z e j 2 yielding. Using Euler s identity 2 j sin e j - e j we can write. If we ignore the phase factor in Equation 9, that ratio of sin terms can be approximated by a sin x x function This means the CIC filter s frequency magnitude response is approximately equal to a sin x x 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.

Comments