26.07.2013 Views

Digitale filtre

Digitale filtre

Digitale filtre

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

21. maj 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Synopsis<br />

Sektor for Elektroteknik og<br />

Informationsteknologi<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Ingeniørhøjskolen i København<br />

Lautrupvang 15, 2750 Ballerup<br />

Design og implementering<br />

Gruppe 5, ITD22<br />

DSM2A<br />

I dette projekt designes, implementeres og evalueres digitale <strong>filtre</strong>. Der laves filterdesign både for<br />

højpas, lavpas, samt pasbånds<strong>filtre</strong>. Der beregnes filterkoefficienter for både FIR og IIR <strong>filtre</strong>, for næst<br />

at simulere disse. Der plottes grafer til analyse af simulationerne, og over <strong>filtre</strong>nes karakteristik, samt<br />

forskellen mellem FIR og IIR <strong>filtre</strong>.<br />

Til sidst implementeres to pasbånd FIR <strong>filtre</strong> på et Blackfin evalueringskit, og evalueres med en Gain-<br />

Phase analysator.<br />

Vejledere<br />

Hans Ellegaard, Bent Jørgensen.<br />

Deltager Studienummer Underskrift<br />

Christian Gleerup 4653<br />

Kristjan Petursson 4656<br />

Uni Dahl 4655


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Indholdsfortegnelse<br />

1. INDLEDNING ....................................................................................................................................3<br />

1.1 PROBLEMFORMULERING................................................................................................................3<br />

1.2 TIDSPLAN ......................................................................................................................................3<br />

2. PROBLEMANALYSE.......................................................................................................................4<br />

2.1 PROBLEMSTILLINGEN....................................................................................................................4<br />

2.2 INPUTSIGNAL.................................................................................................................................4<br />

2.3 UDGANGSSIGNALERNE..................................................................................................................5<br />

2.4 EVALUERING AF FILTRE.................................................................................................................6<br />

2.5 ANTAL FILTERKOEFFICIENTER.......................................................................................................6<br />

2.6 SAMPLINGSFREKVENS ...................................................................................................................6<br />

2.7 KONKLUSION.................................................................................................................................7<br />

3. PROJEKTAFGRÆNSNING OG METODER................................................................................8<br />

3.1 AFGRÆNSNING ..............................................................................................................................8<br />

3.2 KRAVSPECIFIKATION.....................................................................................................................8<br />

3.3 TEORIER OG METODER ..................................................................................................................9<br />

3.4 RESSOURCER.................................................................................................................................9<br />

3.5 KONKLUSION...............................................................................................................................10<br />

4. PROBLEMLØSNING .....................................................................................................................11<br />

4.1 DESIGN AF FILTERKRAV ..............................................................................................................11<br />

4.2 VALG AF SAMPLINGSFREKVENS ..................................................................................................13<br />

4.3 BEREGNING AF FILTERKOEFFICIENTER ........................................................................................14<br />

4.4 MATEMATISK SIMULERING AF FIR LØSNING ...............................................................................14<br />

4.5 MATEMATISK SIMULERING AF IIR LØSNING ................................................................................19<br />

4.6 SAMMENLIGNING AF FIR OG IIR LØSNING ..................................................................................31<br />

4.7 SOFTWARE SIMULERING OG IMPLEMENTERING AF FIR LØSNING .................................................32<br />

4.8 FILTER EVALUERING ...................................................................................................................33<br />

4.9 KONKLUSION...............................................................................................................................35<br />

5. KONKLUSION ................................................................................................................................37<br />

5.1 DEN PRODUKTORIENTEREDE DEL ................................................................................................37<br />

5.2 DEN PROCESORIENTEREDE DEL ...................................................................................................37<br />

BILAG 1. PROJEKTOPLÆGGET..................................................................................................39<br />

BILAG 2. ALTERNATIVE FILTERKRAV ...................................................................................46<br />

BILAG 3. SIMULERINGER AF LAV- OG HØJPAS CHEBYSCHEV2 FILTER .....................48<br />

BILAG 4. SIMULERINGSDATA ....................................................................................................50<br />

BILAG 5. KODESTRUKTUR FOR BUFFER OG FOLDNING ..................................................51<br />

BILAG 6. KILDEKODE FOR IMPLEMENTERING ...................................................................52<br />

ITVP4 – Gruppe 5 Side 2 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

1. Indledning<br />

Dete er en obligatorisk kursusopgave i DSM2, der har til formål at give eleverne<br />

overblik over de forskellige faser i brug og implementering af digitale <strong>filtre</strong>. Der<br />

vil blive gennemgået en analyse af problemstillingen, kravspecifikationer for de<br />

<strong>filtre</strong>, der skal implementeres, hvorefter der beregnes filterkoefficienter. Dernæst<br />

analyseres <strong>filtre</strong>ne i forhold til kravspecifikationen. Når <strong>filtre</strong>ne overholder<br />

kravene, vil <strong>filtre</strong>ne blive implementeret på et Blackfin-DSP evaluationkit. Til<br />

sidst testes de implementerede <strong>filtre</strong> med en Gain-phase analysator som viser om<br />

implementering fungerer.<br />

1.1 Problemformulering<br />

Problemformuleringen kan deles op i følgende punkter. For yderligere<br />

beskrivelse af disse problemstillinger, se afsnit 2, Problemanalyse, samt<br />

Projektoplægget på side 39.<br />

- Identificering af filterkrav ud fra kravspecifikationen.<br />

- Valg af samplingsfrekvens.<br />

- Beregning af filterkoefficienter til en FIR og en IIR løsning.<br />

- Implementering af en FIR eller en IIR løsning på et evalueringskit.<br />

- Evaluering af <strong>filtre</strong>ne med en Gain-Phase analysator.<br />

1.2 Tidsplan<br />

Opgaven skal løses på 2 uger. Første uge bruges til specificering af <strong>filtre</strong>nes krav,<br />

beregning af filterkoefficienter, simulationer af diverse <strong>filtre</strong>. Der foretages også<br />

introduktion til det hardware, hvor <strong>filtre</strong>ne skal implementeres. Sidste uge<br />

bruges til implementering på hardwaren og evaluering af <strong>filtre</strong>ne med en Gain-<br />

Phase-analysator. Rapport skrives løbende med arbejdet.<br />

ITVP4 – Gruppe 5 Side 3 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

2. Problemanalyse<br />

I dete afsnit analyseres de emner, som der skal tages hånd om. Disse emner er,<br />

problemstillingen fra opgaveteksten, indgangs- og udgangssignalet, antal<br />

filterkoefficienter, samplingsfrekvensen samt evaluering af <strong>filtre</strong>ne på et<br />

evalueringskit. Afsnittet danner grundlag, sammen med projektoplægget, for<br />

problemformuleringen.<br />

2.1 Problemstillingen<br />

Udgangen på et måleinstrument består ideelt af to signaler, x1 og x2, på hver sin<br />

frekvens. Amplituden på disse to signaler er tæt tilknytede målingerne, men<br />

forstyrrelser fra bl.a. apparatets strømforsyning kommer også på apparatets<br />

udgangssignal.<br />

Figuren ovenfor beskriver problemstillingen. Der skal laves to <strong>filtre</strong>, der udskiller<br />

de to informationsbærende signaler.<br />

Figur 1: Blokdiagram over opgaven. Kilde: Projektoplægget.<br />

2.2 Inputsignal<br />

Inputsignalet til <strong>filtre</strong>ne består af fire forskellige komponenter. x1, x2 samt<br />

støjkomponenterne x3 og x4. Disse ligger alle på hver sit frekvensområde.<br />

Figuren nedenfor viser hvilke frekvenskomponenter et indgangssignalet kan<br />

indeholde jævnfør opgaveformuleringen. x1 og x2 er de signaler, der skal<br />

udskilles. På figuren vises grænseværdierne på x2 og x4, da disse kan ligge<br />

ITVP4 – Gruppe 5 Side 4 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

indenfor det viste frekvensområde. Amplituden på x1 og x2 er på 0,8, mens<br />

støjkomponenterne x3 og x4 begge har en amplitude på 0,16.<br />

Amplitude<br />

1<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

x3<br />

Figur 2: Amplitudespektrum af indgangssignal. Kilde: Egen produktion.<br />

2.3 Udgangssignalerne<br />

Det ønskes at få de to inputkomponenter adskilte jævnfør Figur 1, således at y1<br />

kun indeholder x1, og y2 kun indeholder x2 1 . Som der kan ses på Figur 2 ovenfor,<br />

indeholder inputsignalet følgende komponenter:<br />

- x1: Maks. amplitude på 0,8 og frekvens på 3 kHz.<br />

- x2: Maks. amplitude på 0,8 og frekvensområde på 7 kHz til 10 kHz.<br />

- x3: Maks. amplitude på 0,16 og frekvens på 50 Hz.<br />

- x4: Maks. amplitude på 0,16 og frekvensområde på 14 kHz til 20 kHz.<br />

På <strong>filtre</strong>nes udgangssignal skal alle øvrige komponenter være dæmpede til 46 dB<br />

relativt til 0,8. Dvs. at på y1 skal x2, x3 og x4 alle være dæmpede til mindst 46 dB<br />

1 Dette er idealønske, og kan ikke implementeres i den virklige værden pga. støj, forstyrelser og ikke-<br />

ideelle digitale <strong>filtre</strong>.<br />

x1<br />

x2 grænseværdier<br />

x4 grænseværdier<br />

0<br />

0.05 3 7<br />

10 14 20<br />

Frekvens<br />

ITVP4 – Gruppe 5 Side 5 af 53<br />

kHz


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

i forhold til x1, og på y2 skal x1, x3 og x4 ligeledes være dæmpede til mindst 46<br />

dB i forhold til x2. Endvidere må udgangssignalerne ikke variere mere end 2% i<br />

amplituden fra deres tilsvarende inputkomponenter.<br />

2.4 Evaluering af <strong>filtre</strong><br />

Til evaluering af <strong>filtre</strong>ne bruges et BF533-EZ KIT Lite Evaluation board sammen<br />

med en HP4194A Gain-Phase analysator.<br />

2.5 Antal filterkoefficienter<br />

Det ideelle filter opnås ved at bruge uendelig mange filterkoefficienter. Dete kan<br />

ikke gøres. Endvidere gælder den regel, at jo flere koefficienter, der benytes,<br />

desto dyrere bliver <strong>filtre</strong>t, og desto længere bliver indsvingningen. Derfor skal<br />

