Institutionen för data- och elektroteknik 1999-11-21 Inledning Denna laboration avser att ge illustration av och inblick i ett antal områden för digital signalbehandling. Vi kommer att studera exempel från system med flera olika samplingsfrekvenser effekter av avrundning och trunkering adaptiv signalbehandling wavelets Uppgifterna är av undersökande karaktär, dvs vi studerar ett antal effekter utan att analysera dom allt för djupt. Utöver själva laborationsuppgifterna så kommer några applikationer att demonstreras med hjälp av en signalprocessor. Laborationsuppgifternas applikationer är i de flesta fall skapade med hjälp av programvaran LabVIEW från National Instruments och i Borland C++ Builder. Applikationerna finns i biblioteket G:\ELETRO\E97\DIG_SIGN.FK\LAB_5 och alla LabVIEW-applikationerna startas från ett menyprogram som startas genom dubbelklick på filen LAB5.LLB. Några detaljerade instruktioner kommer inte att ges till uppgifterna utan ni uppmuntras att själva undersöka applikationernas möjligheter. Antalet uppgifter är medvetet stort för att ge en överblick över olika signalbehandlingsaspekter. Därför är det mycket möjligt att ni inte hinner CHALMERS LINDHOLMEN Sida 1 Institutionen för data- och elektroteknik Sven Knutsson Box 8873 402 72 Göteborg Besöksdress: Hörselgången 4 Telefon: 31-772 57 27 Fax: 31-772 57 31 E-mail: svenk@chl.chalmers.se Web: www.chl.chalmers.se/ svenk
med alla uppgifter. Se då till att välja bort någon av de uppgifter som är snarlika för att därigenom täcka ett större område. Laborationsuppgifter System med flera samplingsfrekvenser Dessa applikationer finns i LabVIEW-undermenyn Multirate. Deltamodulator Här skall vi studera en deltamodulator och hur förändring av samplingsfrekvens och steg kommer att påverka resultatet. Öppna applikationen Deltamodulering. Behåll först steget och studera vad som händer då samplingsfrekvensen varieras Övergå till att vid fast samplingsfrekvens och studera hur stegets storlek påverkar resultatet Försök att hitta någon bra kombination av samplingsfrekvens och steg så att modulatorn hinner med signalen samtidigt som stegen inte blir så stora. Lägg märke till att datamängden är direkt proportionell mot samplingsfrekvensen varför denna om möjligt bör hållas låg Decimering av samplingsfrekvensen i flera steg Här kan vi via C-programmet DECIMATE.EXE räkna ut alla lämpliga sätt att i flera steg dela ner en samplingsfrekvens upp till det antal steg som man anger i programmet. Gradtalet för nödvändigt equrippelfilter beräknas för de olika stegen och effektivitetsfaktorerna MPS och TSR som anger antalet multiplikationer per sekund respektive antal nödvändiga minnespositioner beräknas. Mata in ett antal start- och slutfrekvenser och studera vilken vinst man gör genom att dela upp decimeringen i flera steg. Lägg märke till att största vinsten i MPS inte nödvändigtvis ligger vid samma uppdelning som största vinsten i TSR. Effekter av samplingsfrekvensbyte Här skall vi studera vad som händer då vi byter samplingsfrekvens. Applikationen kan användas med en simulerad signal eller tillsammans med en samplad signal. Den ursprungliga samplade signalen och den signal som har konverterats till en annan samplingsfrekvens kan lagras till fil och spelas upp med hjälp av en annan applikation. Sida 2
Signal för inspelning tas lämpligen från datorns CD-spelare varför ni gärna kan ta med önskat material själva. Byte av samplingsfrekvens Starta applikationen Inspelning av multiratesignal. Ställ in interpoleringsfaktorn I och decimeringsfaktorn D för att ge lämplig faktor R för byte av samplingsfrekvens. Prova både höjning och sänkning av samplingsfrekvensen. Använd inte så stora tal. Använd först den simulerade insignalen och studera hur den ser ut i tidsoch frekvensplanet i olika delar av systemet. Prova att i stället använda en ljudsignal från CD-spelaren. Tyvärr klarar inte systemet buffrar större än 64 kb varför vi bara kan hantera korta signalavsnitt. Lägre samplingsfrekvens ger naurligtvis längre sekvenser men systemet innehåller inget antivikningsfilter varför vi kommer att få en del falska, vikta signaler. Prova inverkan av låg samplingsfrekvens. Lagra en eller några signaler till fil. Uppspelning av signal Starta applikationen Uppspelning av multiratesignal och läs in er signal. Vi kan välja att spela upp den ursprungliga samplade signalen eller den signal som har fått ny samplingsfrekvens. Den samplingsfrekvens och de interpolerings- och decimeringsfaktorer som användes vid inspelningen läses också in från filen och de blir synliga i applikationens fönster. För lyssning kan utsignalen från I/O-kortet anslutas till ljudkortets linjeingång varefter en hörlur ansluts till ljudkortets hörlursutgång. Ställ in önskad samplingsfrekvens. Prova att avvika från den ursprungliga samplingsfrekvensen. Lägg märke till att den signal som har fått ny samplingsfrekvens via interpolering eller decimering skall spelas upp med denna nya samplingsfrekvens för att låta korrekt. Applikationen använder en buffert för att läsa samplen och valen av buffert och samplingsfrekvens kan bara ske då en ny buffert börjar läsas och skickas ut varför byte av buffert och samplingsfrekvens inte sker omedelbart utan det dröjer lite grann. Det samma gäller då applikationen skall stoppas. Applikationen måste stoppas med STOP-knappen för att uppspelningen skall avslutas korrekt. Effekter av avrundning och trunkering Här skall vi studera effekten av avrundning, trunkering och wrap around i beräkningar. I applikationerna kan vi välja fix- eller flyttal och då fixtal är valt kan vi välja ordlängd, trunkering eller avrundning samt wrap around eller bottning. Applikationerna finns i menyn Talrepresentation. Vi inleder med en enklare illustration. Möjliga pollägen Gör menyvalet Möjliga polplaceringar. Här kan vi studera vilka möjliga polpositioner som finns i första kvaderanten om vi realiserar ett andra ordningens system med Sida 3
olika ordlängd och med två olika typer av realisering. I de andra kvaderanterna har vi spegelbilder av vad som händer i första kvaderanten varför dessa kvaderanter inte visas. Prova att ändra ordlängden. Studera vilka delar av polplanet som påverkas mest och hur resultaten för de två realiseringarna skiljer sig åt. FIR-filter Gör menyvalet FIR-filter. Här kan vi dimensionera ett FIR-filter via invers fouriertransform och studera inverkan av de ovan angivna effekterna. Vi kan välja filterlängd och om filtret skall vara av låg- eller högpasstyp. Prova att dimensionera några olika filter och studera hur de ser ut då vi använder flyttal respektive fixtal Studera i fixtalsfallet vad som händer då ordlängden varieras Studera vilken inverkan vi får av om vi använder avrundning eller trunkering Studera eventuell effekt av wrap around Alternativ uppgift Ni kan också använda C-programmet FILTER.EXE för att studera inverkan av flyttal och fixtal med olika ordlängd. Här ingår inte inverkan av avrundning/trunkering och bottning/wrap around men i stället kan man dimensionera fler filtertyper, nämligen lågpass-, högpass-, bandpass- och bandspärrfilter. Gör menyvalet FIR-filter i programskalet. IIR-filter Gör menyvalet IIR-filter i LabVIEW-skalet Applikationen är snarlik föregående uppgift men här studerar vi i stället IIR-filter av gradtal två. Filtrets filterkonstanter och förstärkning kan anges. De konstanter som anges är differensekvationens konstanter inte överföringsfunktionens konstanter Skapa några olika filter, t ex notchfilter och smala bandpassfilter och gör samma undersökningar som i föregående uppgift. Alternativ uppgift Även här finns en alternativ applikation skriven i C. Applikationen illustrerar dimensionering av smala bandpass- och notchfilter och finns i samma programskal som den alternativa uppgiften ovan och startas med menyvalet Smala bandpass- och notchfilter. Ditter Vid låga signalamplituder (i samma storleksordning som upplösningen) kommer A/Domvandling att ge upphov till olinjär distorsion. Problemet kan minskas med hjälp av så kallat ditter som vi skall studera i denna applikation. Sida 4
Starta applikationen A/D-omvandling med ditter. Lägg märke till att vi inte får någon rärelse i bilden då vi inte använder ditter. Detta beror på att vi då inte har någon förändring i data utan beräkningen ger hela tiden samma resultat. Studera signaler och deras spektra med och utan ditter Studera signalstyrkans inverkan Studera hur dittrets storlek påverkar resultatet Undersök om valet av avrundning eller trunkering påverkar reultatet Adaptiva filter Här skall vi studera ett antal applikationer med adaptiva filter, dvs filter som anpassar sina egenskaper efter situationen. Studera i samtliga fall hur filterlängd och adaptionsfaktor µ inverkar på resultatet. Applikationerna finns i undermenyn Adaptiv filtrering. Interferensundertryckning Här skall vi studera ett system för att dämpa smalbandiga störningar i en bredbandig signal. Applikationen använder en ren sinus som störning och en brussignal som bredbandig signal. De två signalernas respektive storlekar kan ändras. Gör menyvalet Interferensundertryckning. Studera inverkan av olika styrkeförhållande mellan önskad och icke önskad signal. Resultatet blir inte så bra men lämpligt konstantval ger i alla fall ett förbättrat resultat. Självjusterande filter Här skall vi i stället studera ett system som försöker filtrera fram en smalbandig signal ur en bredbandig störning. Applikationen är snarlik föregående applikation men vi väljer att ta till vara en annan signal. Gör menyvalet Självjusterande filter. Upprepa studierna från föregående uppgift.inte heller här blir resultatet så bra. Systemidentifiering Här skall vi studera ett system för att efterlikna ett okänt systems överföringsfunktion. Även här använder vi ett filter för vilket vi kan ange transversalkonstanterna och de rekursiva konstanterna för att simulera systemet. Gör menyvalet Systemidentifiering. Upprepa föregående uppgifts undersökningar. Systemequalisering Här skall vi studera ett system som korrigerar för en överföringskanals frekvensegenskaper för att få ett passband som släpper igenom alla frekvenser lika starkt. Vi efterliknar kanalegenskaperna genom att lägga in lämpliga transversalkonstanter och rekursiva konstanter hos ett filter som får simulera kanalen.. Sida 5
Starta applikationen Systemequalisering. Studera några olika överföringsfunktioner för kanalen. Undersök om anpassningen påverkas av att kurvan är starkt varierande, t ex om den har kraftiga, smala toppar och dalar. Wavelets Wavelets används för samtidig signalanalys i tids- och frekvensplanet ovh för att reducera datamängden vid lagring och överföring fråmst av ljud och bilder. Applikationerna ligger i undermenyn Wavelets. Endimensionell wavelets Gör mennyvalet 1 dim wavelets. Här kan vi använda simulerade signaler eller hämta in en signal från I/O-kortet eller ljudkortet och analysera denna via wavelets. Applikationen visar även FFT-spektrat (belopp) för signalen. Använd insignalen Simulerad 3 ton för att jämföra FFT- och waveletsresultatet. Lägg märke till att FFT-analysen inte ger någon information om när under samplingsintervallet de olika frekvenserna förekommer Upprepa med signalen Simulerat frekvenssvep. Lägg märke till att vi inte heller här får någon tidsinformation Ta in lite olika signaler från signalgeneratorn och studera resultatet vid olika antal frekvensband (max sex stycken) i waveletsuppdelningen Prova också att ta in en signal från CD-spelaren Grundläggande tvådimensionell wavelets Här kan vi studera hur en waveletsuppdelning av en bild och efterföljande återskapande av bilden sker. Applikationen gör en tvådimensionell waveletsuppdelning till angiven nivå (max 6) och bygger sedan upp bilden igen steg för steg. Applikationen finns under menyvalet Animerad 2 dim wavelets och bilden Lena.dat läses in för analys. Bitreducering av tvådimensionell wavelets Här använder vi samma bild som ovan för waveletsanalysen och begränsar datamängden genom att minska antalet bitar lägga in en tröskel som ger den lägsta signalstyrka vi tar med ange önskad kompressionsgrad, dvs hur stor del av bitarna som skall vara kvar. Applikationen beräknar då nödvändig tröskelnivå Sida 6
Applikationen finns under menyvalet 2 dim wavelets med bitreduktion. Prova att ändra antalet bitar och tröskelnivån och studera den resulterande bilden då vi behandlar ursprungsbilden direkt och då vi i stället behandlar den waveletsuppdelade signalen. Lägg märke till vad som händer med datamängden i de olika fallen. Manipulering av tvådimensionell wavelets Här gör en en nivås waveletsuppdelning av en bild och studerar cvad som händer då vi ändrar bilden genom att förändra de olika delbilderna var för sig. Applikationen finns under menyvalet 2 dim wavelets med olinjär korrektion. Prova att göra representationen olinjär och lägg in tröskelnivåer. Demonstrationer Ett antal signalprocessorapplikationer kommer att demonstreras. Applikationerna beskrivs vid demonstrationen varför vi här nöjer oss med en kommenterad uppräkning av de demonstrationer som kan genomföras Variation av samplingfrekvens och ordlängd. I ett system som samplar en signal och skickar ut den igen opåverkad kan samplingsfrekvens och ordlängd varieras Effekter av vikning. Vi samplar en signal och decimerar samplingfrekvensen utan att använda antivikningsfilter FIR-eko. Här adderas en samplad signal och en fördröjd variant av samma signal ihop för att bilda ett eko. Fördröjningstid och styrka hos den fördröjda signalen kan varieras IIR-eko. Applikationen liknar föregående applikation men här är det en fördröjd variant av utsignalen som adderas till den samplade insignalen. Även här kan fördröjningstid och styrka hos den fördröjda signalen varieras Aktivt delningsfilter. En demonstration av resultatet från laboration 3 Adaptivt notchfilter. Här har vi ett adaptivt filter som dynamiskt försöker att filtrera bort en signal (en ton) ur en musiksignal från CD-spelaren. Filtret följer med om tonens frekvens ändras. Adaptionsfaktorn µ kan varieras. Filtret kan låsas så att adaptionen avslutas och vi kan undersöka egenskaperna hos det skapade filtret samt visa att filtret inte längre följer med då tonens frekvens ändras Sida 7