KONVOLUUTIOKOODIT A Tietoliikennetekniikka II Osa 25 Kari Kärkkäinen Syksy 2015

Samankaltaiset tiedostot
esimerkkejä erilaisista lohkokoodeista

KAISTANLEVEYDEN JA TEHON KÄYTÖN KANNALTA OPTIMAALINEN MODULAATIO TRELLISKOODATTU MODULAATIO (TCM)

INFORMAATIOTEORIA & KOODAUS TÄRKEIMPIEN ASIOIDEN KERTAUS A Tietoliikennetekniikka II Osa 28 Kari Kärkkäinen Syksy 2015

VIRHEENKORJAUS JA -ILMAISU

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Koodausteoria, Kesä 2014

Luku 8. Aluekyselyt. 8.1 Summataulukko

Datatähti 2019 loppu

TURBOKOODAUS. Miten turbokoodaus eroaa konvoluutiokoodauksesta? A Tietoliikennetekniikka II Osa 26 Kari Kärkkäinen Syksy 2015

JOHDANTO VIRHEENKORJAAVAAN KOODAUKSEEN KANAVAKOODAUSMENETELMÄT A Tietoliikennetekniikka II Osa 22 Kari Kärkkäinen Syksy 2015

Johdatus verkkoteoriaan 4. luento

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Tietotekniikan valintakoe

Turingin koneen laajennuksia

VIRHEENKORJAUS JA -ILMAISU

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Kombinatorinen optimointi

Digitaalitekniikan matematiikka Luku 13 Sivu 1 (10) Virheen havaitseminen ja korjaus

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Tietorakenteet ja algoritmit - syksy

Tietorakenteet, laskuharjoitus 7, ratkaisuja

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

811120P Diskreetit rakenteet

7.4 Sormenjälkitekniikka

Algoritmit 1. Luento 9 Ti Timo Männikkö

811120P Diskreetit rakenteet

811312A Tietorakenteet ja algoritmit I Johdanto

Dynaamiset regressiomallit

Lisää pysähtymisaiheisia ongelmia

Helsinki University of Technology

10. Painotetut graafit

Johdatus graafiteoriaan

T Luonnollisten kielten tilastollinen käsittely Vastaukset 11, ke , 12:15 14:00 Puheentunnistus ja kielimallien evaluointi Versio 1.

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

ELEC-C3240 Elektroniikka 2

10. Esitys ja kuvaus

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Koodausteoria, Kesä 2014

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Paikkatiedon käsittely 6. Kyselyn käsittely

Rinnakkaistietokoneet luento S

Silmukkaoptimoinnista

Algoritmit 2. Luento 12 Ke Timo Männikkö

13 Lyhimmät painotetut polut

Matematiikan tukikurssi

10. Painotetut graafit

1. Universaaleja laskennan malleja

Laskennallinen menetelmä puun biomassan ja oksien kokojakauman määrittämiseen laserkeilausdatasta

5. Siirtoyhteyskerros linkkikerros (Data Link Layer)

5. Siirtoyhteyskerros linkkikerros (Data Link Layer)

Harjoitus 6 ( )

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Dynaaminen analyysi II

Signaalien generointi

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Tutkimustiedonhallinnan peruskurssi

Algoritmit 1. Luento 13 Ma Timo Männikkö

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

Algoritmit 2. Luento 9 Ti Timo Männikkö

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

jens 1 matti Etäisyydet 1: 1.1 2: 1.4 3: 1.8 4: 2.0 5: 3.0 6: 3.6 7: 4.0 zetor

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

Matematiikan tukikurssi

Pistetulo eli skalaaritulo

Algoritmit 1. Demot Timo Männikkö

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Harjoitus 6 ( )

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

Stabiloivat synkronoijat ja nimeäminen

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

Johdatus graafiteoriaan

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Algoritmit 1. Luento 13 Ti Timo Männikkö

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Algoritmit 1. Luento 10 Ke Timo Männikkö

Koodausteoria, Kesä 2014

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Algoritmit 2. Luento 6 To Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

Verkko-optimointiin perustuva torjuntatasan laskenta mellakkapoliisin resurssien kohdentamisessa (valmiin työn esittely) Paavo Kivistö

Mediaanisuodattimet. Tähän asti käsitellyt suodattimet ovat olleet lineaarisia. Niille on tyypillistä, että. niiden ominaisuudet tunnetaan hyvin