der opnås et filter med så få filterkoefficienter som mulig. Det maksimale antal<br />

filterkoefficienter for et FIR-filter, kan udregnes ud fra formlen nedenunder:<br />

Ved IIR-<strong>filtre</strong>, kan indsvingningstiden ikke umiddelbart beregnes. Her kan dog<br />

impulsrespons benytes, til at aflæse indsvingningen.<br />

2.6 Samplingsfrekvens<br />

Når der skal afgøres, hvilken samplingsfrekvens man skal vælge, siger ”Shannon<br />

Sampling Theorem” 2 , at samplingsfrekvensen skal være mindst dobbelt så stor<br />

som maksfrekvensen i signalet for at undgå aliasering.<br />

2 Side 77 i SPF bogen.<br />

ITVP4 – Gruppe 5 Side 6 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

2.7 Konklusion<br />

Der er nu gennemgået de emner, som der skal tages hånd om. Der er<br />

dokumenteret hvilke signaler, der kommer ind, og hvilke signaler, der skal<br />

<strong>filtre</strong>res fra. Der er beskrevet, hvor mange filterkoefficienter, de forskellige <strong>filtre</strong><br />

kan have, samt hvordan <strong>filtre</strong>ne evalueres. Til sidst forklares, hvordan<br />

samplingsfrekvensen kan bestemmes ud fra de signaler, der skal bearbejdes.<br />

ITVP4 – Gruppe 5 Side 7 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

3. Projektafgrænsning og metoder<br />

I dete afsnit vil der blive fortalt om afgrænsningerne for projektet,<br />

kravspecifikationen laves, og de anvendte teorier og metoder, vil blive belyst. De<br />

ressourcer, som er blevet benytet, vil blive trukket frem.<br />

3.1 Afgrænsning<br />

Der simuleres kun et udvalg af de FIR løsninger, som MATLAB stiller til<br />

rådighed. Denne afgrænsning er truffet i forbindelse med tidsrummet, som<br />

opgaven skal løses indenfor.<br />

Der er valgt at begrænse implementeringen af <strong>filtre</strong>ne på boardet til en FIR<br />

løsning. Dvs. at IIR-løsningen bliver kun simuleret i MATLAB. Dete skyldes<br />

kompleksiteten, der er forbunden med implementering af IIR-<strong>filtre</strong>.<br />

3.2 Kravspecifikation<br />

Givet et inputsignal indeholdende signalerne x1, x2, x3 og x4, skal der<br />

specificeres, designes og implementeres <strong>filtre</strong>, der kan udskille x1 og x2 fra<br />

inputsignalet.<br />

Figuren nedenfor er en gengivelse af Figur 1. Den giver et overblik over de <strong>filtre</strong><br />

der skal laves.<br />

ITVP4 – Gruppe 5 Side 8 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Følgende krav fremsætes til <strong>filtre</strong>ne:<br />

- For y1 må amplituden fra de øvrige signaler højst være på -46 dB relativt<br />

til 0,8.<br />

- For y2 må amplituden fra de øvrige signaler højst være på -46 dB relativt<br />

til 0,8.<br />

- y1 og y2 må være i steady-state inden 3 ms.<br />

- Amplituden på y1 og y2 må ikke variere mere end 2% fra henholdsvis x1<br />

og x2.<br />

3.3 Teorier og metoder<br />

Til at vælge en fornuftig samplingsfrekvens, bliver ”Shannon Theorem” benytet.<br />

For at folde signalerne med <strong>filtre</strong>ne, vil ”The Convolution Sum Formula” blive<br />

benytet.<br />

3.4 Ressourcer<br />

Her beskrives de ressourcer, der bruges til løsning af dete projekt.<br />

MATLAB<br />

MATLAB bliver benytet til at designe og generere <strong>filtre</strong>ne, samt lave de<br />

simuleringer, der skal laves før der kan gås i gang med at implementere.<br />

Værktøjet fdatool i MATLAB benytes til dete formål.<br />

Visual DSP++<br />

Visual DSP++ er det program, hvor <strong>filtre</strong>ne bliver implementeret og overført til<br />

Blackfin boardet. Desuden bliver også alt opsætning til Blackfin initialiseret i<br />

dete program.<br />

ITVP4 – Gruppe 5 Side 9 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

BF533-EZ KIT Lite Evaluation Board<br />

Til implementering af <strong>filtre</strong>ne bruges et BF533-EZ KIT Lite Evaluation board.<br />

Boardet består bl.a. af en Analog Devices Blackfin processor kørende med 600<br />

MHz. Processoren er optimeret til digital signal behandling. På boardet findes<br />

også A-D samt D-A omsæter for omsætning mellem analog og digitale signaler.<br />

Boardet har 2 stereo lyd indgange og 3 stereo lyd udgange, samt ind- og udgange<br />

til video. Boardet kan arbejde med frekvenserne 24 kHz, 48 kHz og 96 kHz. På<br />

boardet findes 32 MB ekstern Flash hukommelse, samt 148 kB cache 3<br />

hukommelse.<br />

Blackfin processoren har ikke en FPU 4 , og derfor bruges et specielt fast-tal format<br />

til beregning af kommatal. Tallet består af en heltalsdel samt en kommatalsdel.<br />

Det kaldes et fast-tals format, fordi kommaet altid står på samme position i tallet.<br />

Dete talformat er meget hurtigere at regne på end almindelige flydende tal, når<br />

der ikke er en FPU tilstede. De repræsenterer dog et meget mere begrænsede<br />

område.<br />

HP 4194A Gain-Phase Analyzer<br />

Til evaluering af <strong>filtre</strong>ne HP 4194A Gain-Phase Analyzer. Apparatet kan blandt<br />

andet analysere et filters amplituderespons. Dete gøres ved at den sender de<br />

frekvenser der ønskes analyseret igennem filteret, og derefter ploter<br />

amplituderesponsen i det valgte interval.<br />

3.5 Konklusion<br />

Med punkterne i dete afsnit, er der sat nogle begrænsninger for projektet,<br />

kravspecifikationen er lavet, og de teorier og metoder, som anvendes, er blevet<br />

belyst. Ovenpå dete, er de ressourcerne, der bruges, blevet gennemgået. Disse<br />

punkter danner grundlag for problemløsningen.<br />

3 Cache hukommelse er meget hurtig, da den sidder så tæt på processorens kærne.<br />

4 Floating point unit. Processor specielt udviklet til beregning af flydende komma-tal.<br />

ITVP4 – Gruppe 5 Side 10 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

4. Problemløsning<br />

I dete afsnit vil filterkravene blive sat op. Beslutning om samplingsfrekvensen<br />

vil blive truffet, samt beregning af maks. antal filterkoefficienter. Dernæst vil en<br />

simulering af både et FIR- og et IIR filter blive lavet i MATLAB. Simuleringen af<br />

FIR <strong>filtre</strong>ne i MATLAB vil dernæst blive holdt op imod en simulering i<br />

VisualDSP++. Til sidst vil implementeringen af softwaren blive belyst, samt<br />

evaluering af denne.<br />

4.1 Design af filterkrav<br />

Jævnfør kravspecifikationen udregnes først pasbåndsripplen. Dete definerer<br />

hvor stor afvigelsen mellem indgangs- og udgangssignalet maksimum må være<br />

ved deres pågældende frekvenser. Amplituden for både x1 og x2 er på 0,8 og 2%<br />

af dete svarer til 0,016. Følgende formel udregner pasbåndsripplen i dB:<br />

Dernæst skal der udregnes, hvor meget støjsignalerne skal dæmpes, således, at<br />

de svarer til en dæmpning på 46 dB i forhold til 0,8. Dæmpningen for<br />

henholdsvis x1 og x2 behøves ikke beregnet, da denne netop er 46 dB. Dete<br />

skyldes, at amplituden på begge signaler er på 0,8. De øvrige signaler har en<br />

amplitude på 0,16 og det skal derfor beregnes, hvor meget de skal dæmpes så det<br />

svarer til 46 dB i forhold til 0,8. Formlen nedenfor viser, hvorledes denne forskel<br />

beregnes.<br />

Med denne dæmpning i støjsignalerne allerede, giver en simpel subtraktion den<br />

dæmpning, <strong>filtre</strong>t skal påvirke, for at opnå en dæmpning på 46 dB. Formlen vises<br />

nedenfor.<br />

ITVP4 – Gruppe 5 Side 11 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Med disse tal beregnede, kan <strong>filtre</strong>nes krav designes. Her bruges også de<br />

oplysninger, der er dokumenteret i kravspecifikationen (se side 8). Figur 3 ses<br />

designet for det filter, der skal udskille x1 ud fra indgangssignalet.<br />

dB<br />

0,17<br />

0<br />

-0,17<br />

-32<br />

-46<br />

Stopband<br />

Transision-<br />

band<br />

Figur 3: Filterdesign til udskillelse af x1. Kilde: Egen produktion.<br />

På figuren ses, at pasbåndet for <strong>filtre</strong>t svarer til et frekvensområde på 20 Hz.<br />

Dete er nødvendigt, når der laves pasbånd<strong>filtre</strong>. Alternativt kunne der<br />

fremstilles et lavpas og et højpas filter der sætes i kaskade. Se Bilag 2:<br />

Alternative filterkrav på side 46 for designet af disse. Pasbåndets bredde er 0,34<br />

omkring 0 dB (0,17 til hver side) svarende til udregningen ovenfor. Filtret har til<br />

opgave at dæmpe x2, x3 og x4. x3 ligger på 50 Hz, og her skal <strong>filtre</strong>t derfor<br />

dæmpe med de 32 dB som udregnet. På 7 kHz ligger næste signal, som er x2.<br />

Dete skal dæmpes 46 dB jævnfør kravspecifikationen. x4 ligger længere oppe på<br />

frekvens aksen, og bliver derfor også dæmpet i stopbåndet.<br />

For at udskille x2 ud fra indgangssignalet, laves ligeledes et pasbåndfilter. Dete<br />

filter ses på Figur 4. Da x2 kan ligge i frekvensområde 7-10 kHz har dete filter<br />

allerede et pasbånd.<br />

Pasbåndfilter, som lader frekvenser på 3000 Hz komme igennem<br />

Passband<br />

Transisionband<br />

Stopband<br />

Fpass1 = 2990 Hz<br />

Fpass2 = 3010 Hz<br />

Fstop1 = 50 Hz<br />

Fstop2 = 7000 Hz<br />

