810 likes | 931 Views
Konvoluutiokoodaus. Konvoluutiokoodauksessa keskeistä on muistin sisällyttäminen koodaukseen. Koodauksen lopputulokseen vaikuttaa myös se mitä on tapahtunut aikaisemmin.
E N D
Konvoluutiokoodaus • Konvoluutiokoodauksessa keskeistä on muistin sisällyttäminen koodaukseen. • Koodauksen lopputulokseen vaikuttaa myös se mitä on tapahtunut aikaisemmin. • Merkintä (n, k, m) konvoluutiokoodaus tarkoittaa: n on koodatun symbolin bittipituus, k on alkuperäisen informaatiosymbolin pituus ja m on koodauksen muistin syvyys. tMyn
Esim. (2, 1, 3) konvoluutiokoodauksessa informaatiosymbolin pituus on 1 bitti, koodatun symbolin pituus on 2 bittiä ja kunkin lähtöbitin arvo määräytyy kolmen edeltävän lähtöbitin arvosta. • Siirtorekisteriä voidaan hyvin käyttää edustamaan muistia, kuva 1. tMyn
S In Out A B C D S Kuva 1. Siirtorekisteriesitys yksinkertaisesta konvoluutiokoodauksesta. tMyn
Kunkin näytteenoton hetkellä uusi bitti syötetään sisään vasemmalta, ja sarakkeessa oleva bitti siirtyy yhden position oikealle. • Toteutuksessa muistin syvyys on kolme bittiä. • Lähtöarvo on riippuvainen kaikista neljästä sarakkeesta ja vasemmanpuoleisin bitti edustaa tulobittiä. • Joka kerta kun bitti saapuu tulosarakkeeseen A generoidaan kaksi lähtöbittiä. • Olkoon kuvan lähtökytkin alussa yläasennossaan. Silloin ensimmäinen lähtöbitti on tulobitin ja kolmen aiemmin saapuneen bitin summa. tMyn
Seuraavaksi kytkin siirtyy ala-asentoonsa, ja seuraava lähtöbitti on tulobitin, sitä edeltäneen tulobitin ja kolme arvoa aiemmin tulleen bitin summa. tMyn
Kuvan 1 takaisinkytketty siirtorekisteri suorittaa aikatason konvoluution. • Sekä ylempi että alempi summain voidaan kuvata konvoluutiona missä h on impulssivaste. • Ylemmälle summaimelle impulssivaste h=1111 ja alemmalle summaimelle h=1101. • Impulssivaste saadaan asettamalla ykkönen tuloksi (yksikköimpulssi) ja antamalla sen liukua oikealle. tMyn
Merkitään ylempää ja alempaa impulssivastetta uudella symbolilla ja • Näillä merkinnöillä ylempi ja alempi lähtö voidaan kirjoittaa konvoluutio-operaationa ja • Summaesitysmuotona saadaan ja • Näillä merkinnöillä lähtönä on vuoron perään tMyn
Konvoluutio voidaan myös esittää matriisioperaationa. • Generointimatriisin muoto on • Matriisissa on rivejä yhtä monta kuin mitä on bittejä tulosanassa. tMyn
Paperilla esitettynä matriisimuoto tulee helposti hankalaksi, koska tulobitteinä on elävässä elämässä ”katkeamaton jono” bittejä. Matriisista tulee siis helposti aika iso… • Helpompi tapa esittää konvoluutiokoodaus on käyttää tilakaaviota. • Kuvassa 2 on esitetty kuvan 1 siirtorekisteriesitys tilakaaviona. tMyn
1 S4 S6 1 1 0 1 1 1 0 0 S2 S5 S7 S0 0 1 1 0 0 0 S1 S3 0 Kuva 2. Tilakaavioesitys kuvan 1 konvoluutiokoodauksesta. tMyn
Järjestelmän muisti edustaa järjestelmän eri tiloja. • Eri tilat löytyvät kolmesta oikean puolimmaisesta sarakkeesta kuvan 1 siirtorekisteristä. • Tulobitti yhdessä järjestelmän tilan kanssa muodostaa lähtöbitit sekä seuraavan tilan. • Eniten merkitsevä bitti on oikean puolimmaisin bitti. • Kuvan 2 tiloina ovat siis jne. • Olkoot esim. tilana • Jos seuraavana tulobittinä on 0, niin silloin siirrytään tilaan tMyn
Koska muisti on kolmen bitin levyinen, on järjestelmässä 8 mahdollista erilaista tilaa. • Lisätään kuvan 2 havainnollisuutta. • Sen lisäksi että kirjoitetaan tilan siirtymisen määräävä tulobitti, niin merkitään myös vastaavat lähtöbitit kenoviivalla eroteltuna, kuva 3. tMyn
1/00 S4 S6 1/10 0/00 1/11 0/11 1/11 1/01 1/00 0/01 S0 S2 S5 S7 0/00 0/10 1/10 0/10 1/01 0/11 S1 S3 0/01 Kuva 3. Tarkennettu tilakaavio kuvan 1 konvoluutiokoodauksesta. tMyn
Kuvasta 3: Ollaan esim. tilassa , ja tulobittinä vastaanotetaan ykkönen. Bitit ABCD ovat siis nyt 1000 ja lähtöbitteinä ovat 11. • Kuvan 3 tilakaaviota voidaan käyttää rajoitetusti etsittäessä lähtöbitit tietylle tulosekvenssille. • Ajatellaan, että vastaanotetaan koodattua dataa, joka on koodattu kuvan 1 konvoluutiokoodausmenetelmällä. Siirtotiellä on voinut tapahtua virheitä. Miten dekoodaus onnistuu? • Alustava ratkaisu: Käytetään kuvan 3 tilakaaviota hyväksi. Etsitään reitti, joka on mahdollisimman lähellä vastaanotettua koodia. Hankalaa!!... tMyn
Tilakaavion syklisyyden huomioiminen tapahtuu verkkokaavion (trellis) avulla, kuva 4. • Verkon haaroihin ei ole merkitty tulobitin arvoa, koska sovitaan seuraavasti: Vasemmalla ensimmäisellä sarakkeella on rekisterin mahdollinen sisältö, • Ylempi haara kuvaa tilannetta, jossa tulobittinä on 0, ja alempi kuvaa tilannetta, jossa tulobittinä on 1. • Huom! Tilat on laitettava järkevään järjestykseen ensimmäisessä sarakkeessa! Jos ollaan esim. tilassa , niin silloin on mahdollista siirtyä tilaan (ja lähdöksi tulee 11), jos seuraava tulobitti on 1, ja toisena mahdollisuutena on pysyä tilassa (ja lähdöksi tulee 00), jos seuraava tulobitti on 0. tMyn
00 00 00 00 00 00 S0 11 11 11 11 11 11 11 11 11 S4 11 11 11 11 11 00 00 00 00 00 00 00 00 S2 10 10 10 10 01 01 01 01 S6 01 01 01 01 10 10 10 10 S1 00 00 00 11 11 11 S5 01 01 01 10 10 10 S3 10 10 10 01 01 01 S7 Kuva 4. Verkkokaavio (trellis) kuvan 1 konvoluutiokoodauspiiristä. tMyn
Kun ensimmäisellä sarakkeella (kuva 4) kaikki tilat ovat oikeassa järjestyksessä, niin tilasiirrot ovat silloin seuraavanlaisia: Ylimmältä riviltä siirrytään joko seuraavaan alempaan tai sitten pysytään samalla rivillä. Jos lähdetään toiselta riviltä, niin sitten mennään kolmannelle tai neljännelle riville. Jos lähdetään kolmannelta riviltä, niin sitten mennään joko viidennelle tai kuudennelle riville. Näin jatketaan, kunnes rivit loppuvat. • Kun rivit loppuvat, niin sitten mennään alkuun! Riviltä 5 ei siis mennäkään joko riville 9 tai 10, vaan joko riville 1 tai 2. Riviltä 6 mennään joko riville 3 tai 4 jne… • Lähtöbitit merkitään viivan viereen. tMyn
Viterbi-dekoodaus käyttää hyväksi äskeisen tyyppistä verkkoa etsittäessä koodisymboleja, jotka ovat mahdollisimman lähellä vastaanotettuja (mahdollisesti virheitä sisältäviä) koodisymboleja. tMyn
Viterbi-dekoodauksen perusidean esittäminen on hieman työläs tehtävä, joten otetaan aluksi yksinkertaisempi enkoodausesimerkki, kuva 5. • Kun tulobitti saapuu A-sarakkeeseen, generoi kytkentä kaksi lähtöbittiä. • Muistia edustavat sarakkeet B ja C. • Olkoot lähdössä kytkin alussa yläasennossaan. • Kunkin näytteenoton hetkellä uusi tulobitti syötetään sisään vasemmalta ja sarakkeissa olevat bitit siirtyvät yhden position oikealle. tMyn
S Out In A B C S Kuva 5. (2, 1, 2)-konvoluutioenkoodauskytkentä. tMyn
Olkoot vaikkapa tulobitteinä bitit 101. Alussa rekistereiden • sisältö on 000. Mikä on lähtö? S Hetkellä 1 0 0 1 1 S S Hetkellä 0 0 1 1 0 S tMyn
S Hetkellä 1 1 0 0 0 S S Hetkellä 0 0 1 1 0 S S 0 1 0 Hetkellä 1 1 S tMyn
Lähdöksi saatiin 11 10 00 10 11. • Kytkennän (edelleenkin kuva 5) muisti, kaksi oikean puolimmaista saraketta, edustaa järjestelmän eri tiloja. • Tulobitti yhdessä järjestelmän tilan kanssa muodostaa lähtöbitit ja seuraavan tilan. • Olkoot esim. tilana 11. Jos seuraava tulobitti on 0, niin sellaisessa tapauksessa siirrytään tilaan 01. • Määritellään järjestelmän mahdolliset tilat a=00, b=10, c=01 ja d=11. • Yllä esitetyn päättelyketjun mukaisesti kytkennästä kuvassa 5 voidaan piirtää tilakaavio, kuva 6. tMyn
00 enkooderin tila lähtöbitit 00 11 11 00 10 01 10 01 01 11 tulobittinä 0 10 tulobittinä 1 Kuva 6. Tilakaavio kuvan 5 enkooderikytkennästä. tMyn
Varmistetaan seuraavaksi, että kytkennän muistilla on vaikutus lopputulokseen. • Olkoot aluksi niin, että tulobitteinä on ensimmäiseksi 11011, ja loput tulobitit ovat nollia niin kauan kunnes rekisterit ovat kaikki nollia. Rekisterien sisältö on alussa 000. Lasketaan lähtöbitit, taulu 1: tMyn
tila hetkellä tila hetkellä Taulu 1. Kuvan 5 enkooderin tuottama lähtö silloin kun tulobitteinä on m=11011 ja kun rekisterien sisältö on alussa 000. tMyn
Lähdöksi saatiin 11 01 01 00 01 01 11. • Toistetaan edellinen esimerkki sillä erotuksella, että nyt kaksi edeltävää bittiä ovat arvoltaan 11 (kolmas on tuntematon x), taulu 2: tMyn
tila hetkellä tila hetkellä Taulu 2. Kuvan 5 enkooderin tuottama lähtö silloin kun tulobitteinä on m=11011 ja kun rekisterien sisältö on alussa 11x. tMyn
Lähdöksi saatiin tällä kertaa 10 10 01 00 01 01 11. • Eli lähtö on riippuvainen aikaisemmasta tilasta! tMyn
Tilakaavio kuvaa hyvin enkooderin toiminnan, mutta siitä puuttuu aikaulottuvuus. • Aikaulottuvuuden mukaan ottaminen tapahtuu esim. puukaavion (tree diagram) avulla. • Puukaaviota luetaan vasemmalta oikealle. • Koodisana löytyy seuraavasti: jos tulobittinä on 0, niin silloin siirrytään ylöspäin seuraavaan haaraan. • Jos taas tulobittinä on 1, niin sitten siirrytään alaspäin seuraavaan haaraan. • Oletetaan, että lähdetään liikkeelle tilasta 00 (=a), ja piirretään puukaavio kuvan 5 enkooderista, kuva 7: tMyn
00 a 00 11 a 00 10 b 11 01 a 00 11 c 10 00 b 11 01 d 01 10 a 00 Kuva 7. Kuvan 5 enkooderista piirretty puukaavio, ylempi haara…….. 00 a 11 11 c 10 10 b 00 01 b 11 11 c 01 00 d 01 01 d 10 10 a 0 1 alempi haara seuraavassa diassa! tMyn
00 a 00 11 a 11 10 b 11 01 c 10 11 c 10 00 b 00 01 d 01 10 b 11 Kuva 7. Kuvan 5 enkooderista piirretty puukaavio, alempi haara. 00 a 11 11 c 01 10 b 00 01 d 01 11 c 01 00 d 10 01 d 10 10 tMyn
Kun tulobitteinä on 11011, niin paksunnettu viiva kuvaa koodattua informaatiota 11 01 01 00 01 … • Tällä tekniikalla loppuu sekä paperi että hermot. • Puukaaviosta huomataan, että se alkaa toistamaan itseään kohdasta alkaen eli kolmannen haarautumisen jälkeen. • Yleisesti ottaen puukaavio alkaa toistamaan itseään K haarautumisen jälkeen, jossa K=m+1, m=muistin syvyys. • Ensimmäinen haarautuminen (hetkellä ) tuottaa solmut a ja b (kirjaimet viittaavat tiloihin). • Haarautumisen kohdalla solmujen määrä aina kaksinkertaistuu. tMyn
Hetkellä haarautuminen tuottaa solmut a, b, c ja d. • Kolmannen haarautumisen jälkeen kaaviossa on 8 solmua: a, a, b, b, … • Huomataan, että tästä lähtien ylempi ja alempi haara ovat identtisiä. • Selityksenä tähän on se, että samalla kun 4. bitti tulee enkooderiin vasemmalta, niin silloin ensimmäisenä tullut bitti tipahtaa oikealta ulos eikä siis enää vaikuta lähtöbittejä generoitaessa. • Yllä mainitulla havainnolla on se merkitys, että kaksi sellaista reittiä, joilla on sama tila ajanhetkellä voidaan yhdistää. tMyn
Tämä siitä syystä, että kyseisiä reittejä ei kuitenkaan voitaisi erottaa mitenkään. • Kun tällaiset yhdistämiset tehdään, syntyy uusi diagrammi, nimeltään verkkokaavio (trellis). • Verkkokaavio ottaa huomioon puukaavion toistot, ja niinpä verkkokaavio on paras kuvaus enkooderin toiminnasta. • Kuvassa 8 esitetään kuvan 5 enkooderikytkennän verkkokaavio. tMyn
00 00 00 00 00 a=00 11 11 11 11 11 b=10 10 10 10 10 01 01 01 01 11 11 11 00 00 00 c=01 01 01 01 d=11 10 10 10 tulobittinä 0 tulobittinä 1 Kuva 8. Verkkokaavio (trellis) kuvan 5 konvoluutiokoodauspiiristä. tMyn
Verkkokaavion solmut kuvaavat enkooderin tiloja. • Kuvan 8 verkkokaavio saavuttaa tietyn jaksollisuuden, kun on saavutettu syvyys 3, siis ajan hetkellä . • Yleisesti tämä jaksollisuus saavutetaan kohdassa K. • Tässä kohden ja sen jälkeen (esimerkissä ajan hetkellä ) kuhunkin tilaan voidaan tulla kahden aikaisemman tilan kautta. • Samaten kustakin tilasta voidaan mennä kahteen seuraavaan tilaan. • Eteenpäin mentäessä toinen haara edustaa tilannetta, jossa tulobittinä on ollut 0, toinen edustaa tulobittiä 1. tMyn
Dekoodausvaiheessa puhutaan ”maximum likelihood decoding” –prosessista. • Tavoitteena on siis nimensä mukaisesti valita todennäköisin vaihtoehto ratkaisuksi. • Kun vastaanotetaan L solmun koodisanat (binaariset), niin silloin mahdollisia vaihtoehtoja on , eli aika monta... • Kun käytetään verkkokaavioesitysmuotoa (trellis), niin on mahdollista konfiguroida dekooderi, joka kykenee hylkäämään epätodennäköiset vaihtoehdot pois. • Päätös parhaasta vaihtoehdosta tehdään jäljelle jääneen polun mukaan (surviving path). tMyn
Vastaanotossa dekooderille tuleva binaarinen tieto tulee demodulaattorin lähdöstä. • Käytännössä on kaksi tapaa, jolla demodulaattori päättää, onko saapunut informaatiobitti binaarinen ykkönen vaiko binaarinen nolla. • Näistä menetelmistä käytetään nimiä ”hard decision” ja ”soft decision”. • Päätösprosessia voidaan havainnollistaa kuvalla 9. tMyn
binaarisen nollan vastaanottotodennäköisyys binaarisen ykkösen vastaanottotodennäköisyys 110 000 001 010 011 100 101 111 1 0 Kuva 9. ”Hard-decision decoding” – ja ”soft-decision decoding”. tMyn
Jos demodulaattori ilmoittaa saapuneesta informaatiosta (onko kyseessä binaarinen ykkönen vaiko binaarinen nolla) yhdellä bitillä, niin silloin puhutaan ”hard-decision decoding” –prosessista. • Kun demodulaattori ilmoittaa saapuneesta informaatiobitistä esim. käyttäen kahdeksaa tasoa (siis kolmella bitillä), niin silloin puhutaan ”soft-decision decoding” –prosessista. • Kun lähetetään dekooderille 3-bittinen sana yhden bitin sijasta, niin se vastaa tilannetta, jossa dekooderille annetaan enemmän tietoa päätöksen teon perusteeksi (measure of confidence). tMyn
Kuvasta 9: Kun dekooderille tulee tieto ”111”, niin siitä dekooderi voi päätellä, että saapunut bitti on hyvin varmasti ykkönen (very high confidence). • Jos sitä vastoin saatu tieto olisi ollut ”100”, olisi se tarkoittanut sitä, että tuleva bitti on arvoltaan ykkönen melkoisen hintelällä varmuudella (very low confidence). • Toki viime kädessä dekooderin on puolestaan tehtävä aina hard decision!! • Kirjallisuudessa löytyy viitteitä siihen suuntaan, että tiettyjen ehtojen täyttyessä (esim. että käytössä on ”Gaussian channel”) kolmen bitin käyttö verrattuna yhteen bittiin antaa 2 dB paremman suorituksen halutulla signaali-kohinasuhteella. tMyn
Hintana paremmalle suorituskyvylle on kolminkertainen datamäärä dekoodausvaiheessa (tarvittava muistin määrä ja mahdollisesti nopeus!). • Soft-decision decoding on käytössä Viterbi-algoritmissa (Viterbi convolutional decoding algorithm). • Viterbi-algoritmi laskee kullakin ajan hetkellä vastaanotetun koodin samankaltaisuutta tai etäisyyttä (measure of similarity or distance) verrattuna kuhunkin läheiseen solmuun saapuvaa trellispolkua samaisella hetkellä . • Viterbi-algoritmi jättää pois ne polut potentiaalisten ehdokkaiden joukosta, jotka eivät mitä luultavimmin ole hyviä ehdokkaita (maximum likelihood choice). tMyn
Kun kaksi polkua yhtyy samaan tilaan, niin parempi valitaan (surviving path). • Tämä valinta tehdään jokaisen tilan kohdalla. • Näin toimien edetään syvemmälle verkkokaavioon. • Optimipolun valintaa voidaan kutsua joko nimellä ”maximum likelihood metric” tai ”minimum distance metric”. tMyn
Otetaan esimerkkinä BSC-kanava (Binary Symmetric Channel), jolloin tavoitteena on etsiä polku, jonka Hamming-etäisyys (Hamming distance) on pienin mahdollinen verrattuna dekooderin vastaanottamaan koodisanaan. • Enkooderi on esitetty aiemmin kuvassa 5 ja vastaava verkkokaavio on esitetty kuvassa 8. • Dekooderin toiminnan ymmärtämiseksi piirretään kohta saman tyyppinen verkkokaavio kuin mitä on piirretty enkooderin toiminnasta kuvassa 8. tMyn
Aloitetaan ajan hetkestä tilasta 00.Jokaisesta tilasta on mahdollista haarautua jompaan kumpaan kahdesta uudesta tilasta (riippuen input-bitistä). • Niinpä koko verkkokaavio on esillä hetken jälkeen. • Dekoodausprosessi selviää helpoiten tarkastelemalla kuvan 8 enkooderin verkkokaaviota saman aikaisesti kuvan 10 dekooderin verkkokaavion kanssa. • Merkitään dekooderin verkkokaaviossa kunakin ajan hetkenä jokaiseen solmuun Hamming-etäisyys. • Hamming-etäisyys lasketaan kussakin solmussa vastaanotetun koodisymbolin ja enkooderin verkkokaaviosta vastinsolmun arvon erotuksena. tMyn
Kuvassa 10 on merkitty alkuperäiseksi informaatiosekvenssiksi m, enkoodatuksi sekvenssiksi U ja vastaanotetuksi koodisekvenssiksi dekooderin tuloon Z. • Enkooderin toimintaperiaate tunnetaan dekooderin puolella a priori (a priori = it is knowable independently of experience). • Enkooderin verkkokaavion haarojen koodisanat ovat juuri niitä, joiden oletetaan tulevan enkooderin lähdöstä kunkin tilamuutoksen jälkeen. tMyn
Dekooderin verkkokaavion haarojen merkinnät (Hamming-etäisyydet) muodostetaan ”lennossa” sitä mukaan kun vastaanotetaan informaatiota demodulaattorilta. • Lähdetään liikkeelle ajan hetkestä : vastaanotetaan koodisynbolit 11, kuva 10. • Hamming-etäisyyden laskemiseksi tutkitaan enkooderin verkkokaaviota, kuva 8. • Kuvasta 8 nähdään, että tilasiirtymä 00 -> 00 tuottaa lähtevälle haaralle lähtöbitit 00. • Mutta nyt vastaanotettiin bitit 11. tMyn
Siispä dekooderin verkkokaaviossa merkitään tilasiirtymä 00 -> 00 Hamming-etäisyydellä 2 (koodien 00 ja 11 Hamming-etäisyys). • Enkooderin verkkokaaviosta kuvassa 8 nähdään, että tilasiirtymä 00 -> 10 tuottaa lähtöbitit 11, joka vastaa täsmälleen sitä, mitä vastaanotettiin hetkellä . • Siis dekooderin verkkokaaviossa tilasiirtymä 00 -> 10 merkitään Hamming-etäisyydellä 0, kuva 10. tMyn
Alkuperäinen informaatio m: 1 1 0 1 1 … Koodattu informaatio U: 11 01 01 00 01 … Vastaanotettu informaatio Z: 11 01 01 10 01 ... 2 1 1 1 1 a=00 0 1 1 1 1 b=10 2 2 2 0 0 0 2 0 1 1 1 1 1 1 c=01 2 0 0 d=11 0 2 2 tulobittinä 0 tulobittinä 1 Kuva 10. Verkkokaavio (trellis) dekoodausvaiheesta. tMyn