Institutionen för data- och elektroteknik 2002-02-11 1 Inledning Denna laboration syftar till att illustrera ett antal grundbegrepp inom digital signalbehandling samt att närmare studera frekvensanalys via DFT. Laborationen innehåller ett antal uppgifter som är avpassade för detta mål. För att ytterligare öka förståelsen så är det mycket lämpligt att prova egna varianter av uppgifterna, t ex att mata in andra differensekvationer eller mäta på andra signaler än som anges i uppgifterna. Ta med aktuella kompendier till laborationen så att ni kan jämföra med teorin och även mata in värden från exempel i boken. 2 Laborationsutrustning 2.1 Programvara Samtliga laborationsuppgifter körs på dator i programvaran LabVIEW. Denna programvara är i första hand avsedd för mätvärdesinsamling, signalanalys och styrning, men den passar också utmärkt för att illustrera begrepp inom digital signalbehandling. De program som skall användas ligger som G:\DATA\D00\DIG_SIGN\LABBAR\LAB_1\LAB_1.LLB och LabVIEW startas enklast genom att navigera till ovanstående bibliotek med hjälp av Utforskaren och dubbelklicka på LAB_1.LLB. Menyprogrammet Grundbegrepp och frekvensanalys.vi, från vilket de olika applikationerna köres, startas då upp. Till varje applikation finns en hjälpfil på pdf-format som ger information om handhavandet. 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
2.2 Hårdvara Insignal till de olika applikationerna får vi från funktionsgeneratorn Hewlett-Packard 33120A som finns på labplatserna. Signalen från funktionsgeneratorn ansluts till ett in/utkort i datorn via terminalen AI0 på den kopplingsbox som finns på labbänken. Signalen ansluts också till ett digitalt oscilloskop för att vi skall kunna se vad vi skickar in i applikationerna. Funktionsgeneratorn ansluts dessutom till datorn via en GPIB-kabel som gör att funktionsgeneratorn kan styras från datorn. 3 Laborationsuppgifter Nedan finns både mätuppgifter där vi mäter på riktiga signaler och uppgifter där vi simulerar signalerna. Eftersom de simulerande uppgifterna kan köras i datas - rande datorapplikationerna så bör ni här koncentrera er på mätningarna på verkliga signaler, dvs gör i första hand uppgifterna 3.1.2 och 3.5.2.1-3. 3.1 Sampling och vikning 3.1.1 Bakgrund Uppgiften avser att illustrera vad som händer då en analog signal samplas, tas in i datorn och ritas upp. Vi skall se vad som händer då samplingsvillkoret uppfylls och vad 3.1.2 Uppgift Välj applikationen Vikning från menyprogrammet.vi. Ställ in samplingsfrekvensen 10 khz. Ställ in en amplitud på c:a 1 volt på funktionsgeneratorn a) Svep frekvensen från funktionsgeneratorn i intervallet 100 Hz - 30 khz och studera den resulterande grafen i programmet. Svep lämpligen i steg om 100 Hz. Beskriv vad som händer. b) Bestäm den visade signalens frekvens då infrekvensen är 1 khz, 9 khz, 11 khz och 19 khz. c) Ställ in det digitala oscilloskopet för samplingsfrekvensen 10 khz och studera samma förlopp som i a) och b). För oscilloskopet gäller a beroende av inställt värde hos tidbasen (tidsskalen). Aktuell samplingsfrekvens syns i oscilloskopskärmens övre vänstra hörn. sida 2
3.2 Impuls- och stegsvar 3.2.1 Bakgrund Vi skall här beräkna impuls- och stegsvaret för ett system som beskrivs av en differensekvation. Resultatet visas som en array och i en graf. 3.2.2 Uppgift Välj applikationen Impuls-, steg- och insignalsvar, inarrayer från menyprogrammet. I arrayen Transversalkonstanter matas x-konstanterna in i ordningen x [ n], x [ n 1] osv medan y-konstanterna matas in i arrayen Rekursiva konstanter i ordningen y [ n 1], y [ n 2] osv. Lägg märke till att de två arrayerna startar med olika index ( n respektive n 1). Via en omkopplare bestämmer vi om impuls- eller stegsvar skall beräknas. a) Lös uppgift 3.11 i övningskompendiet, kontrollera med din egen lösning. b) Lös uppgift 3.12 i övningskompendiet c) Lös uppgift 3.14 i övningskompendiet 3.3 Faltning 3.3.1 Bakgrund Vi skall studera faltning, dvs ett systems utsignal då vi ansluter en godtycklig insignal. Systemet beskrivs av sitt impulssvar. 3.3.2 Uppgift Välj Faltning från menyprogrammet. Insignalen matas in i arrayen Insignal i ordningen x [ 0], x [ 1] osv medan systemets impulssvar matas in i arrayen Systemets impulssvar i ordningen h [ 0], h [ 1] osv. Vid start befinner sig systemet i vid tidpunkten n = 1 och vi kan sedan låta programmet beräkna faltningen, dvs utsignalen, tidpunkt för tidpunkt med hjälp av knappen Stega. Lös uppgift 3.15 i övningskompendiet. 3.4 Fourierserie 3.4.1 Bakgrund Vi skall här beräkna spektralkomponenterna för en periodisk signal med hjälp av en diskret fourierserie. sida 3
3.4.2 Uppgift Välj Fourierserie från menyprogrammet. Vi kan beräkna frekvenskomponenterna för en sinusformad signal vars amplitud, periodantal och fas anges eller för en godtycklig signal vars samplingsvärden matas in i arrayen Inmatad signal i ordningen x [ 0], x [ 1] osv. Lös uppgift 4.1 och 4.2 c) i övningskompendiet. 3.5 DFT 3.5.1 Bakgrund Vi kommer här att studera frekvensanalys av en insignal via Diskret Fourier Transform (DFT). Vi börjar med att studera vikningsfenomenet i frekvensplanet för att sedan övergå till att studera vilka resultat vi får då insignalen ligger vid eller nära en av DFTspektrats frekvenskomponenter och vad som händer då vi har en frekvens mellan dessa komponenter. I detta sammanhang studerar vi dessutom olika fönsterfunk tioners inverkan. Vi studerar också effekten av att generera signaler som inte består av exakt ett helt antal period. 3.5.2 Uppgifter 3.5.2.1 Vikning i frekvensplanet Välj DFT av signal från I/O-kort med fönster från menyprogrammet. Beräkningen måste stoppas för att vi skall kunna byta samplingsfrekvens eller antalet samplingspunkter, vi behöver däremot inte avsluta programmet. Låt samplingsfrekvensen vara 1 khz och använd 512 samplingspunkter. Upprepa Viknings-uppgiften (3.1.2), nu i frekvensplanet. Förändra frekvensen ganska långsamt så att FFT-beräkningen hinner med. Använd steg om 10 Hz 3.5.2.2 Läckage a) Behåll samplingsfrekvensen 1 khz från föregående uppgift men minska till 100 n samplingspunkter (då antalet punkter N inte är 2 så kommer programmet automatiskt att övergå till att göra en DFT-beräkning i stället). Studera vad som händer då vi har en insignal i intervallet 250-270 Hz. Studera speciellt vad som händer då insignalen har en frekvens som ligger precis på en frekvenskomponent 1 k och då vi ligger mitt emellan dessa k +. Hur förändras resultatet om 2 vi använder någon fönsterfunktion, t ex Blackmanfönster? b) Ställ in samplingsfrekvensen 1 khz och 500 samplingspunkter. Klicka på knappen Konfigurera för att starta det underliggande konfigureringsprogrammet för signalgeneratorn. Ställ in bärvågsfrekvensen f 0 till 100 Hz och bärvågsamplituden A till 1 volt. Ställ även in den modulerande frekvensen f sb till 10 Hz och modula- sida 4
tionsgraden M = 5 %. Vi kommer då att få en signal innehållande tre frekvenskomponenter, en bärvåg med frekvensen f 0 och amplituden A samt två stycken så kallade sidband med frekvenserna f 0 ± f sb och amplituderna m A 2, sidbandsfrekvensen f s kommer däremot inte att ingå i signalen. Studera signalen på oscilloskopet. Försök beskriva den. Studera det resulterande frekvensspektrat. Undersök möjligheten att särskilja de olika frekvenskomponenterna vid olika val av fönsterfunktion (inklusive inget c) Ändra bärvågsfrekvensen till 101 Hz. Undersök återigen möjligheten att särskilja frekvenskomponenterna. d) Försök att förklara varför vi i det ena fallet bör arbeta utan fönster medan vi får ett bättre resultat med fönster i det andra fallet. 3.5.2.3 Egengenererade signaler Välja applikationen Generera signal via GPIB och mät DFT - grammet. Generera en 20 punkter lång sinusformad signal med 20 punkter per period. Ladda ner signalen till funktionsgeneratorn och studera den resulterande signalen på oscilloskopet. a) Studera signalens DFT-spektra (belopp) genom att klicka på knappen spektra som kommer att starta samma DFT-program som användes i uppgift 3.5.2.2. Anpassa antalet sampel i mätningen så att den genererade signalen kommer precis vid en frekvenskomponenet i DFT-spektrat b) Studera vad som händer om den genererade signalen inte är exakt en period utan t c) Studera också vad som händer om vi genererar ett exakt antal hela perioder, t ex 40 punkter som ger två genereradeperioder. d) Studera fönsters inverkan i de olika fallen e) Prova vad som händer då vi ändrar antalet sampel i DFT-beräkningen 3.5.2.4 Detaljstudium av simulerade signaler a) Vi övergår nu till att simulera insignaler till DFT-beräkningen. Starta applikationen DFT av simulerade signaler med fönster från menyprogrammet. Ställ in samplingsfrkvensen 100 Hz och 100 samplingspuynkter. Ställ in Signal 1 så att den har frekvensen 16 Hz och amplituden 1 volt på. Ställ in Signal 2 så att den har frekvensen 20 Hz och amplituden 1 volt. Låt Signal 3 vara avstängd genom att ge den amplituden 0. Studera möjligheten att särskilja frekvenskomponenterna utan fönster och med b) Ändra Signal 1 så att den får frekvensen 16,5 Hz med bibehållen amplitud och Signal 2 så att den får amplituden 0,1 volt och fortfarande har frekvensen 20 Hz. Studera även i detta fall möjligheterna att särskilja de två frekvenskomponenterna då vi använder olika fönsterfunktioner eller inget fönster. sida 5