Rpass = 0,34 dB<br />

Rstop1 = 32 dB<br />

Rstop2 = 46 dB<br />

50 2990 3010 5000 7000 10000 14000<br />

ITVP4 – Gruppe 5 Side 12 af 53<br />

Hz


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Filtret har til opgave at dæmpe signalerne x1, x3 og x4. x4 er støjsignalet, der<br />

ligger på frekvensområdet 14-20 kHz. Da dete signal har en amplitude på 0,16<br />

bruges igen her en dæmpning på 32 dB. På den anden side af pasbåndet ligger<br />

x1, der har en amplitude på 0,8. Her skal dæmpningen derfor være 46 dB. x3<br />

ligger lavere end x1, og derfor bliver dete også dæmpet.<br />

dB<br />

0,17<br />

0<br />

-0,17<br />

-32<br />

-46<br />

Stopband<br />

Figur 4: Filterdesign til udskillelse af x2. Kilde: Egen produktion.<br />

Desuden gælder for begge <strong>filtre</strong>, at de skal være i steady-state indenfor 3 ms. Der<br />

stilles ingen krav til fasekarakteristikken.<br />

4.2 Valg af samplingsfrekvens<br />

Ved at kikke på indgangssignalet kan ses, at den højeste frekvens i signalet ligger<br />

på 20 kHz. Ifølge ”Shannon Theorem” kan den mindst mulige samplings-<br />

frekvens udregnes:<br />

Transisionband<br />

50 3000 5000 7000 10000 14000<br />

Filtrene skal dog evalueres på et Blackfin evalueringsboard, der ikke tilbyder<br />

denne samplingsfrekvens. Det vælges derfor en samplingsfrekvens på 48 kHz, da<br />

denne er understøtet af boardet.<br />

Pasbåndfilter, som lader frekvenser mellem 7000 og 10000 Hz komme igennem<br />

Fpass1 = 7000 Hz<br />

Fpass2 = 10000 Hz<br />

Fstop1 = 3000 Hz<br />

Fstop2 = 14000 Hz<br />

Rpass = 0,34 dB<br />

Rstop1 = 46 dB<br />

Rstop2 = 32 dB<br />

Passband<br />

Transisionband<br />

Stopband<br />

ITVP4 – Gruppe 5 Side 13 af 53<br />

Hz


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

4.3 Beregning af filterkoefficienter<br />

Når der skal beregnes antallet af filterkoefficienter, er der to ting, der skal tages i<br />

betragtning. Det første er hvor skarpt <strong>filtre</strong>t skal være for at overholde<br />

filterkravene, dvs. hvor smalt transientbåndet skal være. For både FIR og IIR<br />

<strong>filtre</strong> gælder at skarpheden kan øges ved at øge antallet af filterkoefficienter. Da<br />

signalet skal være i steady-state efter 3 ms kan man jævnfør analysen beregne det<br />

maksimale antal filterkoefficienter for et FIR filter ved følgende beregning:<br />

koefficienter<br />

Indsvingningstiden for et IIR filter kan, som nævnt i analysen, findes ved hjælp<br />

af <strong>filtre</strong>ts impulsrespons.<br />

Til beregning af filterkoefficienter benytes MATLAB’s filterværktøjer. Her<br />

oplyses <strong>filtre</strong>nes krav, hvorefter MATLAB returnerer koefficienterne. Følgende<br />

afsnit gennemgår simulationer af henholdsvis FIR og IIR løsninger.<br />

4.4 Matematisk simulering af FIR løsning<br />

Efter beregning af filterkoefficienter, simuleres <strong>filtre</strong>t med MATLAB, for at<br />

undersøge, om <strong>filtre</strong>t overholder de opstillede krav. Da der er to <strong>filtre</strong> der skal<br />

laves, simuleres disse hver for sig.<br />

Simulationen foregår ved at generere et testsignal, der er i overensstemmelse<br />

