220 likes | 388 Views
Lineaarinen lohkokoodaus, Block Coding. Alkuperäisen lähdesymbolin pituus on k bittiä. Muodostetaan koodattu symboli lähetettäväksi siirtotielle ja silloin koodattu symboli on pituudeltaan n bittiä (luonnollisesti n>k). Tuloksena on (n, k)-lohkokoodaus.
E N D
Lineaarinen lohkokoodaus, Block Coding • Alkuperäisen lähdesymbolin pituus on k bittiä. Muodostetaan koodattu symboli lähetettäväksi siirtotielle ja silloin koodattu symboli on pituudeltaan n bittiä (luonnollisesti n>k). Tuloksena on (n, k)-lohkokoodaus. • Bittien lisääminen vaikuttaa hidastavasti tiedonsiirtonopeuteen. • Määritellään koodaussuhde (code rate) R=k/n. • Kerrointa 1-k/n kutsutaan lohkokoodin redundanssiksi. tMyn
Koodauksen suorituskyky (coding efficiency) • Tällä ilmaistaan miten hyvin virheitä pystytään havaitsemaan tai korjaamaan koodatusta informaatiosymbolista suhteessa ”ylimääräisiin” bitteihin. • Jotkin koodaustavat soveltuvat paremmin virheiden havaitsemiseen kuin niiden korjaamiseen. Myös päinvastainen on totta. tMyn
Jos halutaan lähettää bittejä, niin silloin voidaan esim. ryhmitellä bitit kolmen ryhmiksi. Mahdollisia informaatiosanoja tulee siis kahdeksan kappaletta: 000, 001, 010, 011, 100, 101, 110, 111. • Informaatiosanat voidaan koodata kahdeksaksi koodisanaksi, joissa on redundanssia (käytetään kuhunkin koodisanaan esim. 5 bittiä). Näin saadaan aikaan laittomia bittikombinaatioita. • Bittivirheet ovat kahden tyyppisiä: joko virhe voi sattua yksittäiseen bittiin täysin riippumatta virhe- todennäköisyydestä viereiseen bittiin, tai sitten voi tulla virheryöppyjä (useampi peräkkäinen bitti on virheellinen). tMyn
Olkoot koodatut symbolit kaikki saman mittaisia. • Kahden koodatun symbolin etäisyys määritellään erilaisten bittien lukumääräksi vastinkohdissa, siis esim. koodisanojen 111 ja 000 etäisyys on 3 ja koodisanojen 010 ja 011 etäisyys on 1. • Tarkastellaan vielä alkuperäistä esimerkkiä, informaatiosymbolit 000, … 111. Vierekkäisten symbolien etäisyys on 1. Jos siirtotiellä tulee yhden bitin virhe, esim. lähetetään 000 mutta vastaanotetaan 001, niin tuli ongelma! Symboli 001 on laillinen symboli, joten vastaanotin ei voi mitenkään arvata, että virhe on tapahtunut. tMyn
Otetaan esimerkki koodatusta symbolijoukosta, jossa minimietäisyys minkä tahansa koodisanaparin välillä on vähintään 2, siis vaikkapa: 0000, 0011, 0101, 0110, 1001, 1010, 1100, 1111. • Lähetetään esim. 0101 ja vastaanotetaankin 0111 (yhden bitin virhe tapahtui matkalla). Vastaanotin huomaa, että koodisana on laiton, mutta ei pysty päättelemään, mikä olisi oikea, alkuperäinen, koodisana. • Lisätään koodisanojen etäisyyttä siten, että minimietäisyys on 3. tMyn
Jos tällaisessa tapauksessa tapahtuu yhden bitin siirtovirhe, niin vastaanotettu koodisana on 1 etäisyydellä alkuperäisestä lähetetystä koodisanasta, ja vähintään 2 etäisyydellä kaikista muista laillisista koodisanoista. • Nyt siis pystytään korjaamaan yhden bitin virhe/koodisana. tMyn
Yleistys: Jos koodisanojen minimietäisyys on , niin silloin voidaan havaita virhettä. • Vastaavasti jos on parillinen, niin silloin voidaan korjata virhettä, ja jos on pariton, niin pystytään korjaamaan vastaavasti virhettä. tMyn
Lineaarinen lohkokoodaus, systemaattiset algebralliset koodit • Systemaattiset algebralliset koodit voidaan generoida suoraan matriisilaskennan avulla: [v]=[u][G], jossa [u] on [1*k] vektori edustaen alkuperäistä informaatiota [v] on [1*n] vektori edustaen koodattua informaatiota [G] on [k*n] matriisi, jota käytetään koodattujen informaatiosanojen generointiin. tMyn
Esimerkiksi (7, 4) lineaarinen koodi voitaisiin generoida matriisilla . • Jokaista koodingenerointimatriisia [G] kohden on olemassa pariteettitarkistusmatriisi [H]. Kun äskeistä esimerkkimatriisia [G] tarkastellaan, niin huomataan, että vasemmalla ”laidalla” on pariteettibittien generointiin tarvittava osuus. tMyn
Oikealla ”laidalla” on yksikkömatriisi, siis uudelleenkirjoitettuna: . • Pariteettitarkistusmatriisi voidaan kirjoittaa tästä esityksestä aloittamalla yksikkömatriisilla ja jatkamalla matriisin [G] pariteettibittiosuuden transponoidulla muodolla. tMyn
Jos merkitään niin silloin • Auki kirjoitettuna saadaan äskeisillä arvoilla = . tMyn
Pariteettitarkistusmatriisilla on seuraava ominaisuus: • Tulkinta: kun kerrotaan mikä tahansa virheetön koodisana pariteettitarkistusmatriisin transponoidulla muodolla, niin tulokseksi saadaan nollavektori. • Jos siirtotiellä on tapahtunut yhden bitin virhe, niin äskeinen tulo paljastaa virheen paikan ja siis yhden bitin virhe voidaan korjata! • Vastaanotetun koodivektorin ja pariteettitarkistusmatriisin transponoidun muodon tuloa kutsutaan syndroomaksi (syndrome), koska se kertoo, mikä meni pieleen. tMyn
Keksijänsä Richard W. Hammingin mukaan puhutaan suosituista Hamming-lohkokoodeista. • Vaihtoehtoja on monta, esim. (7, 4), (15, 11), (31, 26), (63, 57), (127, 120), (255, 247), (511, 502). • Hamming-koodit ovat tehokkaita, esim. (15, 11) koodauksen suhteeksi saadaan 11/15=73%. • Sitä mukaa kun k kasvaa, vaikeutuu käytännön toteutus: • Kestää kauemmin ryhmitellä informaatiobitit k:n pituisiksi lohkoiksi. • Vastaanotossa yritetään etsiä vastaanotetuista mahdollisesta vaihtoehdosta lähin laillinen vaihtoehdosta. Kompleksisuus kasvaa eksponentiaalisesti! tMyn
Hamming-lohkokoodit ovat osajoukko laajemmasta BCH-koodiperheestä. • BCH, Bose-Chaudhuri-Hocquenghem. Koodausmenetelmä kehitettiin vuosina 1959 ja 1960. • Esim. BCH (127, 64)-koodaus pystyy korjaamaan 10 bittiä/koodisymboli… ja BCH (1023, 11) pystyy korjaamaan 255 bittiä/koodisymboli! Hintana on koodauksen suhde, 11/1023=1%!! • Lohkokoodaus toimii parhaimmillaan ympäristössä, jossa virheet esiintyvät tasaisesti ja mielivaltaisesti vastaanotetuissa koodisymboleissa. tMyn
Jos virheet sitä vastoin esiintyvät purskeisesti, niin silloin tarvitaan lisäksi limitystä (interleaving). • Purskeisuus virhe-esiintymisessä on tyypillistä esim. mobiileissa toimintaympäristöissä: signaalin häipyminen ja monitie-eteneminen. • Yksinkertainen tapa toteuttaa limitys onnistuu seuraavasti: käytetään puskurointia, ja kirjoitetaan koodatut symbolisanat matriisin riveihin. Dataa aletaan sitten siirtämään sarake kerrallaan. tMyn
Reed-Solomon –koodit, Irving Reed, Gustav Solomon • R-S-koodit ovat osajoukko BCH-koodeista. • Nyt operoidaan lohko- eikä bittitasolla. • Alkuperäinen binaari-informaatio pakataan aluksi lohkoihin, esim. kukin lohko on pituudeltaan 8 bittiä. Valitaan k kappaletta näitä 8 bitin lohkoa, ja valitaan tämä uusi lohkokokonaisuus uudeksi jakamattomaksi yksiköksi. • Tämä uusi yksikkö (jossa on k kappaletta 8 bitin lohkoja) koodataan siten, että syntyy n kappaletta 8 bitin lohkoja, luonnollisesti n>k. • Tuloksena on R-S (n, k) -lohkokoodaus. tMyn
Lineaarinen lohkokoodaus, sykliset koodit • Olkoot koodisana yleisessä muodossa • Siirretään bittejä yhden position oikealle ja samalla laitimmainen bitti siirtyy toiseen laitaan, siis • Jos kyseessä on syklinen koodi, niin äskeisellä siirrolla saatiin aikaan uusi kelvollinen koodisana! tMyn
Teoreema 1: Jos g(x) on n-k -asteinen polynomi ja se on polynomin tekijä (factor), niin silloin polynomia g(x) voidaan käyttää generoimaan (n, k) syklinen koodi. • Esim. Polynomi voidaan jakaa tekijöihin Siispä ensimmäisellä tekijällä voidaan generoida (7, 6) syklinen koodi ja kahdella jälkimmäisellä tekijällä voidaan generoida (7, 4) syklinen koodi. tMyn
Teoreema 2: Jokainen i:nnen asteinen polynomi, joka on jakamaton, (irreducible = jaollinen tasan vain itsensä ja ykkösen kanssa) on polynomin tekijä. Tällaista jakamatonta polynomia voidaan käyttää generoimaan (2i+1, i+1) syklinen koodi. • Esim. voidaan osoittaa, että polynomi on jakamaton. Teoreeman perusteella tämä polynomi on polynomin tekijä. Tästä tiedetään suoraan, että polynomilla voidaan generoida (7, 4) syklinen koodi. tMyn
Jos polynomi v(x) edustaa koodisanaa (n, k) koodattuna, niin syklinen siirto oikealle j positiota voidaan toteuttaa kaavalla modulo , missä modulo tarkoittaa sitä, että jaetaan termi polynomilla ja otetaan vastaukseksi jakojäännös. Modulo-operaatio on tarpeen, jos on asteluvultaan n tai korkeampi. • Jos koodi on systemaattinen, niin silloin oikealla laidalla olevat bitit edustavat alkuperäistä koodaamatonta informaatiosanaa u. Tätä voidaan kuvata polynomilla koska se kuvaa n-k position siirtoa oikealle. tMyn
Otetaan tästä polynomista modulo g(x) ja merkitään jakojäännöstä r(x):llä: modulo g(x). • Modulo-operaatio tarkoittaa, että suoritetaan jakolasku jossa q(x)=osamäärä ja r(x)=jakojäännös ja josta otetaan vain jakojäännös. Voidaan siis kirjoittaa lauseke tMyn
Lisätään jakojäännös r(x) yhtälön kummallekin puolelle (modulo-2 aritmetiikassa 1+1=0), jolloin saadaan kaava muotoon • Saatiin siis kelvollinen koodisana aikaan!! • Syndroomapolynomi saadaan jakojäännöksenä jakolaskusta v(x) modulo g(x), jossa v(x) on vastaanotettu koodattu symbolisana ja g(x) on koodin generointipolynomi. • Jos mitään virhettä ei ole siirtotiellä tapahtunut, niin silloin jakojäännöstä ei synny. • Jos virhe on tapahtunut, niin silloin syntyy jakojäännös, jonka muoto riippuu siitä missä kohden virhe tapahtui. tMyn