Digitaalinen Signaalinkäsittely T05 Luento 5 -.04.006 Jarkko.Vuori@evtek.fi Yksinkertaisin järjestelmä Differenssiyhtälö [ n] x[ n] y Lohkokaavio X() Y() Siirtofunktio H ( ) Nolla-napa kuvio Ei nollia eikä napoja, koska järjestelmä ei muuta signaalia millään tavoin T05/JV
Yksinkertaisimman järjestelmän variaatio Differenssiyhtälö [ n + k] x[ n k] y + Lohkokaavio Siirtofunktio x[n-] - X() X() x[n+k] k X() H ( ) k k y[n-] - Y() Y() y[n+k] k Y() Nolla-napa kuvio Siirtofunktiosta Napanollapareja (k kpl) 0 Origissa oleva napa tai nolla ei muuta signaalia, mutta aikaansaa T05/JV 3 origossa oleva napa tai nolla aikasiirtymän edistää aikaa yhden näytteen verran Differenssiyhtälö Hiukan monimutkaisempi järjestelmä [ n] x[ n ] y Lohkokaavio X() - Y() Siirtofunktio H ( ) Nolla-napa kuvio Siirtofunktiosta Napa 0 Jos sekä x[] että y[] signaaleja viivästetään k näytteen verran, napanollapareja tulee k kpl lisää T05/JV 4
Differenssiyhtälö Ensimmäisen asteen IIRjärjestelmä [ n] x[ n] + y[ n ] y Lohkokaavio X() Y() - ½ Siirtofunktio H ( ) Nolla-napa kuvio Siirtofunktiosta Napa / Nolla 0 tästä näkee helposti differenssiyhtälön tästä taas näkee nollat ja navat T05/JV 5 Ensimmäisen asteen FIRjärjestelmä Differenssiyhtälö [ n] x[ n] + x[ n ] y Lohkokaavio X() - Y() Siirtofunktio H ( ) + + Nolla-napa kuvio Siirtofunktiosta Navat 0 Nollat tästä näkee helposti differenssiyhtälön tästä taas näkee nollat ja navat T05/JV origossa olevalla navalla 6 ei vaikutusta koska etäisyys yksikköympyrälle on sama riippumatta kulmasta 3
Taajuus- ja amplitudivaste Taajuusvaste siirtofunktio yksikköympyrän kehällä H jω jω ( e ) H ( e ) θ ( ω) 43 amplitudiv aste { vaihevaste ¾π ¼π Diskreettiaikainen järjestelmä on stabiili jos navat ovat yksikköympyrän sisällä Amplitudivaste voidaan hahmottaa nolla-napa kuviosta Nollien ja napojen kulmat reaaliakselin suhteen ovat suoraan digitaalitaajuus jolla ko. nolla tai napa vaikuttaa Yksikköympyrällä oleva nolla aiheuttaa siirtofunktioon todellisen nollan Yksikköympyrän lähellä oleva napa aikaansaa maksimin siirtofunktioon Navat määräävät siirtofunktion luonteen H(e jω ) ¼π ¾π π T05/JV 7 Signaalinkäsittelyn käytännön toteutuksesta Signaalinkäsittelyn perusoperaatio on konvoluutiosumma (FIR- ja IIR-järjestelmien perusrakennekomponentti) k [ n] x[ n] h[ n] x[ n] h[ n k] y * Konvoluutiosumma voidaan laskea liukuluvuilla (floating point numbers) jolloin lukualueiden ja desimaalilukujen (itse signaali ja kertoimet) esittämisessä ei tule ongelmia Liukuluvut ovat kuitenkin yleensä hitaampia laskea kuin kokonaisluvut Käytännössä suorituskykyisissä signaalinkäsittelyjärjestelmissä käytetään kokonaislukulaskentaa (fixed point numbers) kertolaskun ja summan suorittamiseksi Käytetyn lukujärjestelmän täytyy olla sellainen että se kykenee esittämään desimaalilukuja, mutta itse laskenta voidaan toteuttaa kokonaislukuoperaatioilla T05/JV 8 4
Signaalinkäsittelyn lukujärjestelmät Vaaditun kaltaisia desimaali lukuja voidaan esittää osamurtolukujen (fractional fixed point numbers) avulla (i voi olla myös negatiivinen) i bi, i N, b i { 0,} 0.00 7,75 000.000,065 000.000,5 i Binääripisteen paikka voidaan vapaasti valita Ainoastaan ohjelmoija/toteuttaja tietää missä binääripiste sijaitsee Rautaa se ei sinänsä kiinnosta, kaikki bitit käsitellään samoin Kiinteän osamurtoluvun suhteellinen tarkkuus on vakio Siksi liukuluvuissa on paikkaansa tarpeen mukaan siirtävä binääripiste (ns. liukuvan pisteen luku) Suurilla numeroilla on vähemmän absoluuttista tarkkuutta kuin pienillä Huom! Usein liukulukuja esitetään muodossa x.xxxxxxe+nn jossa binääripisteen paikka näyttää pysyvän paikallaan. Vaikka piste tulostettavassa luvussa onkin aina samassa paikassa (ensimmäisen numeron jälkeen), sen sijainti kokonais- ja desimaaliosan suhteen muuttuukin (liukuu) jatkuvasti Osamurtolukujen summaamiseen voidaan käyttää normaaleja kokonaislukusummaimia Osamurtolukujen summaamiseen voidaan käyttää normaaleja kokonaislukujenkin summaamiseen käytettäviä keinoja (i i +j) T05/JV 9 Signaalinkäsittelyn lukujärjestelmät Osamurtoluku yleensä on etumerkillinen Kahden komplementtiesitys toimii myös osamurtolukujen yhteydessä Yleensä lukualueena on - x< Tällöin binääripiste on heti eniten merkitsevän bittiposition oikealla puolella N 0 + bn i 0 i N + i b, b { 0,} Koska kokonaisosa on aina vain yhden bitin mittainen, lukujen pituus ilmaistaan murto-osan pituudella Merkintä Q5 tarkoittaa että käytössä on 5 bittiä murto-osalle (ja yksi bitti etumerkille, yhteensä 6 bittiä) Osamurtoluvussa luvun pituus ei määrää lukualuetta (se on aina sama, - x<), vaan pituus määrää luvun tarkkuuden Etumerkillisiä osamurtolukuja voidaan laskea normaaleilla summaus/vähennysoperaatioilla i 0.00 0,5 0.00 0,5 0.000 0. -0,5.0-0,5 T05/JV 0 5
Q5 lukujärjestelmä Suurin positiivinen arvo 0 ( 5 -) -5 0,999 969 48 4 Suurin negatiivinen arvo 000000000000000 - Kvantisointiaskel 000000000000000-5 0,000 030 57 578 5 On huomattava että rationaalisia desimaalilukuja, kuten esim. 3/5 0,6 ei voida välttämättä esittää tarkasti rationaalisella binääriluvulla 0,6 Q5 esitysmuoto on siten - + -4 + -5 + -8 + -9 + - + -3 0,59997558593 T05/JV Signaalinkäsittelyn lukujärjestelmät Osamurtoluvun dynaaminen alue (suurimman ja pienimmän arvon välinen suhde) määritellään seuraavasti D fixed point bittien määrä 0log ( )db 0 Nyrkkisääntönä 6 db/bitti Huomaa että Qn esitysmuodon dynamiikka on 6n db, mutta se tarvitsee kuitenkin kokonaisuudessaan n+ bittiä tiedon tallentamiseen Q7 dynamiikka 4 db Q5 dynamiikka 90 db Q3 dynamiikka 86 db vrt. ihmisen kuuloaistin dynamiikka n. 00 db, klassisen orkesterimusiikin dynamiikka n. 70 db T05/JV 6
Kertolasku C-kielessä Osamurtolukujen etumerkillinen kertolasku voidaan myös toteuttaa normaalilla kokonaislukujen kertolaskuyksiköllä Kerrottaessa kaksi osamurtolukua keskenään, tuloksena syntyy luku jossa binääripisteen oikealla puolella on tekijöiden osamurtobittien summan verran osamurtobittejä Esim. kerrottaessa kaksi Q5 lukua (6-bit) keskenään, tulokseksi syntyy Q30 luku jossa on kaksi kokonaislukubittiä (30+3 bit) Siksi kertolaskun jälkeen tulos täytyy normalisoida (ts. saattaa jälleen Q5 esitysmuotoon) Tämä voidaan tehdä joko Siirtämällä lukua yksi askel vasemmalle Tällöin luku on kuitenkin Q3 esitysmuodossa, jos tämä kerrotaan edelleen, syntyy Q6 luku, jne. Tai siirtämällä 3-bittistä kertolaskun tulosta 5 askelta oikealle ja katkaisemalla tulos 6- bittiseksi Tällöin kuitenkin katkaisusta aiheutuu pyöristysvirheitä! Oheisessa esimerkissä Q5 luku ensin muunnetaan 3-bittiseksi ja lasketaan 3- bittinen kertolasku (koska 6-bittisen kertolaskun tulos C-kielessä olisi 6- bittinen). Tämä tulos normalisoidaan siirtämällä tulosta 5 bittiä oikealle ja katkaisemalla tulos 6-bittiseksi // target platform: MSP430 #define MPY(a, b) ((int3_t)(a) * (b) >> 5) // Q5 multiplication /* st order IIR filter in Q5 arithmetic * highpass filter with corner frq 0.03 (DC remover) */ static int6_t iirst(int6_t x) { static int6_t x, y; int6_t y; // Q5 format } /* we use direct form I realiation because its unsensitivity to internal overflows */ y x; // B0.0 y - x; // B -.0 y - MPY(-3077, y); // A -0.939056 /* then update delay lines */ x x; y y; return (y); y[ n] x[ n] x[ n ] + 0,939056 y[ n ] H ( ) 0,939056 5 0,939056 3077 T05/JV 3 Keskiarvon (DC-komponentin) poisto Kun etäisyys nollasta kasvaa, vaste on suurempi täällä navan takana nollan vaikutus on pienin suurin vaste.5 H() 0.5 y[ n] x[ n] x[ n ] + 0,939056 y[ n ] H ( ) 0,939056 0 -.5 - -0.5 0 0.5 tässä nolla.5 0 - lähellä olevan navan takia vaste nousee jyrkästi T05/JV 4 7
Kertolasku signaaliprosessorissa Osamurtolukujen kertolaskun takia kertolaskuyksikössä on signaaliprosessoreissa yleensä shifteri Kertolaskukäsky siten on oikeasti muotoa MPY a,b Shift Z Yleensä kertolaskuun liittyvä shiftaus on implisiittinen (sitä ei erikseen tarvitse kertoa käskyssä) Motorola DSP56000 signaaliprosessorin ALU T05/JV 5 Kertolasku signaalivuokaaviossa Kertolaskun käytännön toteuttaminen aiheuttaa laskentaan virheitä Koska lopputulos joudutaan lähes aina katkaisemaan Kertolasku voidaankin mallintaa kohinalähteen avulla e[n] a (a) q Kertolasku tuottaa käytetystä laskutarkkuudesta riippuen kohinaa Siksi kertolaskujen tarkkuuteen ja sijaintiin täytyy käytännön toteutuksissa kohdistaa huomiota DSP:n rakenneosat eivät ole täydellisiä, mutta niiden epäideaalisuudet ovat huomattavasti paremmin hallittavissa kuin analogisten komponenttien epäideaalisuudet Tarkemmin näitä asioita (mm. äärellisen laskutarkkuuden vaikutukset) käsitellään signaaliprosessorit kurssilla T05/JV 6 8
Järjestelmien modifiointi Aina ei kannata suunnitella tyhjästä uutta järjestelmää, vaan olemassaolevien järjestelmien modifiointi riittää Modifiointi on yleensä nopeampaa kuin tyhjästä luonti vrt. komponenttiohjelmointi jossa parametrisoidaan olemassaolevia komponentteja sekä luodaan niiden välisiä kytkentöjä T05/JV 7 Sarjaan kytketyt järjestelmät Sarjaan kytketyt järjestelmät (kaskadissa) H () H () H () H () T05/JV 8 9
Sarjaan kytketyt järjestelmät Kertolaskut vaihdannaisia Järjestys voidaan vaihtaa Laskentatarkkuus/ylivuoto riippuvat järjestyksestä Ylivuodolle herkät lohkot ensimmäiseksi» Summat kasvavat aina loppupäässä suuremmiksi Laskentatarkkuudesta voidaan tinkiä viimeisissä lohkoissa» Koska ensimmäisissä lohkoissa syntyvä kohina vahvistuu seuraavissa lohkoissa Käytetään purkamaan korkeamman kertaluvun järjestelmät. ja. asteen järjestelmiksi Kompleksikonjugaattiparit reaaliset kertoimet siirtofunktioihin Yksikköympyrää lähimpänä olevat navat pariin lähimpien nollien kanssa Vähentää huippuvahvistusta (peak gain) ja siten ylivuodon mahdollisuutta 3 T05/JV 9 Rinnakkain kytketyt järjestelmät Rinnakkain kytketyt järjestelmät H () H () H ()+H () T05/JV 0 0
Rinnakkain kytketyt järjestelmät Käytetään IIR-järjestelmien purkamiseksi rinnakkaisiksi. ja. asteen järjestelmiksi Osamurtokehitelmän avulla voidaan yksi rationaalinen siirtofunktio (jonka osoittaja on pienempää astetta kuin nimittäjä) purkaa aina termien summaksi Tässä muodossa siirtofunktio esittää rinnakkaisten järjestelmien summaa Osamurtokehitelmä muuttaa monimutkaisen siirtofunktion yksinkertaisten tekijöiden summaksi Järjestelmän kohina on yleensä pienempi rinnakkaisten järjestelmien tapauksessa Ei kohinan vahvistusilmiötä H ( ) H ( )( ) ( ) ( ) A ( ) ( )( ) + B( ) + C( ) ( )( ) A( 3 + ) + B( ) + C( ) ( )( ) ( A + B + C) + ( 3A B C) + A ( )( ) osoittajan täytyy ollasama kuin alkuperäisen H() : n,eli A + B + C 0 3A + B + C 0 A A, B, C 4 H ( ) + A + 4 ( ) ( ) B + C T05/JV Aikamuunnos Aikamuunnos: viiveen moninkertaistaminen k α Ajan kertominen taajuuden jakaminen h k [ n k] H ( ) Kaksinkertaistetaan ensimmäisen asteen IIRjärjestelmän viive H ( ) H ( ) [ n] αy[ n ] x[ n] y α α α α a - -α α Viiveen kaksinkertaistaminen tuo toiset navat ja nollat imaginaariakselin peilikuvan kautta T05/JV
Aikamuunnos Napojen ja nollien kulma reaaliakselin suhteen puolittuu Napojen ja nollien lukumäärä kaksinkertaistuu Differenssiyhtälössä aikaviiveet kaksinkertaistuvat Suotimen kertoimet kuitenkin säilyvät samoina T05/JV 3 Aikamuunnos Amplitudivasteen kannalta H(e jω ) Alipäästösuodin F N F S H(e jω ) Kaistanestosuodin F N/ F N T05/JV 4
Aikamuunnos Entä jos vain näytteenottotaajuus pudotetaan puoleen? Nolla-napakuvio säilyy samana Järjestelmän asteluku säilyy samana Kaikki rajataajuudet putoavat puoleen fs f s / H(e jω ) H(e jω ) Alipäästösuodin F N Alipäästösuodin F S F N/ F S/ T05/JV 5 Aikamuunnos Aikamuunnos: reaaliakselin suunnan vaihto H(e jω ) Alipäästösuodin H(e jω ) Ylipäästösuodin T05/JV 6 3
Aikamuunnos Esim. vaihdetaan parittomien viiveiden etumerkit vastakkaisiksi H() + - + x[n-] H() - x[n-] T05/JV 7 Suodinpankit Joissain yhteyksissä tarvitaan useamman samanaikaisen signaalinkäsittelylohkon käyttöä Spektrianalyysi Signaalin pakkaaminen Useampien rinnakkaisten (samanaikaisesti toimivien) suodattimien ryhmää kutsutaan suodinpankiksi (filter bank) Suodinpankissa alkuperäinen signaali jaetaan N toisistaan riippumattomaan kaistaan jotka vastaavat pientä osaa alkuperäisestä signaalin kaistasta Mihin käytetään Kuvakompressio, OFDM-modulaatio T05/JV 8 4
Aika-akselin modifiointi suodinpankissa Yhteiset kertoimet kaikille suotimille Yhdistetyt viivelinjat ja laskutoimitukset H(e jω ) H(e jω ) H(e jω ) H(e jω ) k T05/JV 9 Aika-akselin modifiointi suodinpankissa H (e jω ) H (e jω ) H(e jω ) H(e jω ) Käytetään suodinpankeissa, koska - yhteiset kertoimet kaikille suotimille - yhdistetyt viivelinjat ja laskutoimitukset 3 4 T05/JV 30 5