med indgangssignalet, som beskrevet i problemanalysen (se kildekode på Cd'en).<br />

Dete testsignalet sendes så gennem <strong>filtre</strong>ne og udgangssignalet analyseres. Figur<br />

5 viser et amplitudespektrum af dete testsignal.<br />

ITVP4 – Gruppe 5 Side 14 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Amplitude dB<br />

0<br />

-20<br />

-40<br />

-60<br />

-80<br />

-100<br />

-120<br />

-140<br />

-160<br />

0 0.5 1 1.5 2 2.5<br />

x 10 4<br />

-180<br />

Hz<br />

Figur 5: Amplitudespektrum af testsignalet. Kilde: Egen produktion.<br />

Figuren viser, hvilke komponenter, som er i testsignalet. Det viser x1 på 3 kHz, 4<br />

forskellige x2 signaler for at repræsentere hele x2’s frekvensområde. x3 ses på 50<br />

Hz og der er 7 forskellige signaler på x4’s frekvensområde.<br />

Udskillelse af x1 signalet<br />

One-sided spectrum<br />

For at udskile x1 ud fra indgangssignalet er der lavet et Least Square<br />

pasbåndfilter med 40 koefficienter. Filtret laves med MATLAB’s fdatool, og<br />

gemmes i en MATLAB m-fil. Dernæst laves et amplituderespons for <strong>filtre</strong>t, hvor<br />

filterkravene er plotet ovenover. Således kan ses, hvorvidt <strong>filtre</strong>t overholder<br />

kravene. På Figur 6 ses filterets amplituderespons samt filterkravene.<br />

ITVP4 – Gruppe 5 Side 15 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Bandpass 40 order Least Square filter<br />

Figur 6: Amplituderespons for Least Square filter med filterkrav plottet ovenover. Kilden: Egen produktion.<br />

Det kan ses på figuren, at amplituden falder hurtigt nok i transissionsbåndet til at<br />

overholde kravene i stopbåndene. Figuren viser også en forstørrelse af<br />

pasbåndet, således, at der også her kan ses, at <strong>filtre</strong>ts amplituderespons ligger<br />

indenfor grænserne specificerede i filterkravene.<br />

For at simulere sendes testsignalet gennem <strong>filtre</strong>t, hvorefter der kan laves et<br />

amplitudespektrum af <strong>filtre</strong>ts udgangssignal. Figur 7 viser dete udgangssignal.<br />

Figuren viser, at der er den krævede dæmpning på udgangssignalet, da alle<br />

komponenter i testsignalet er dæmpede mere end 46 dB.<br />

ITVP4 – Gruppe 5 Side 16 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Amplitude dB<br />

Figur 7: Amplitudespektrum af Least Square’s udgangssignal. Kilde: Egen produktion.<br />

Udskillelse af x2 signalet<br />

For at udskile x2 ud fra indgangssignalet er der lavet et HammingWindow<br />

pasbånd filter med 40 filterkoefficienter. Også dete filter laves i MATLAB’s<br />

fdatool, og gemmes som MATLAB m-fil. Figuren nedenfor viser <strong>filtre</strong>ts<br />

amplituderespons plotet sammen med filterkravene.<br />

dB<br />

0<br />

-10<br />

-20<br />

-30<br />

-40<br />

-50<br />

0<br />

-20<br />

-40<br />

-60<br />

-80<br />

-100<br />

-120<br />

0 0.5 1 1.5 2 2.5<br />

x 10 4<br />

-140<br />

Hz<br />

-60<br />

0 5000 10000 15000<br />

Hz<br />

Figur 8: Amplituderespons for HammingWindow filter med filterkrav plottet ovenover. Kilde: Egen<br />

produktion.<br />

One-sided spectrum<br />

Bandpass 40 order HammingWindow filter<br />

ITVP4 – Gruppe 5 Side 17 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Figuren viser tydeligt, at stopbåndskravene er overholdt, men igen her må der<br />

forstørres ind på pasbåndet. Figur 9 nedenfor viser et udsnit omkring pasbåndet.<br />

Figuren viser, at <strong>filtre</strong>t ligger indenfor de filterkrav, der er specificerede for<br />

pasbåndet.<br />

dB<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

Figur 9: Forstørrelse af pasbånd på Figur 8. Kilde: Egen produktion.<br />

Simulationen af <strong>filtre</strong>t foregår ligeledes ved at sende testsignalet gennem <strong>filtre</strong>t,<br />

og så plote et amplitudespektrum af udgangssignalet. Figur 10 nedenfor viser<br />

dete plot.<br />

Amplitude dB<br />

0<br />

-20<br />

-40<br />

-60<br />

-80<br />

-100<br />

-120<br />

Bandpass 40 order HammingWindow filter<br />

7000 7500 8000 8500 9000 9500 10000 10500<br />

Hz<br />

One-sided spectrum<br />

46 dB<br />

0 0.5 1 1.5 2 2.5<br />

x 10 4<br />

-140<br />

Hz<br />

Figur 10: Amplitudespektrum for HammingWindow's udgangssignal. Kilde: Egen produktion.<br />

ITVP4 – Gruppe 5 Side 18 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

På figuren kan ses, at dete filter overholder de specificerede filterkrav, da alle<br />

øvrige komponenter har en dæmpning svarende til mere end 46 dB.<br />

Indsvingning<br />

Indsvingningen for et FIR filter kan, som sagt, beregnes ud fra filterlængden.<br />

Ifølge kravspecifikationen må indsvingningen ikke være mere end 3 ms, og dete<br />

svarer til 144 filterkoefficienter (se Beregning af filterkoefficienter på side 14). Da<br />

begge <strong>filtre</strong> har færre end 144 koefficienter, kan konkluderes, at begge overholder<br />

indsvingningskravene om at være i steady-state inden for 3 ms.<br />

4.5 Matematisk simulering af IIR løsning<br />

Efter simulation af FIR <strong>filtre</strong>, simuleres her IIR <strong>filtre</strong> med de samme filterkrav.<br />

Disse krav laves dog lidt om, for til IIR løsningen er begge <strong>filtre</strong> lavet om til høj-<br />

og lavpas <strong>filtre</strong>, fordi det giver i dete tilfælde <strong>filtre</strong> med færre koefficienter. Disse<br />

nye filterkrav findes i Bilag 2: Alternative filterkrav på side 46. Figur 11 viser et<br />

blokdiagram over hvordan disse sætes i kaskade.<br />

x[n] w[n] y[n]<br />

Lavpass filter Højpass filter<br />

Figur 11: Blokdiagram over <strong>filtre</strong> i kaskade. Kilde: Egen produktion.<br />

For at gennemføre simulationen plotes der først <strong>filtre</strong>nes amplituderespons<br />

sammen med filterkravene. Dernæst plotes et pol/nullpunktsdiagram, for at<br />

bekræfte <strong>filtre</strong>ts stabilitet. Filtrets indsvingningskarakteristik kan aflæses på et<br />

plot af dets impulsrespons. Her kan aflæses, hvorvidt <strong>filtre</strong>t overholder<br />

indsvingningskravene om at være i steady-state inden 3 ms.<br />

Selve simulationen foregår ved at sende testsignalet gennem <strong>filtre</strong>ne for at se<br />

udgangssignalets amplitude-spektrum. Testsignalet som bruges er det samme,<br />

som til FIR <strong>filtre</strong>ne (se Figur 5 på side 15).<br />

ITVP4 – Gruppe 5 Side 19 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Udskillelse af x1 signalet<br />

For at udskile x1 ud fra indgangssignalet laves der Chebyscev2 høj- og lavpas<br />

<strong>filtre</strong>, der sætes i kaskade. Se blokdiagrammet på Figur 11. Disse <strong>filtre</strong> er<br />

designet ud fra de alternative filterkrav (se Bilag 2 på side 46). Først plotes<br />

amplituderespons for lavpas <strong>filtre</strong>t, med <strong>filtre</strong>ts krav plotet ovenover. Et 7.<br />

ordens Chebyscev2 lavpas filter ses på Figur 12. Signalet x1 har, som sagt i<br />

kravspecifikationen, en frekvens på 3 kHz.<br />

dB<br />

0<br />

-5<br />

-10<br />

-15<br />

-20<br />

-25<br />

-30<br />

-35<br />

-40<br />

-45<br />

lowPass 7 order Chebyscev2 filter<br />

2500 3000 3500 4000 4500 5000<br />

Hz<br />

5500 6000 6500 7000<br />

Figur 12: Amplituderespons for Chebyscev2 lavpasfilter med filterkrav plottet ovenover. Kilde: Egen<br />

produktion.<br />

Figuren viser, at ved stopbåndet (7 kHz) er dæmpningen tilstrækkelig, men det<br />

er svært at se pasbåndet. Figur 13 viser en forstørrelse af Figur 12’s pasbånd. Her<br />

ses tydeligt, at <strong>filtre</strong>t ligger indenfor filterkravene.<br />

ITVP4 – Gruppe 5 Side 20 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

dB<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

lowPass 7 order Chebyscev2 filter<br />

2500 2600 2700 2800<br />

Hz<br />

2900 3000 3100<br />

Figur 13: Forstørrelse af pasbånd på Figur 12. Kilde: Egen produktion.<br />

Stabilitet<br />

Filtrets stabilitet bekræftes ved at undersøge dets pol/nullpunktsdiagram. Figur<br />

14 viser dete plot. Der kan ses på figuren, at da alle poler ligger indenfor<br />

enhedscirklen, er <strong>filtre</strong>t stabilt.<br />

Imaginary Part<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

Pol/nulpunkts diagram over et lowpass 7 order Chebyscev2 filter<br />

-1 -0.5 0<br />

Real Part<br />

0.5 1<br />

Figur 14: Pol/nullpunktsdiagram for Chebyscev2 lavpasfilter. Kilde: Egen produktion.<br />

For at sikre sig, at filteret overholder kravene til indsvingningstiden, kigges der<br />

på <strong>filtre</strong>ts impulsrespons. Figur 15 nedenfor viser dete filters impulsrespons. Der<br />

ITVP4 – Gruppe 5 Side 21 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

kan ses på figuren, at indsvingningen er ca. 0,15 ms. Med dete kan konkluderes,<br />

at dete filter overholder alle kravene til <strong>filtre</strong>t.<br />

Amplitude<br />

0.25<br />

0.2<br />

0.15<br />

0.1<br />

0.05<br />

0<br />

-0.05<br />

impulse response of lowPass 7 order Chebyscev2 filter<br />

-0.1<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

millisekunder<br />

Figur 15: Impulsrespons for Chebyscev2 lavpasfilter. Kilde: Egen produktion.<br />

Højpas<strong>filtre</strong>t er også et Chebyscev2 filter. På Figur 16 på næste side ses<br />

amplituderesponsen for et 2. ordens Chebyscev2 med filterkravene plotet<br />

ovenover. Figuren giver kun en oversigt over hvordan amplituderesponsen ser<br />

ud. For at undersøge grænseværdierne viser Figur 17 en forstørrelse af<br />

henholdsvis stopbåndet og pasbåndet. Det ses på figuren, at <strong>filtre</strong>t også her<br />

overholder filterkravene for højpas<strong>filtre</strong>t.<br />

ITVP4 – Gruppe 5 Side 22 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

dB<br />

0<br />

-5<br />

-10<br />

-15<br />

-20<br />

-25<br />

-30<br />

highPass 2 orderChebyscev2 filter<br />

0 500 1000 1500<br />

Hz<br />

2000 2500 3000<br />

Figur 16: Amplituderespons for Chebyscev2 højpasfilter med filterkrav plottet ovenover. Kilde: Egen<br />

produktion.<br />

-31.4<br />

-31.6<br />

-31.8<br />

-32<br />

-32.2<br />

dB<br />

-32.4<br />

-32.6<br />

-32.8<br />

-33<br />

-33.2<br />

highPass 2 orderChebyscev2 filter<br />

0 10 20 30 40 50 60 70<br />

Hz<br />

Figur 17: Forstørrelse af grænseværdierne på Figur 16. Kilde: Egen produktion.<br />

2920 2940 2960 2980<br />

Hz<br />

3000 3020 3040 3060<br />

ITVP4 – Gruppe 5 Side 23 af 53<br />

dB<br />

0.2<br />

0.15<br />

0.1<br />

0.05<br />

0<br />

-0.05<br />

-0.1<br />

-0.15<br />

-0.2<br />

highPass 2 orderChebyscev2 filter<br />

Også her laves et pol/nullpunktsdiagram over <strong>filtre</strong>t, for at undersøge dets<br />

stabilitet. Figur 18 viser dete plot. Da polerne ligger tæt på enhedscirklen, er de<br />

indenfor, og derved er også dete filter stabilt.


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Imaginary Part<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

Pol/nulpunkts diagram over et highpass 2 order Chebyscev2 filter<br />

-1 -0.5 0<br />

Real Part<br />

0.5 1<br />

Figur 18: Pol/nullpunktsdiagram for Chebyscev2 højpasfilter. Kilde: Egen produktion.<br />

Indsvingningen aflæses dernæst på <strong>filtre</strong>ts impulsrespons. Se Figur 19.<br />

Amplitude<br />

1.2<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

impulse response of highPass 2 order Chebyscev2 filter<br />

-0.2<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

millisekunder<br />

Figur 19: Impulsrespons for Chebyscev2 højpasfilter. Kilde: Egen produktion.<br />

ITVP4 – Gruppe 5 Side 24 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Her er det samme gældende som før. Signalet er gået i Steady-state efter ca. 0,2<br />

ms, og er også tilfredsstillende i forhold til kravene. Disse to <strong>filtre</strong> kombineres nu<br />

for at virke som en kaskade af et lav- og højpasfilter jævnfør Figur 11 på side 19,<br />

således at både de lave og høje frekvenser <strong>filtre</strong>res fra. Figur 20 viser disse to<br />

<strong>filtre</strong>s amplituderespons kombineret i et.<br />

dB<br />

0<br />

-5<br />

-10<br />

-15<br />

-20<br />

-25<br />

-30<br />

-35<br />

-40<br />

-45<br />

-50<br />

cascade 9 order Chebyscev2 filter<br />

0 1000 2000 3000 4000 5000 6000 7000<br />

Hz<br />

Figur 20: Amplituderespons for kaskade Chebyscev2 filter med filterkrav plottet ovenover. Kilde: Egen<br />

produktion.<br />

Som det ses her, er kravene lige som før plotet ovenpå <strong>filtre</strong>t. Figur 21 på næste<br />

side, viser en forstørrelse af grænseværdierne. De to figurer i venstre side viser<br />

stopbåndene, og det kan udledes fra disse, at kravene om dæmpning er<br />

overholdt. Figuren til højre viser pasbåndet, og her ses, at kravene om<br />

atenuation af signalet også er overholdt.<br />

ITVP4 – Gruppe 5 Side 25 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

dB<br />

dB<br />

-31<br />

-31.5<br />

-32<br />

-32.5<br />

-42<br />

-43<br />

-44<br />

-45<br />

-46<br />

-47<br />

-48<br />

-49<br />

-50<br />

-51<br />

cascade 9 order Chebyscev2 filter<br />

-10 0 10 20 30<br />

Hz<br />

40 50 60<br />

cascade 9 order Chebyscev2 filter<br />

6400 6600 6800 7000 7200<br />

Hz<br />

7400 7600 7800<br />

dB<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

cascade 9 order Chebyscev2 filter<br />

2940 2960 2980 3000<br />

Hz<br />

3020 3040 3060<br />

Figur 21: Forstørrelse af grænseværdierne for Chebyscev2 kaskadefilter. Kilde: Egen produktion.<br />

Dernæst er at undersøge dete filters pol/nullpunktsdiagram. Dete ses på Figur<br />

22 nedenfor. Figuren viser også her, at alle poler ligger indenfor enhedscirklen,<br />

hvilket gør <strong>filtre</strong>t stabilt.<br />

Imaginary Part<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

Pol/nulpunkts diagram over et cascade 9 order Chebyscev2 filter<br />

-1 -0.5 0<br />

Real Part<br />

0.5 1<br />

Figur 22: Pol/nullpunktsdiagram for Chebyscev2 kaskadefilter. Kilde: Egen produktion.<br />

ITVP4 – Gruppe 5 Side 26 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Til sidst undersøges <strong>filtre</strong>ts indsvingningskarakteristik, for at se, om det<br />

overholder kravet om at være i steady-state inden 3 ms. Dete kan aflæses på<br />

Figur 23, som viser <strong>filtre</strong>ts impulsrespons. Som det ses på figuren, er<br />

indsvingningen ca. på 0.35 ms. Dete overholder også kravene, så det kan<br />

konkluderes, at filteret overholder alle kravene.<br />

Amplitude<br />

0.2<br />

0.15<br />

0.1<br />

0.05<br />

0<br />

-0.05<br />

-0.1<br />

impulse response of cascade 9 order Chebyscev2 filter<br />

-0.15<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

millisekunder<br />

Figur 23: Impulsrespons for Chebyscev2 kaskadefilter. Kilde: Egen produktion.<br />

Simulationen af <strong>filtre</strong>t foregår ved at sende testsignalet gennem <strong>filtre</strong>t, og<br />

undersøge udgangssignalets amplitudespektrum. Dete kan ses på Figur 24. På<br />

figuren er grænsen markeret med en stiplet linje. Det ses, at alle øvrige<br />

komponenter er dæmpede tilstrækkeligt.<br />

ITVP4 – Gruppe 5 Side 27 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Amplitude<br />

dB<br />

0<br />

-20<br />

-40<br />

-60<br />

-80<br />

-100<br />

-120<br />

-140<br />

0 0.5 1 1.5 2<br />

Hz<br />

Figur 24: Amplitudespektrum af Chebyscev2’s udgangssignal. Kilde: Egen produktion.<br />

Udskillelse af x2 signalet<br />

For at udskille x2 ud fra indgangssignalet bruges der igen et Chebyscev2 filter.<br />

x2’s frekvensområde er mellem 7-10 kHz. Dete filter laves på samme måde som<br />

<strong>filtre</strong>t til udskillelse af x1 signalet. Dog bliver der kun gennemgået det<br />

kombinerede filter. Graferne for høj- og lavpas <strong>filtre</strong>ne findes i Bilag 3 på side 48.<br />

Figur 25 viser amplituderesponsen for et 11. ordens Chebyscev2 kaskadefilter.<br />

Filtret er lavet fra et lav- og et højpasfilter. Igen her er det svært at se grænse-<br />

værdierne, og derfor vises en forstørrelse af disse på Figur 26. Figurerne til<br />

venstre viser stopbåndene, mens den til højre viser pasbåndet. Her kan tydeligt<br />

ses, at kravene er overholdt.<br />

One-sided spectrum<br />

46 dB<br />

x10 4<br />

ITVP4 – Gruppe 5 Side 28 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

dB<br />

0<br />

-5<br />

-10<br />

-15<br />

-20<br />

-25<br />

-30<br />

-35<br />

-40<br />

-45<br />

cascade 11 orderChebyscev2 filter<br />

4000 6000 8000<br />

Hz<br />

10000 12000 14000<br />

Figur 25: Amplituderespons for Chebyscev2 kaskadefilter. Kilde: Egen produktion.<br />

dB<br />

-45.95<br />

-45.96<br />

-45.97<br />

-45.98<br />

-45.99<br />

-46<br />

-46.01<br />

-46.02<br />

-46.03<br />

-46.04<br />

dB<br />

-29<br />

-30<br />

-31<br />

-32<br />

-33<br />

-34<br />

cascade 11 orderChebyscev2 filter<br />

2960 2970 2980 2990 3000 3010<br />

Hz<br />

cascade 11 orderChebyscev2 filter<br />

1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46<br />

x 10 4<br />

-35<br />

Hz<br />

7000 7500 8000 8500<br />

Hz<br />

9000 9500 10000<br />

ITVP4 – Gruppe 5 Side 29 af 53<br />

dB<br />

0.25<br />

0.2<br />

0.15<br />

0.1<br />

0.05<br />

0<br />

-0.05<br />

-0.1<br />

-0.15<br />

-0.2<br />

-0.25<br />

cascade 11 orderChebyscev2 filter<br />

Figur 26: Forstørrelse af grænseværdierne på Figur 25. Kilde: Egen produktion.


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Figur 27 viser pol/nullpunktsdiagram over <strong>filtre</strong>t. Det ses, at <strong>filtre</strong>t er stabilt, da<br />

alle poler ligger indenfor enhedscirklen.<br />

Imaginary Part<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

Pol/nulpunkts diagram over et cascade 11 order Chebyscev2 filter<br />

-1 -0.5 0<br />

Real Part<br />

0.5 1<br />

Figur 27: Pol/nullpunktsdiagram for Chebyscev2 kaskadefilter. Kilde: Egen produktion.<br />

Med et stabilt filter kan indsvingningstiden undersøges. Figur 28 viser impuls-<br />

responsen for <strong>filtre</strong>t. Som det kan udledes fra figuren, er indsvingningen ca. 0.8<br />

ms, og er det tilfredsstillende i forhold til kravene.<br />

Amplitude<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

impulse response of cascade 11 order Chebyscev2 filter<br />

-0.4<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

millisekunder<br />

Figur 28: Impulsrespons for Chebyscev2 kaskadefilter. Kilde: Egen produktion.<br />

ITVP4 – Gruppe 5 Side 30 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Simulationen foregår igen ved at sende testsignalet gennem <strong>filtre</strong>t og derefter<br />

plote amplitudespektrumet for udgangssignalet. Dete kan aflæses på Figur 29<br />

nedenfor.<br />

dB<br />

Amplitude<br />

0<br />

-20<br />

-40<br />

-60<br />

-80<br />

-100<br />

-120<br />

-140<br />

0 0.5 1 1.5 2<br />

Hz<br />

Figur 29: Amplitudespektrum af Chebyscev2's udgangssignal. Kilde: Egen produktion.<br />

Ud fra denne simulation, kan der konkluderes, at alle disse <strong>filtre</strong> overholder<br />

kravene i opgaven, og de vil derfor kunne implementeres. Denne IIR løsning er<br />

dog valgt fra i projektafgrænsninger (se side 8).<br />

4.6 Sammenligning af FIR og IIR løsning<br />

Når der skal laves sammenligninger mellem IIR og FIR løsninger, er der nogle<br />

elementer, som gør dem meget anderledes fra hinanden. Indsvingningen kan<br />

f.eks. med IIR <strong>filtre</strong> være lang, selv om der er tale om få filterkoefficienter. Dete<br />

kommer af, at polerne ligger tæt på enhedscirklen. Hvis polerne ligger udenfor<br />

enhedscirklen, karakteriseres filteret som ustabilt, og med det vil indsvingningen<br />

aldrig dø ud. Med et FIR filter, kan man ikke snakke om ustabilitet, fordi polerne<br />

altid ligger i origo. Indsvingningen, for et FIR filter, er derfor afhængig af antallet<br />

af filterkoefficienter. Af samme grund, er pol/nullpunktsdiagrammer<br />

uinteressante når der tales om FIR <strong>filtre</strong>, men yderst interessante når der er tale<br />

om IIR <strong>filtre</strong>.<br />

One-sided spectrum<br />

ITVP4 – Gruppe 5 Side 31 af 53<br />

x10 4


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

4.7 Software simulering og implementering af FIR løsning<br />

Ved implementering af et filter på signal processoren er det fordelagtigt at<br />

konvertere filterkoefficienterne til fast tals format, se ressource afsnittet om<br />

Blackfin processoren på side 9. Til konverteringen benytes en udleveret<br />

konverterings funktion 'gen_C_header'.<br />

Det er fordelagtigt at undersøge om filteret virker under kontrollerede forhold.<br />

Dete gøres ved at skrive koden der skal behandle indgangssignal og teste koden<br />

med et kendt signal. Ved hjælp af MATLAB og 'gen_C_header' kan der laves et<br />

signal, der umiddelbart kan bruges til simulering i visualDSP++ med Blackfin<br />

processorens talformat og regne instruktioner.<br />

Til simuleringen defineres et hukommelsesområde hvor udgangssignalet<br />

gemmes. Værdierne i hukommelsen kan efter en foldning med det genererede<br />

signal sammenlignes med værdierne af en foldning af det samme signal med<br />

MATLAB.<br />

Funktionen til foldning af inputsignal med filter<br />

/**<br />

* Convolution of delayLine and filter<br />

*<br />

* _x is a delayline of _n elementens<br />

* the delayLine will contain data in the format<br />

* delayLine[] = { x0, x1, x2, x3, x4, x5 }<br />

* ^ _xOffset should be 0 as the next sample should be placed at<br />

* location 0 in the array<br />

*<br />

* after reciving 2 more samples the delayline would contain data as following:<br />

* delayLine[] = { x6, x7, x2, x3, x4, x5 }<br />

* ^ _xOffset should be 2<br />

*<br />

* _h is the filter coeffecients<br />

*<br />

*/<br />

inline fract32 runFIR(const fract16 _x[], const fract16 _h[], const int _n,<br />

const int _xOffset) {<br />

fract32 y = 0;<br />

int k = 0;<br />

//sum delayline with filter, starting with oldest value x[old] -> x[_n-1]<br />

for (k = 0; k < _n; k++) {<br />

fract32 temp = mult_fr1x32(_x [ (_xOffset + k + 1 ) % _n ] ,_h[_n-1-k]);<br />

y = add_fr1x32( temp, y);<br />

}<br />

return y;<br />

}<br />

ITVP4 – Gruppe 5 Side 32 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

DelayLine er implementeret som en cirkulær buffer, se Bilag 5 på side 51.<br />

Desuden er filteret testet med samme metode som beskrevet ovenfor med både<br />

impulsrespons og unit steprespons. Koden til generering af nedenstående signal<br />

ses i Bilag 4 på side 50.<br />

Kode til simulering af filteret.<br />

#include "ccblkfn.h"<br />

//#include "filter.c"<br />

#include <br />

//#include "signal.h"<br />

#define N_signal 481<br />

const fract16 xs[] = {0x6666, 0x1A81, 0xA752, ..., 0xA752, 0x1A81, 0x6666};<br />

#define N_ba 51<br />

const fract16 filterA[] = 0x000D, 0x0024, 0x0043, ..., 0x0043, 0x0024, 0x000D};<br />