805306A Johdatus monimuuttujamenetelmiin, 5 op

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Transkriptio:

1 KONVOLUUTIOKOODIT

KONVOLUUTIOKOODERIN PERUSIDEA 2 Konvoluutiokoodi on lohkoton koodi. Pariteettibitit lasketaan liukuen informaatiobittijonon yli. Muistin pituudesta K käytetään nimitystä vaikutuspituus (constraint length & span). Konvouluutiokoodille voidaan myöskin määritellä koodisuhde k/n. Siirtorekisterin sisään syötetään kerralla k bitin lohko. Kun rekisteriä on siirretty K kertaa eteenpäin, informaatiobittilohko ei enää vaikuta pariteettibittien laskentaan, eli ne ovat liukuneet koodin vaikutuspituuden ulkopuolelle.

KONVOLUUTIOKOODERIN PERUSIDEA 3 Z&T:ssä oletaan yksinkertaistaen, että vaikutuspituus on k (ts. vain yksi bitti menee k-bitin lohkon sijasta k-pituiseen rekisteriin, joten yksi bitti vaikuttaa vain k:n siirron verran) ja koodisuhde on siten 1/v. t = d free 2 1 Summainkytkennöillä on suuri merkitys virheenkorjauskykyyn t. Hyviä kytkentöjä on haettu tietokoneilla. Koodausalgebra ei ole lähellekkään niin kehittynyt kuin lohkokoodeilla. Suorituskykyyn vaikuttaa ns. vapaa etäisyys (free distance d free ), joka on kahden äärettömän pitkän koodatun sekvenssin pienin Hammingetäisyys (http://en.wikipedia.org/wiki/convolutional_code)

ESIMERKKEJÄ KONVOLUUTIOKOODEREISTA (S) 4 Vaikutuspituus 4, koska 4 muistiyksikköä vaikuttaa lähtöön Vaikutuspituus 3, koska 2 muistialkiota ja 1 tulobitti vaikuttaa lähtöön Vaikutuspituus 2, koska 1 rinnakkainen muistialkio ja 2 tulobittiä kerralla vaikuttaa lähtöön

SYSTEMAATTINEN VS. EPÄSYSTEMAATTINEN KOODI 5 Systemaattisella konvoluutiokoodilla, kuten systemaattisella lohkokoodillakin, informaatiobitit on erotettavissa sellaisenaan koodatusta bittijonosta (ts. jotkut kooderin lähtöbitit eivät ole lainkaan muiden informaatiobittien funktioita). Lohkokoodeilla koodin muuttaminen epäsystemaattisesta systemaattiseksi ei muuta koodisanojen etäisyysominaisuuksia, mutta konvoluutiokoodilla se vaikuttaa vapaata etäisyyttä pienentävästi, eli koodin korjauskykyä (P E suorituskykyä) heikentävästi. Kooderin lähtobitti ei ole funktio (esim. modulo-2 summa) useasta informaatiobitistä. Kooderin lähtöbitti on useamman informaatiobittien funktio.

SYSTEMAATTINEN VS. EPÄSYSTEMAATTINEN KOODI 6 Suuremmilla K:n arvoilla suurimman mahdollisen saavutettavan vapaan etäisyyden erot ovat vieläkin suurempia kuin mitä alla voidaan nähdä. Intuitiivisesti voidaan ajatella, että epäsystemaattiset koodijonot ovat enemmän koodattuja kuin systemaattiset koodit ( sekoittuneet ortogonalisoituneet ja siis etäämmällä toisistaan). t = d free 2 1

1/n-KONVOLUUTIOKOODEREITA 7 Ohessa on esitetty parhaimmat tunnetut 1/n- konvoluutiokooderit. Alla olevan (½,3)-kooderin kytkentäpolynomit: g 1 = 111 = g 1 (X) = 1+X+X 2 g 2 = 101 = g 2 (X) = 1+X 2

8 KONVOLUUTIOKOODEJA HAVAINNOLLISTAVAT ESITYSTAVAT JA DEKOODAUSMENETELMÄT

1/3 -KOODERI TILA- JA SIIRTYMÄTAULUKKO 9 Sekventiaalinen äärellinen tilakone (finite state machine), joka askeltaa tilasta toiseen. Toiminnan tarkastelun pohjana aina tila- ja siirtymätaulukko. Tilasiirtymä riippuu aiemmasta tilasta ja tuloinformaatiosta. v 1 = S 1 S 2 S 3, v 2 = S 1, v 3 = S 1 S 2 Tulo: 1 0 1 0 0 1... Lähtö: 111 101 011 101 100 111...

1/3 -KOODERI KOODIPUU 10 Kooderin toimintaa koodauksessa ja dekoodauksessa voidaan kuvata ja havainnollistaa: koodipuu (code tree) tiladiagrammi (state diagram), trellis-diagrammi eli ristikkodiagrammi Dekoodausmenetelmät: Puuhaku Viterbi-algoritmi Sekventiaalinen dekoodaus Kooderin tulobitti Dekoodaustulos Kooderin lähtöbittikolmikko

1/3 -KOODERI PUUHAKUDEKOODAUS 11 Etsitään Hamming- etäisyyden mukaan lähinnä vastaanotettua bittijonoa oleva polku (periaatteena yksinkertainen). Kaikki oksan haarat käydään läpi systemaattisesti, mikä kertoo menetelmän eksponentiaalisesta monimutkaisuudesta & muistista. Esimerkiksi vastaanotettu jono 110 101 011 111 dekoodataan jonoksi 1010, kun lähetetty jono on 111 101 011 101, jolloin virheet korjautuu 3 ja 11 bittipaikassa.

1/3 -KOODERI PUUHAKUDEKOODAUS 12 Puuhaun täydellinen toteuttaminen ei ole mahdollista, koska N- pituisella infobittijonolla on 2 N kpl puun haaroja (esim. 2 512 = 1.3 10 154, maailmassa atomeja vain n. 10 80 kpl), joiden kaikkien säilöminen muistiin on mahdotonta. Koko puuta & polkuja ei voida pitää kooltaan eksponentiaalisesti kasvavassa muistissa, joten täytyy suorittaa jossain vaiheessa sekvenssin katkaisu alusta lukien. Katkaisu tapahtuu tyypillisesti esim. viiden vaikutuspituuden päässä, eli puskurimuistissa on kerrallaan puuta vain viiden vaikutuspituuden mittaiselta matkalta (muisti liukuu), jonka yli H-etäisyyttä lasketaan. Katkaisu perustuu ajatukseen, että dekoodattu jono alkaa alkupäästä lähtien konvergoimaan kohden lähetettyä jonoa, kun etäisyyksiä lasketaan sopivan ikkunan yli (jollei ole tapahtunut paljon virheitä) ja siksi riittävän viipeen päästä voidaan tehdä lopullinen päätös alkupään todennäköisimmästä informaatiobittijonosta. Kooderin tilasiirrokset havainnollistuvat tilataulukon sijaan kompaktimmassa muodossa tiladiagrammista.

1/3 -KOODERI TILADIAGRAMMI 13 Koodien kuvaamisen perustana on aina tila- ja siirtymätaulukko.

1/3 -KOODERI TRELLISDIAGRAMMI 14 Trellis-dekoodauksen idea perustuu havaintoon, että koodipuu alkaa toistamaan itseään K:n haaran jälkeen (K on vaikutuspituus). Se on nähtävissä kuvan 11.25 koodipuusta, jolle K = 3. Neljännen tulobitin jälkeen on luotu 16 oksaa. Kooderin lähtö siis riippuu kolmesta viimeisimmästä tulobitistä (K = 3). Kun 4 bitti on tullut, on aivan sama oliko ensiksi tullut bitti {1} vai {0}, koska lähtö riippuu vain biteistä 2., 3. ja 4..

1/3 -KOODERI TRELLISDIAGRAMMI 15 Kooderin tilaksi määritellään rekisteristä kiikkujen 1 ja 2 tila S 1 S 2 ennen uuden bitin sisään tuloa. Digitaalitekniikasta tutun sekventiaalisen tilakoneen perusidean mukaisesti nykytila ja tulobitti yhdessä määräävät koneen (kooderin) seuraavan tilan sekä sen lähtöbitit. Edellisellä 1/3-kooderilla on trellis-diagrammissa 2 2 = 4 erilaista mahdollista tilaa, koska kaksi rekisterin bittiä S 1 S 2 määrittelevät kunkin hetkisen tilan Viterbi-algoritmi (keksijä Andrew Viterbi) perustuu trellisdiagrammin älykkääseen hyväksikäyttöön. Trellisdiagrammia kutsutaan myös ristikkodiagrammiksi.

1/3 -KOODERI TRELLISDIAGRAMMI 16 Trellis-diagrammi on siis koodipuu paljon kompaktimmassa muodossa, josta eksponentiaalinen kasvu on jäänyt pois (kasvu lineaarista). Alla esim. tiloihin A ja C voidaan päätyä vain tiloista A ja B.

1/3 -KOODERI TRELLISDIAGRAMMI 17 Trellis (ristikko) saadaan muodostettua tiladiagrammista. Aluksi kooderi on tilassa A (000). Tulobitti {0} saa kooderin pysymään tilassa A ja se osoitetaan katkoviivalla, kun taas tulobitti {1} aiheuttaa ehjällä viivalla kuvatun siirtymän C-tilaan. Mikä tahansa neljästä tilasta saadaan määriteltyä kahdella peräkkäisellä tulobitillä. 3. tulobitin jälkeen tämä trellis alkaa toistua.

18 VITERBI-ALGORITMI (S)

VITERBI-ALGORITMI (S) 19 Tarkastellaan vastaanotettua bittijonoa: 110 101 011 111, kun lähetetty jono oli: 111 101 011 101 (virheet paikoissa 3 ja 11). 1. askeleessa lasketaan alkusolmun (A-tila) ja kunkin neljän tilan HE:t kolmen tilan (vaikutuspit.) syvyydeltä. Koska kuhunkin tilaan voidaan tulla vain kahdesta mahdollisesta edellisestä tilasta (solmusta), lasketaan kahdeksan (2 4) eri polun etäisyydet vastaanotetusta jonosta. HE:t on alla laskettu 3 3 = 9 tulobitin matkalta.

VITERBI-ALGORITMI (S) 20 Kun etäisyydet K:n mittaiselta matkalla on laskettu, säilytetään muistissa vain kuhunkin tilaan tuleva H-etäisyydeltään pienimmän arvon omaava jono, jota kutsutaan selviytyjäksi (survivor). Seuraavasta tilasta saatavat selviytyjät ovat aina edellisten selviytyjien jatkeita, koska muut jo hylätyt polut trelliksessä eivät voi enää olla etäisyydeltään lähempänä. Joka tilajaksossa pudotetaan siis puolet siihen astisista kaikista mahdollisista poluista pois, mikä pienentää sekvenssimuistin tarvetta logaritmisesti. Jos tilaan tulee kaksi saman H-etäisyyden selviytyjää, voidaan jompi kumpi tilaan tulevista poluista hylätä, koska oikea polku löytyy myöhemmin (prosessi konvergoi lopulta oikeaan polkuun). Seuraavaksi otetaan käsittelyyn seuraava kolmen bitin lohko (111) liitettäväksi jonoon 110 101 011, jolle lasketaan etäisyydet uudestaan ja valitaan selviytyjät. Tulos on esitetty taulukossa 11.8.

VITERBI-ALGORITMI (S) 21 Dekoodaustulos: 1010 (sama kuin aiemmin puuhaussa)

VITERBI-ALGORITMI (S) 22 Lopulta, esim. viiden vaikutuspituuden jälkeen, täytyy tehdä päätös vastaanotetun jonon alkupäästä kuten puudekoodauksessakin. Tuolloin selviytyjät ovat jo tn. yhtyneet diagrammin alkupäässä. Kuvattua prosessia jatketaan, kunnes kaikki tulobitit on prosessoitu. Bittijonon loputtua täytyy vielä neljästä jäljellä olevasta selviytyjästä jättää jäljelle vain yksi. Se tehdään syöttämällä algoritmille kaksi dummy-nollaa infosekvenssin lopuksi (kahden peräkkäisen tilan verran, eli tässä 6 bittiä), jolloin algoritmi palautuu takaisin tilaan A.

VITERBI-ALGORITMI (S) 23 Vastaanotettua jonoa lähimmän jonon etsintä saadaan siis palasteltua pienempiin helposti prosessorilla toteutettaviin osiin: aiemmat talletetut välitulokset liitetään tämänhetkisiin uusiin tuloksiin. Näin kattavan haun eksponentiaalisesti kasvava muistin tarve saadaan pienennettyä lineaariseksi jonon pituuden funktiona, kun kussakin tilassa hylätään aina puolet niihin tulevista poluista ja tehdään viiveellä päätös alkupään jonosta. Laskennallinen kompleksisuus ja muistin tarve on puolestaan eksponentiaalisesti (edellä 2 2 =4) verrannollinen kooderin tilojen määrään (tilojen määrä on tietenkin paljon pienempi kuin koko jonon pituus). Siksi tilojen määrä on pidettävä pienenä parametrien n, k ja K valinnalla. Prosessoritoteutuksessa täytyy siis muistaa tilat, niihin tulevat selviytyjät sekä niiden Hamming-etäisyydet. Viterbi-algoritmi on laskennallisesti tehokkain ja käytetyin konvoluutiokoodien dekoodausmenetelmä, jonka vuoksi konvoluutiokoodeja suositaan järjestelmäratkaisuissa.

VITERBI-ALGORITMI ½-KOODILLE ESIMERKKI 1 (S) 24

VITERBI-ALGORITMI ½-KOODILLE ESIMERKKI 1 (S) 25 Trelliskoodauksen tutoriaalianimaatio: http://www.invocom.et.put.poznan.pl/~invocom/courses/p1-7/index.htm

VITERBI-ALGORITMI ½-KOODILLE ESIMERKKI 1 (S) 26

VITERBI-ALGORITMI ½-KOODILLE ESIMERKKI 1 (S) Oletetaan, että on lähetetty datajono: 0000000000... ja on vastaanotettu kaksi virhettä sisältävä jono 0100010000... Huomataan, että lopulta algoritmi löytää pienimmän etäisyyden omaavan polun. 27

VITERBI-ALGORITMI ½-KOODILLE ESIMERKKI 1 (S) 28 Tämä polku on lähimpänä lähetettyä Nämä polut hylättäisiin seuraavassa vaiheessa.

VITERBI-ALGORITMI ½-KOODILLE ESIMERKKI 2 (S) Lähetetty datajono: 0000000000... On vastaanotettu kolme lähekkäin toisiaan sijaitsevaa virhettä (virheryöppy) sisältävä jono 1100010000... Esim. 1 verrattuna virheitä on nyt liikaa 10 bitin matkalla, joten algoritmi ei kykene korjaamaan niitä, ja valitsee väärän polun. Dekoodauksessa siis hylätään etäisyyden perusteella oikea polku, jota ei enää myöhemmin kyetä löytämään. Syntyy siis dekoodausvirhe virheryöpystä johtuen. 29

30 SEKVENTIAALINEN DEKOODAUS

SEKVENTIAALINEN DEKOODAUS ½-KOODILLE 31 Ideana on vaeltaa yrityksen ja erehdyksen periaatteella puussa ja laskea jatkuvasti H- etäisyyttä puun juuresta lukien. Kun etäisyys kasvaa nopeasti, on se merkki siitä, että ollaan tn. väärällä polulla ja siksi täytyy palata takaisin johonkin aiempaan välipisteeseen ja jatkaa arvauksen perusteella jotain toista polkua pitkin. Menetelmä on tehokkaampi kuin systemaattinen puun läpikäynti, sillä oikea polku löytyy todennäköisesti nopeammin. Tarvitaan välttämättä väärän polun hylkäyskynnys. Voi verrata analogisesti autolla ajamiseen kartan kanssa. Niin kauan kuin autoilija tunnistaa kartalla näkyviä maamerkkejä matkan varrella, hän jatkaa eteenpäin, mutta kääntyy takaisin kun mielestään ei enää ole kartalla.

SEKVENTIAALINEN DEKOODAUS ½-KOODILLE 32

33 KONVOLUUTIOKOODIEN SUORITUSKYKYVERTAILUT

KONVOLUUTIOKOODIEN VERTAILU (S) 34

KONVOLUUTIOKOODIEN VERTAILU (S) 35 t = d free 2 1

KONVOLUUTIOKOODIEN VERTAILU (S) 36

KONVOLUUTIOKOODIEN VERTAILU (S) 37 Konvoluutiokoodin suorituskykyyn vaikuttaa vapaa etäisyys (free distance), joka on kahden äärettömän pitkän koodatun sekvenssin pienin Hamming-etäisyys. Vapaan etäisyyden avulla voidaan laskea yläraja saavutettavissa olevalle suorituskyvylle P E (siis koodausvahvistukselle) kuten myös arvo korjauskyvylle t = (d free -1)/2.