fract16 delayLineA[N_ba];<br />

int delayOffsetA = 0;<br />

// arrays to keep simulated data output<br />

fract32 impulseRespons[N_ba];<br />

fract32 stepRespons[N_ba];<br />

fract32 ys[N_signal];<br />

void main(void) {<br />

int i;<br />

}<br />

//simulering af foldning med 10kHz cosinus<br />

/////////////////////////////////<br />

delayOffsetA = 0;<br />

for (i=0; i < N_signal; i++ ) {<br />

delayLineA[delayOffsetA] = xs[i];<br />

ys[i] = runFIR(delayLineA, filterA, N_ba, delayOffsetA);<br />

delayOffsetA = (delayOffsetA + 1 ) % N_ba;<br />

}<br />

4.8 Filter evaluering<br />

For at få <strong>filtre</strong>ne evaluerede bruges en Gain-Phase analysator. Den sætes til at<br />

sweep’e hele frekvensområdet indenfor Nyquist intervallet, hvorefter den ploter<br />

et amplitudespektrum af <strong>filtre</strong>nes udgange.<br />

Først måles en talk-through, således at diverse variationer i hardware m.m. kan<br />

konkluderes, så værdierne kan verificeres at være i overensstemmelse med<br />

kravspecifikationen. Figur 30 nedenfor viser plotet af <strong>filtre</strong>t, der skal udskille x1,<br />

ITVP4 – Gruppe 5 Side 33 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

der ligger på 3 kHz. Det viser tydeligt, at alle øvrige komponenter i<br />

indgangssignalet vil blive dæmpet mere end 46 dB.<br />

dB<br />

0<br />

-20<br />

-40<br />

-60<br />

0,05<br />

0,1 1 2 3 6 7<br />

Figur 30: Amplitudeplot fra gain-phase analysatoren for Least Square <strong>filtre</strong>t. Kilde: Egen produktion.<br />

Figur 31 viser det HammingWindow <strong>filtre</strong>t. Dete filter udskiller x2, som ligger<br />

på frekvensområdet 7-10 kHz. Også her ses, at de øvrige komponenter vil blive<br />

dæmpede med over 46 dB.<br />

dB<br />

0<br />

-20<br />

-40<br />

-60<br />

0,1 1<br />

3 6 7 10 14<br />

kHz<br />

Figur 31: Amplitudeplot fra gain-phase analysatoren for HammingWindow <strong>filtre</strong>t. Kilde: Egen produktion<br />

ITVP4 – Gruppe 5 Side 34 af 53<br />

10<br />

kHz<br />

20<br />

20


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Når det er svært at aflæse værdierne på figuren foroven, kan Gain-Phase<br />

analysatorens markør bruges til at undersøge grænseværdierne. Tabellerne<br />

nedenfor indeholder en oversigt over grænseværdierne for hvert af <strong>filtre</strong>ne, samt<br />

<strong>filtre</strong>nes dæmpning ved den pågældende frekvens. Disse værdier kan aflæses<br />

ved at stille på markøren på analysatoren.<br />

Filter til udskillelse af x1<br />

Frekvens Dæmpning<br />

50 Hz -60,89 dB<br />

2,99 kHz 0 dB<br />

3,01 kHz -0,02 dB<br />

7 kHz -69,9 dB<br />

Filter til udskillelse af x2<br />

Frekvens Dæmpning<br />

3 kHz -53,51 dB<br />

7 kHz -0,11 dB<br />

10 kHz -0,04 dB<br />

14 kHz -47,22 dB<br />

Tabellerne viser, at både <strong>filtre</strong> har tilstrækkelig dæmpning ved deres<br />

stopbåndsfrekvenser. Tabellerne viser også, at variationen i pasbåndet er<br />

tilstrækkelig lille, og ligger indenfor de grænser, der er specificerede i<br />

filterkravene.<br />

4.9 Konklusion<br />

Der blev først i afsnittet designet filterkrav, dvs. der blev defineret ripple-start og<br />

-stop for pasbånd og stopbånd samt forklaret hvordan man evaluerede<br />

indsvingningstiden for hhv. IIR og FIR <strong>filtre</strong>. Der er både undersøgt kombineret<br />

lav- højpas løsninger samt pasbånd løsninger. Det er fundet at man kan designe<br />

kortere pasbånd <strong>filtre</strong> en lav-/højpas kaskader. Derudover er det erfaret at man<br />

med korte IIR <strong>filtre</strong> kan få en lang impulsrespons, dete passer også til teorien<br />

omkring placering af poler nær enhedscirklen i et pol/nulpunktsdiagram. Der er<br />

ITVP4 – Gruppe 5 Side 35 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

gennemgået hvordan man benyter amplituderespons til design af filter. Der er<br />

blevet vist at MATLAB er et stærkt værktøj til filterdesign, og de egentlige valg af<br />

<strong>filtre</strong> er blevet lavet ved hjælp af først amplituderespons og dernæst en<br />

simulering i MATLAB. Ved designet af IIR <strong>filtre</strong> er der blevet vist at<br />

impulsresponsen er et godt og hurtigt værktøj til at sige hvornår signalet er i<br />

steady-state.<br />

Til slut er der gennemgået hvordan filteret implementeres på en digital signal<br />

processor. Den største udfordring ved implementering af <strong>filtre</strong>ne i denne opgave<br />

har været fejlsøgning og verificering af <strong>filtre</strong>ne, navnlig grundet at den benytede<br />

Blackfin processor er optimeret til fast talformat, hvilket har krævet nogle<br />

omfatende verificerings metoder.<br />

Efter fungerende simulering blev boardet testet med en Gain-phase analysator,<br />

som er et godt værktøj til dete. Gain-phase analysatoren verificerede at filter-<br />

simuleringerne og implementeringerne var succesfulde.<br />

ITVP4 – Gruppe 5 Side 36 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

5. Konklusion<br />

Konklusionen er delt op i en produktorienteret del samt en procesorienteret del.<br />

Dete er for at holde processen udenfor selve rapportens konklusion, for at<br />

bibeholde objektiviteten af rapporten.<br />

5.1 Den produktorienterede del<br />

I starten af projektet blev der lavet en analyse hvor matematiske teorier er brugt<br />

til at fastsæte løsningsmetoden til projektet. Teorierne har dannet en ramme som<br />

resten af projektet er blevet udviklet i. Her bør nævnes begrænsningen til at<br />

benyte FIR <strong>filtre</strong> i implementeringen.<br />

For at finde ud af, om produktet, som er lavet, følger kravspecifikationen, har<br />

figurer og illustrationer gennem hele rapporten vist, at kravene er overholdt. Der<br />

kan dog ikke siges ud fra denne rapport, om løsningen er den optimale, fordi<br />

dete ville kræve en større indsigt i valg af <strong>filtre</strong>, samt deres fordele og ulemper.<br />

Når der snakkes om FIR løsningen i forhold til IIR simuleringen, er der i dete<br />

tilfælde ca. en faktor 2 i antallet af filterkoefficienter til forskel. Færre<br />

filterkoefficienter vil kræve færre regneoperationer, og derfor blive hurtigere<br />

færdig med at lave foldningen. FIR filteret har dog den fordel at der er simplere<br />

at implementere hvorfor der ikke er forsøgt implementering af et IIR filter.<br />

FIR <strong>filtre</strong>ne er implementerede på et evalueringsboard, hvor der derefter med en<br />

Gain-phase analysator er dannet grafer over <strong>filtre</strong>ts virkning. Disse stemmer i<br />

overensstemmelse med de stillede filterkrav, og opgaven anses for at være løst.<br />

5.2 Den procesorienterede del<br />

Projektet har ført os gennem de mange aspekter vedrørende design,<br />

implementering og evaluering af digitale <strong>filtre</strong>. Vi har lært, hvordan der designes<br />

ITVP4 – Gruppe 5 Side 37 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

en kravspecifikation for et filter. Vi har lært begreber som ripple og atenuation,<br />

og fået en meget bedre forståelse for signaler og bearbejdning af disse.<br />

Vi har lært at arbejde med den matematiske teori, der ligger bag generering af<br />

<strong>filtre</strong>. Vi har lært at bruge denne teori i praksis, og argumentere for de forskellige<br />

beslutninger, der skal tages når der arbejdes med disse <strong>filtre</strong>.<br />

Vi har også fået muligheden at implementere en foldning i C, kørt den på et<br />

fysisk evalueringskit, og analyseret den med en Gain-Phase analysator.<br />

Det, der har taget mest tid har været simulationen af de forskellige <strong>filtre</strong>. Der var<br />

mange forskellige <strong>filtre</strong> at vælge mellem, og derfor blev der simuleret i flere<br />

dage. Selve implementeringen af <strong>filtre</strong>ne på evalueringskittet tog også<br />

unødvendig meget tid. Dete skyldes de forskellige problemer, der opstod med<br />

kittet. Selve kittet virkede rigtig dårligt, da programmet kun måte køre kort tid,<br />

for ellers måte hele boardet nulstilles, og pc’en tilslutes på ny.<br />

Det må også siges at have været rigtigt hårdt arbejde at færdiggøre ITVP4<br />

projektet parallelt med dete projekt.<br />

Alt i alt må det dog siges at have været en spændende opgave i et fag, der er<br />

fyldt med muligheder.<br />

ITVP4 – Gruppe 5 Side 38 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Bilag 1. Projektoplægget<br />

Design and implementation of digital filters using the Analog Devices ADSP-<br />

BF533 EZ-KIT Lite Evaluation System.<br />

Objective:<br />

The overall objective is to provide you with an overview of the different phases<br />

that are involved, when you want to solve a problem by the use of digital filters.<br />

The assignment will take you through problem analysis, requirement<br />

specification, filter coefficient calculation, filter analysis, filter implementation<br />

and filter evaluation.<br />

The objective can be specified in a more detailed manner. You will:<br />

- Learn how to identify the filter requirements from a problem statement.<br />

- Learn how to specify requirements for the amplitude response.<br />

- Acquire knowledge of different methods of both FIR and IIR filter<br />

coefficient calculation.<br />

- Obtain an overview of the functionality of a typical DSP-board.<br />

- Learn how to implement a difference equation using the C programming<br />

language.<br />

- Learn how to evaluate a digital filter implementation by using a gain-<br />

phase analyzer.<br />

In addition to the subject-oriented objectives, you will develop your ability to<br />

cooperate as a team, document your solution in a report and present your<br />

solution at the DSM2 examination.<br />

ITVP4 – Gruppe 5 Side 39 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Problem statement:<br />

The output from an analogue measurement system consists ideally of two<br />

frequency components. The amplitude of those components is closely related to<br />

the measurement.<br />

But sinusoidal interferences from a power supply and another source is also<br />

present at the output.<br />

You must design two digital filters that ”eliminates” the interferences and<br />

outputs the information-carrying sinusoidal signals.<br />

In the figure below, all converters are considered ideal.<br />

Signal model The signal x(t), which is input to the C-to-D converter, can be<br />

described as:<br />

- x(t) is a sum of x1(t), x2(t), x3(t) and x4(t).<br />

- x1(t) and x2(t) carry the information, x3(t) and x4(t) come from noise and<br />

interference.<br />

- x1(t) has a frequency of 3 kHz and a maximum amplitude of 0.8.<br />

- x2(t) also has a maximum amplitude of 0.8 and its frequency f2 belongs to<br />

the interval: 7 kHz < f2 < 10 kHz.<br />

- x3(t) is 50 Hz noise, with a maximum amplitude of 0.16.<br />

- x4(t) has a frequency f4 that belongs to the interval 14kHz < f4 < 20kHz.<br />

The maximum amplitude of x4(t) is 0.16.<br />

ITVP4 – Gruppe 5 Side 40 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Functional requirements:<br />

Ideally y1(t) must be equal to x1(t) and y2(t) must be equal to x2(t), but because<br />

of noise, interference and non-ideal digital filters, this cannot be realized.<br />

- y1(t) contains some components originating from x2(t), x3(t) and x4(t).<br />

The amplitude of these ”error components” (at the respective frequencies)<br />

must all be less than –46 dB relative to 0.8. Similar y2(t) contains some<br />

components originating from x1(t), x3(t) and x4(t). The amplitude of these<br />

components must all be less than –46 dB relative to 0.8.<br />

- y1(t) and y2(t) must be in steady-state after less than 3 ms. In steady-state<br />

the amplitude of the 3kHz component of y1(t) must not deviate more than<br />

2% from the amplitudes of x1(t). Similar the amplitude of the 7-10kHz<br />

component of y2(t) must not deviate more than 2% from the amplitude of<br />

x2(t).<br />

In your report and at the examination we expect you to:<br />

- Discuss and choose a sampling frequency that is in agreement with the<br />

ADSP-BF533 EZ-KIT Lite Evaluation Board.<br />

- Analyse the problem statement and make qualified decisions on what<br />

kind of digital filters to use (lowpass, highpass, e.g.)<br />

- Propose two possible system models - one that is based on FIR filters (FIR<br />

model) and one that is based on IIR filters (IIR model)<br />

- For BOTH models (FIR model and IIR model):<br />

- Specify the individual filter requirements (bands, ripple,<br />

atenuation, e.g.) and illustrate them graphically.<br />

ITVP4 – Gruppe 5 Side 41 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

- Calculate the filter coefficients using MATLAB. Comment briefly<br />

on the calculation method you choose.<br />

- Analyse the filters in order to characterize stability, frequency<br />

response, transient- and stationary response and other issues that<br />

might be relevant.<br />

- Create a complete MATLAB simulation in order to show that you<br />

meet the functional requirements<br />

- Compare the two models and how well they fulfil the<br />

requirements.<br />

- For ONE of the models 5 :<br />

- Implement the model using the EZ-KIT Lite Evaluation Board.<br />

- Evaluate the implementation in order to show that you meet the<br />

functional requirements.<br />

5 Because of the limited time available some of you might prefer to implement the FIR model.<br />

ITVP4 – Gruppe 5 Side 42 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Time schedule:<br />

The course assignment is based on two whole weeks of work. Here is a rough<br />

schedule:<br />

Lectures will be given in the auditorium X1.80 to both classes ECD21 and ITD22.<br />

Lecturers are Hans Ellegaard (hel@ihk.dk) and Bent Jørgensen (bej@ihk.dk).<br />

ITVP4 – Gruppe 5 Side 43 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Supervision:<br />

A report must be handed in (2 copies) not later than Monday 6th of June at 12<br />

noon. A CD-ROM must be enclosed. The CD-ROM must contain the report,<br />

MATLAB and DSP source code (a VisualDSP++ project).<br />

The report will be the starting point at the DSM2 group examination.<br />

We recommend that you use the EIT Department report template, which may be<br />

found on CampusNet. The template is particularly well suited for this project,<br />

because it supports the different phases: Problem analysis, requirement<br />

specification, design, implementation and test.<br />

Experiments that form the basis for important conclusions must be presented in<br />

the report.<br />

We recommend that you plan to use the last two days to assemble and critically<br />

review the report.<br />

When you write the report, keep in mind that DSM2 is a mathematics and signal<br />

processing course and not a programming course. MATLAB and<br />

C-programming are both means that enable you to learn the main DSM2<br />

objectives.<br />

ITVP4 – Gruppe 5 Side 44 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Literature and other issues:<br />

MATLAB help on filter design, FDAtool, e.g.<br />

>> doc signal<br />

Designing FIR filters using MATLAB (Bent Jørgensen, June 2004, on<br />

CampusNet).<br />

VisualDSP++ software and documentation may be downloaded from:<br />

htp://www.ihk.dk<br />

Latest versions of manuals may also be downloaded from:<br />

htp://www.analog.com/en/rList/0,758__900,00.html<br />

When you have completed the VisualDSP++ installation and eventually launch<br />

the application a valid license must be installed. Use serial #: TST-178-511-<br />

17041924-85 which will give you a 255-day license.<br />

ITVP4 – Gruppe 5 Side 45 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Bilag 2. Alternative filterkrav<br />

dB<br />

0,17/2<br />

0<br />

-0,17/2<br />

-32<br />

-46<br />

dB<br />

0,17/2<br />

0<br />

-0,17/2<br />

-32<br />

-46<br />

Stopband<br />

Transision<br />

band<br />

50 3000 5000 7000 10000 14000<br />

Passband<br />

Højpass-filter, som lader frekvenser over 3000 Hz komme igennem<br />

Passband<br />

Transisionband<br />

Fpass = 3000 Hz<br />

Fstop = 50 Hz<br />

Rpass = 0,17 dB<br />

Rstop = 32 dB<br />

Lavpass-filter, som lader frekvenser under 3000 Hz komme igennem<br />

Stopband<br />

Fpass = 3000 Hz<br />

Fstop = 7000 Hz<br />

Rpass = 0,17 dB<br />

Rstop = 46 dB<br />

50 3000 5000 7000 10000 14000<br />

ITVP4 – Gruppe 5 Side 46 af 53<br />

Hz<br />

Hz


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

dB<br />

0,17/2<br />

0<br />

-0,17/2<br />

-32<br />

-46<br />

dB<br />

0,17/2<br />

0<br />

-0,17/2<br />

-32<br />

-46<br />

Stopband<br />

Højpass-filter, som lader frekvenser over 7000 Hz komme igennem<br />

Transisionband<br />

50 3000 5000 7000 10000 14000<br />

Passband<br />

Fpass = 10000 Hz<br />

Fstop = 14000 Hz<br />

Rpass = 0,17 dB<br />

Rstop = 32 dB<br />

Passband<br />

Fpass = 7000 Hz<br />

Fstop = 3000 Hz<br />

Rpass = 0,17 dB<br />

Rstop = 46 dB<br />

Lavpass-filter, som lader frekvenser under 10000 Hz komme igennem<br />

Transisionband<br />

50 3000 5000 7000 10000 14000<br />

Stopband<br />

ITVP4 – Gruppe 5 Side 47 af 53<br />

Hz<br />

Hz


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Bilag 3. Simuleringer af Lav- og Højpas Chebyschev2 filter<br />

dB<br />

dB<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

Amplitude<br />

0<br />

-5<br />

-10<br />

-15<br />

-20<br />

-25<br />

-30<br />

lowPass 6 order Chebyscev2 filter<br />

0.95 1 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45<br />

x 10 4<br />

Hz<br />

lowPass 6 order Chebyscev2 filter<br />

7000 7500 8000 8500<br />

Hz<br />

9000 9500 10000<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54<br />

x 10 4<br />

Hz<br />

ITVP4 – Gruppe 5 Side 48 af 53<br />

dB<br />

-30.5<br />

-31<br />

-31.5<br />

-32<br />

-32.5<br />

-33<br />

-33.5<br />

-34<br />

lowPass 6 order Chebyscev2 filter<br />

impulse response of lowPass 6 order Chebyscev2 filter<br />

-0.2<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

millisekunder


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

dB<br />

dB<br />

-45.75<br />

-45.8<br />

-45.85<br />

-45.9<br />

-45.95<br />

-46<br />

-46.05<br />

-46.1<br />

-46.15<br />

0<br />

-5<br />

-10<br />

-15<br />

-20<br />

-25<br />

-30<br />

-35<br />

-40<br />

-45<br />

-50<br />

highPass 5 orderChebyscev2 filter<br />

2500 3000 3500 4000 4500 5000<br />

Hz<br />

5500 6000 6500 7000 7500<br />

highPass 5 orderChebyscev2 filter<br />

2920 2940 2960 2980<br />

Hz<br />

3000 3020 3040<br />

Amplitude<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

7000 7500 8000 8500<br />

Hz<br />

9000 9500 10000<br />

ITVP4 – Gruppe 5 Side 49 af 53<br />

dB<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

highPass 5 orderChebyscev2 filter<br />

impulse response of highPass 5 order Chebyscev2 filter<br />

-0.8<br />

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />

millisekunder


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Bilag 4. Simuleringsdata<br />

Her er kode til generering af filterkoefficienter, samt indgangssignal til<br />

simulering og simulerings data.<br />

MATLAB kode til generering af filter koefficienter<br />

Fs = 48000;<br />

N = 50; % Order<br />

Fc1 = 1475; % First Cutoff Frequency<br />

Fc2 = 5000; % Second Cutoff Frequency<br />

flag = 'noscale'; % Sampling Flag<br />

% Create the window vector for the design algorithm.<br />

win = hamming(N+1);<br />

% Calculate the coefficients using the FIR1 function.<br />

b = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);<br />

gen_C_header(b,'coef.h');<br />

MATLAB kode til genering af test signal<br />

fs = 48000;<br />

toneLength = [0:ceil(0.01*fs)];<br />

xt = .8 * cos( 2*pi*10000.*(toneLength./fs) );<br />

gen_C_header(xt,'signal.h');<br />

Nedenstående tabel viser de første 75 værdier af foldningen, ved 75 resultater har<br />

man været 1½ gange gennem filteret. Det skal nævnes at MATLAB har lavet<br />

tallene i frac16 format mens der i visualDSP++ er regnet med tallene i frac32<br />

format. Derfor har tallene forskellig længde og kan variere i de mindst betydende<br />

cifre. Det fremgår dog af tabellen at simuleringen fungerer.<br />

gen_C_header( conv( b, xt) ) VisualDSP++ hukommelses indhold<br />

0x000A, 0x0020, 0x0034, 0x003D,<br />

0x0034, 0x0017, 0xFFE5, 0xFFA7,<br />

0xFF7E, 0xFF91, 0xFFE9, 0x005A,<br />

0x0094, 0x004A, 0xFF5C, 0xFDE6,<br />

0xFC4C, 0xFB26, 0xFB1B, 0xFC93,<br />

0xFF74, 0x0316, 0x067F, 0x08B7,<br />

0x091B, 0x0788, 0x0471, 0x00BA,<br />

0xFD72, 0xFB68, 0xFAE8, 0xFBB5,<br />

0xFD3D, 0xFEDC, 0x0013, 0x009E,<br />

0x0087, 0x0019, 0xFFAD, 0xFF7E,<br />

0xFF91, 0xFFC7, 0x0002, 0x002E,<br />

0x0043, 0x003D, 0x0025, 0x000D,<br />

0x0003, 0x0004, 0x0002, 0xFFFB,<br />

0xFFFC, 0x0003, 0x0006, 0x0000,<br />

0xFFFA, 0xFFFD, 0x0004, 0x0005,<br />

0xFFFE, 0xFFFA, 0xFFFE, 0x0005,<br />

0x0004, 0xFFFD, 0xFFFA, 0x0000,<br />

0x0006, 0x0003, 0xFFFC, 0xFFFB,<br />

0x0002, 0x0006, 0x0002…<br />

0x000a665c, 0x001f7dca, 0x00340c00, 0x003cc6ea,<br />

0x003483dc, 0x0016fb64, 0xffe41200, 0xffa6aaae,<br />

0xff7e789e, 0xff912a68, 0xffe868fe, 0x0059a428,<br />

0x0093fb66, 0x004a91c6, 0xff5c4a96, 0xfde62184,<br />

0xfc4b7eb6, 0xfb262124, 0xfb1b5e26, 0xfc934a84,<br />

0xff73d1a8, 0x0316b296, 0x067fa746, 0x08b74830,<br />

0x0919bcb4, 0x07881cac, 0x047168f8, 0x00baf9e8,<br />

0xfd71ed22, 0xfb677320, 0xfae76874, 0xfbb4bd34,<br />

0xfd3ca83e, 0xfedc8d72, 0x0012ec92, 0x009d2e08,<br />

0x0086e8b6, 0x001858a2, 0xffacd122, 0xff7e76dc,<br />

0xff913262, 0xffc71872, 0x0001869e, 0x002e224a,<br />

0x00432250, 0x003cc216, 0x00251424, 0x000d8456,<br />

0x00032700, 0x000330e2, 0x0001999c, 0xfffb185c,<br />

0xfffbfec4, 0x0002f0fe, 0x00059ad8, 0x00000000,<br />

0xfffa6528, 0xfffd0f02, 0x0004013c, 0x0004e7a4,<br />

0xfffe6664, 0xfffa1e04, 0xfffe6664, 0x0004e7a4,<br />

0x0004013c, 0xfffd0f02, 0xfffa6528, 0x00000000,<br />

0x00059ad8, 0x0002f0fe, 0xfffbfec4, 0xfffb185c,<br />

0x0001999c, 0x0005e1fc, 0x0001999c, 0xfffb185c<br />

ITVP4 – Gruppe 5 Side 50 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Bilag 5. Kodestruktur for buffer og foldning<br />

Det er nødvendigt at gemme de indkomne x værdier i en 'delay line' da de indgår<br />

i foldningen. Dete gøres i en cirkulær buffer som vist nedenfor.<br />

x<br />

Den cirkulære buffer skal have samme længde som filteret, dermed kan man ved<br />

at bruge den cirkulærebuffers pointer som offset direkte gange med<br />

filterkoefficienterne. Figuren nedenfor viser hvilke x værdier der skal ganges<br />

med filterkoefficienterne.<br />

x<br />

x<br />

x<br />

x[-2]<br />

x[-1]<br />

x[0]<br />

0<br />

x[0]<br />

x[0]<br />

0<br />

0<br />

0<br />

x[0]<br />

x[-3]<br />

x[-2]<br />

x[-1]<br />

x[-3]<br />

x[-2]<br />

x[-1]<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

b[2]<br />

b[1]<br />

b[0]<br />

b[3]<br />

b[0]<br />

b[3]<br />

b[2]<br />

b[1]<br />

x<br />

x<br />

x[-1]<br />

x[0]<br />

0<br />

0<br />

x[-1]<br />

x[0]<br />

x[-3]<br />

x[-2]<br />

x<br />

x<br />

ITVP4 – Gruppe 5 Side 51 af 53<br />

x<br />

x<br />

x[-3]<br />

x[-2]<br />

x[-1]<br />

x[0]<br />

x[-1]<br />

x[0]<br />

x[-3]<br />

x[-2]<br />

x[-2]<br />

x[-1]<br />

x[0]<br />

0<br />

x[-2]<br />

x[-1]<br />

x[0]<br />

x[-3]<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

b[3]<br />

b[2]<br />

b[1]<br />

b[0]<br />

b[1]<br />

b[0]<br />

b[3]<br />

* b[2]<br />

x<br />

x<br />

x[-3]<br />

x[-2]<br />

x[-1]<br />

x[0]<br />

x[-3]<br />

x[-2]<br />

x[-1]<br />

x[0]


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

Bilag 6. Kildekode for implementering<br />

Koden er implementeret i Analog Devices eksempelkode 'talk-through' i<br />

process_data funktionen. Hardware initialisering foregår i andre filer som der<br />

ikke vil blive diskuteret yderlige her.<br />

Proces_data.c<br />

#include "Talkthrough.h"<br />

#include <br />

#include <br />

//Filtre og delay liner<br />

////////////////////////////////////////////<br />

#include "ccblkfn.h"<br />

#include <br />

// filter coeffecients for 2.99-3.01 khZ bandpass filter<br />

#define N_filter3000 41<br />

const fract16 filter3000[] = {0x0003, 0x000C, 0x0024, 0x004E, 0x0086, 0x00BB, 0x00C6, 0x0076,<br />

0xFF9B, 0xFE1D, 0xFC1B, 0xF9F0, 0xF833, 0xF78F, 0xF895, 0xFB7B, 0xFFFD, 0x0554, 0x0A66, 0x0E07,<br />

0x0F59, 0x0E07, 0x0A66, 0x0554, 0xFFFD, 0xFB7B, 0xF895, 0xF78F, 0xF833, 0xF9F0, 0xFC1B, 0xFE1D,<br />

0xFF9B, 0x0076, 0x00C6, 0x00BB, 0x0086, 0x004E, 0x0024, 0x000C, 0x0003};<br />

//delay line for 3000Hz filter<br />

fract16 delayLine3000[N_filter3000];<br />

int delayOffset3000 = 0;<br />

// filter coeffecients for 7-10 khZ bandpass filter<br />

#define N_filter7_10 41<br />

const fract16 filter7_10[] = {0xFFDC, 0xFFC0, 0x0012, 0x0093, 0x006D, 0xFFD4, 0x0015, 0x0079,<br />

0xFEB7, 0xFCA6, 0xFEE6, 0x0334, 0x0295, 0xFFFE, 0x0474, 0x08E0, 0xFC39, 0xE79B, 0xEC86, 0x0F04,<br />

0x2444, 0x0F04, 0xEC86, 0xE79B, 0xFC39, 0x08E0, 0x0474, 0xFFFE, 0x0295, 0x0334, 0xFEE6, 0xFCA6,<br />

0xFEB7, 0x0079, 0x0015, 0xFFD4, 0x006D, 0x0093, 0x0012, 0xFFC0, 0xFFDC};<br />

//delay line for 7-10kHz filter<br />

fract16 delayLine7_10[N_filter7_10];<br />

int delayOffset7_10 = 0;<br />

/**<br />

* Convolution of delayLine and filter<br />

*<br />

* _x is a delayline of _n elementens<br />

* the delayLine will contain data in the format<br />

* delayLine[] = { x0, x1, x2, x3, x4, x5 }<br />

* ^ _xOffset should be 0 as the next sample should be placed at<br />

* location 0 in the array<br />

*<br />

* after reciving 2 more samples the delayline would contain data as following:<br />

* delayLine[] = { x6, x7, x2, x3, x4, x5 }<br />

* ^ _xOffset should be 2<br />

*<br />

* _h is the filter coeffecients<br />

*<br />

*/<br />

inline fract32 runFIR(const fract16 _x[], const fract16 _h[], const int _n, const int _xOffset) {<br />

fract32 y = 0;<br />

int l = 0;<br />

//sum delayline with filter, starting with oldest value x[old] -> x[_n-1]<br />

for (l = 0; l < _n; l++) {<br />

fract32 temp = mult_fr1x32(_x [ (_xOffset + l) % _n ] ,_h[_n - l]);<br />

y = add_fr1x32( temp, y);<br />

}<br />

return y;<br />

}<br />

//--------------------------------------------------------------------------//<br />

// Function: Process_Data()<br />

//<br />

// Description: This function is called from inside the SPORT0 ISR every //<br />

// time a complete audio frame has been received. The new //<br />

ITVP4 – Gruppe 5 Side 52 af 53


6. juni 2005<br />

<strong>Digitale</strong> <strong>filtre</strong><br />

// input samples can be found in the variables iChannel0LeftIn,//<br />

// iChannel0RightIn, iChannel1LeftIn and iChannel1RightIn //<br />

// respectively. The processed data should be stored in //<br />

// iChannel0LeftOut, iChannel0RightOut, iChannel1LeftOut, //<br />

// iChannel1RightOut, iChannel2LeftOut and iChannel2RightOut //<br />

// respectively.<br />

//------------------------------------------------------------------//<br />

void Process_Data(void) {<br />

}<br />

//add new sample at rounded buffers offset, only extract 16 most significant bits<br />

delayLine3000[delayOffset3000] = extract_h(iChannel0RightIn);<br />

//calculate new output value<br />

iChannel0RightOut = runFIR(delayLine3000, filter3000, N_filter3000, delayOffset3000);<br />

//increase counter position, wrap arround if necesary<br />

delayOffset3000++;<br />

delayOffset3000 = delayOffset3000 % N_filter3000;<br />

//add new sample at rounded buffers offset, only extract 16 most significant bits<br />

delayLine7_10[delayOffset7_10] = extract_h(iChannel0LeftIn);<br />

//calculate new output value<br />

iChannel0LeftOut = runFIR(delayLine7_10, filter7_10, N_filter7_10, delayOffset7_10);<br />

//increase counter position, wrap arround if necesary<br />

delayOffset7_10++;<br />

delayOffset7_10 = delayOffset7_10 % N_filter7_10;<br />

ITVP4 – Gruppe 5 Side 53 af 53

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!