Konvoluutiokoodi on virheenkorjaava koodi , jossa
Konvoluutiokoodi on puu- ja ristikkokoodien erikoistapaus .
Vuonna 1955 L. M. Fink , joka oli tuolloin Leningradin viestintäakatemian osaston johtaja, ehdotti ensimmäistä toistuvaa koodia.
Vuonna 1959 länsimainen asiantuntija Hegelberger ( Hegelbeger ), jolla ei ollut aavistustakaan Neuvostoliiton tutkijoiden työstä koodauksen alalla, "löysi uudelleen" toistuvan koodin ja nimesi sen omalla mukaansa.
Fink itse kirjoitti monografiassa "Theory of Discrete Message Transmission" [1] : "Tässä koodissa koodisymbolien sarjaa ei ole jaettu erillisiin koodiyhdistelmiin. Korjaussymbolit sisällytetään informaatiosymbolivirtaan siten, että jokaisen kahden informaatiosymbolin väliin sijoitetaan yksi korjaussymboli. Merkitään informatiivisia merkkejä kautta ja korjaavia merkkejä saamme seuraavan merkkijonon:
Tietosymbolit määritetään lähetetyn viestin mukaan ja korjaavat symbolit muodostetaan seuraavan säännön mukaisesti:
(1.1)
jossa on mielivaltainen kokonaisluku, jota kutsutaan koodivaiheeksi ( ). Ilmeisesti, jos jokin korjaava symboli b i vastaanotetaan vahingossa, relaatio (1.1) vastaanotetussa sekvenssissä ei täyty arvolle . Jos tietosymboli vastaanotetaan virheellisesti, relaatio (1.1) ei päde kahdelle arvolle , nimittäin for ja for . Tästä on helppo johtaa dekoodausvirheen korjaussääntö. Hyväksytyssä koodisekvenssissä relaatio (1.1) tarkistetaan jokaiselle . Jos se ei ole tyytyväinen kahteen arvoon ( ja ), ja samanaikaisesti
(1.2)
silloin tietoelementti on käännettävä.
Ilmeisesti koodin redundanssi on . Sen avulla voit korjata kaikki virheellisesti vastaanotetut merkit, lukuun ottamatta joitakin huonoja yhdistelmiä. Joten jos , se tarjoaa oikean dekoodauksen, kun kahden virheellisesti vastaanotetun symbolin välillä on vähintään kolme (ja joissakin tapauksissa kaksi) oikein vastaanotettua symbolia (sekä informaatio- että testisymbolit otetaan huomioon).
Ei-rekursiivisen konvoluutiokoodin kooderikaavio on esitetty kuviossa 1 . Se koostuu -ary-siirtorekistereistä, joiden pituus on . Jotkut (ehkä kaikki) joidenkin muistisolujen rekisteritulot ja -lähdöt on kytketty useisiin modulo-lisäjiin . Summainten määrä on suurempi kuin siirtorekisterien lukumäärä:
Kooderin jokaisella kellojaksolla syötetään sen sisääntuloon informaatiosymbolit, jotka syötetään yhdessä siirtorekistereihin tallennettujen symbolien kanssa niiden summaimien tuloihin, joihin on yhteys. Lisäyksen tuloksena on koodisymbolit, jotka ovat valmiita lähetettäväksi. Tällöin jokaisessa siirtorekisterissä tapahtuu siirto: kaikkia soluja siirretään oikealle yhden bitin verran, kun taas vasemmanpuoleiset solut täytetään syötemerkeillä ja oikeimman puoleiset solut pyyhitään pois. Tämän jälkeen lyönti toistetaan. Rekistereiden alkutila tiedetään etukäteen (yleensä nolla).
Esityksen selkeyden vuoksi kuvaamme konvoluutiokoodausta vastaavan koodauslaitteen toiminnan mukaisesti.
Konvoluutiokooderi on laite, joka yleensä vastaanottaa k tuloinformaatiosymbolia kussakin toimintajaksossa ja tulostaa n lähtösymbolia kunkin jakson lähdössä. Numeroa kutsutaan suhteelliseksi koodinopeudeksi. k on informaatiosymbolien lukumäärä, n on viestintäkanavalle lähetettyjen symbolien määrä yhden saapumisjakson aikana informaatiosymbolin kooderiin. Tarkasteltavana olevan syklin lähtösymbolit riippuvat m:stä informaatiosymbolista, jotka saapuvat tähän ja edelliseen jaksoon, eli konvoluutiokoodin lähtösymbolit määräytyvät yksiselitteisesti sen tulosymbolien ja tilan mukaan, joka riippuu m - k aiemmasta informaatiosymbolista . Konvoluutiokoodin pääelementit ovat: siirtorekisteri, modulo 2 -summain, kommutaattori.
Siirtorekisteri on dynaaminen tallennuslaite, joka tallentaa binäärimerkit 0 ja 1. Koodimuisti määrittää liipaisusolujen m määrän siirtorekisterissä. Kun siirtorekisterin sisääntuloon saapuu uusi tietomerkki, oikeanpuoleisimpaan bittiin tallennettu merkki poistetaan rekisteristä ja nollataan. Loput merkit siirretään yhden numeron verran oikealle ja siten vapautetaan vasemmanpuoleisin numero, jonne uusi tietomerkki saapuu.
Modulo 2 -summain laskee yhteen siihen saapuvat symbolit 1 ja 0. Modulo 2:n summaussääntö on seuraava: binäärisymbolien summa on 0, jos syötteisiin tulevien symbolien ykkösten määrä on parillinen, ja yhtä suuri kuin 1, jos tämä luku on outoa.
Kytkin lukee peräkkäin sen tuloihin saapuvat symbolit ja asettaa koodisymbolien sarjan viestintäkanavalle lähdössä. Lohkokoodien analogisesti konvoluutiokoodit voidaan luokitella systemaattisiin ja ei-systeemisiin.
Systemaattinen konvoluutiokoodi on koodi, joka sisältää koodisymbolien lähtöjonossa sen informaatiosymbolien sarjan, joka on luonut sen. Muussa tapauksessa koodia kutsutaan ei-systeemiseksi.
Konvoluutiokoodauksella informaatiosekvenssien muuntaminen lähtö- ja koodisekvensseiksi tapahtuu jatkuvasti. Binäärinen konvoluutiokooderi sisältää m bitin siirtorekisterin ja modulo 2 -summaimet koodisymbolien muodostamiseksi lähtösekvenssissä. Summainten tulot on kytketty tiettyihin rekisterin bitteihin. Lähtökytkin määrittää järjestyksen, jossa koodisymbolit lähetetään viestintäkanavalle. Sitten koodirakenne määräytyy seuraavien ominaisuuksien perusteella.
Mutta! Tämä määritelmä pätee vakiopituisille lohkokoodeille. Konvoluutiokoodit ovat jatkuvia ja niille on tunnusomaista monet minimietäisyydet, jotka määräytyvät koodisekvenssien alkusegmenttien pituuksien perusteella, joiden välillä otetaan pienin etäisyys. Prosessoitavaksi vastaanotetun segmentin pituuden L symbolien lukumäärä määrää vastaanottopuolella dekooderissa olevien solujen lukumäärän.
Olkoon siirtorekisterissä m solua, eli koodimuisti on yhtä suuri kuin m, kytkin suorittaa yhden kyselysyklin välittäen informaatiosymbolien arvot, missä m on k :n kerrannainen , kun taas yhdessä syklissä se pollaa n 2 enkooderin lähtöä. Niiden lähtökoodisymbolien lukumäärä, joihin yhden tuloinformaatiosymbolin muutos vaikuttaa, on . Arvoa I all kutsutaan koodirajoitteen kokonaispituudeksi .
Koska tietyn konvoluutiokoodin korjaavat ominaisuudet määräytyvät koodirajoitteen pituuden ja siirtorekisterin linkkien valinnan mukaan modulo 2 -summaimeen ( XOR ), konvoluutiokooderin rakenteen määrittelemiseksi on tarpeen määrittää, mitkä siirtorekisterin bitit liittyvät kuhunkin modulo 2 -summaimeen ( XOR ).
j:nnen summaimen modulo 2 kytkentä kuvataan j:nnellä generointisekvenssillä:
g j =(g j0 , g j1 ,g j2 ,…,g jm-1 ), (4.1)missä (4.2)
Konvoluutiokoodien tyypilliset parametrit: k, n= 1,2,…,8; R = k/n = 1/4,…, 7/8; m = 2,…,10.
On kätevää määrittää konvoluutiokoodi generoimalla polynomeja, jotka määritetään kaavan (4.1) muodossa analogisesti sen kanssa, miten tämä tehdään lineaarisille lohkosyklisille koodeille . [2]
Generaattoripolynomi määrittelee täysin konvoluutiokoodin binäärikooderin rakenteen. Toisin kuin lohkokoodit , joista jokaista kuvaa vain yksi generoiva polynomi , konvoluutiokoodia kuvataan useilla generoivilla polynomeilla. Konvoluutiokoodia kuvaavien polynomien lukumäärä määräytyy lähtösymbolien lukumäärän n mukaan . Esitetään enkooderin sisäänmenoon tuleva tietosymbolien sarja polynomina
missä X i on viiveoperaattorin symboli siirtorekisterin i jaksolle, ja i = {0, 1} ovat informaation binäärisymboleja. Polynomit, jotka kuvaavat n koodisymbolisarjaa, jotka tulevat enkooderikytkimen tuloon ja sitten viestintäkanavaan, ovat muotoa
missä ovat binäärikoodisymbolit kooderikytkimen j :nnessä sisääntulossa.
Konvoluutiokoodin j : nnellä generoivalla polynomilla on muoto Lisäksi konvoluutiokoodin lineaarisuuden ja hyväksytyn merkintätavan ansiosta saamme .
Konvoluutiokoodin esitystä käyttämällä polynomeja generoimalla voidaan määrittää konvoluutiokoodi binääri- tai oktaalimuotoon kirjoitettujen polynomien generointikertoimien avulla. Oktaalimerkintä on kompaktimpi ja sitä käytetään, kun kooderin siirtorekisteri on pitkä.
Yleisessä tapauksessa j :nnen generoivan polynomin kertoimien sekvenssi on muotoa ja yhtyy koodin generoivan sekvenssin (4.1) kanssa. Sitten, jos on koodattujen symbolien sekvenssi ja koodisymbolien sarja enkooderikytkimen j : nnessä sisääntulossa, niin mille tahansa niistä, jotka esiintyvät -: nnella hetkellä ( ), voimme kirjoittaa
Siten jokainen konvoluutiokoodin kooderin lähtösekvenssin koodisymboli määräytyy koodatun informaation konvoluution ja generoivan sekvenssin mukaan, joka määrittää konvoluutiokoodien nimet. Konvoluutiokoodit ovat iteratiivisten tai toistuvien koodien erikoistapaus.
Konvoluutiokoodeja käytetään luotettavaan tiedonsiirtoon: video, matkaviestintä, satelliittiviestintä. Niitä käytetään yhdessä Reed-Solomon-koodin ja muiden vastaavien koodien kanssa. Ennen turbokoodien keksimistä tällaiset mallit olivat tehokkaimpia ja täyttävät Shannonin rajan. Konvoluutiokoodausta käytetään myös 802.11a -protokollassa fyysisellä MAC-kerroksella tasaisen 0:n ja 1:n jakautumisen saavuttamiseksi sen jälkeen, kun signaali kulkee sekoituslaitteen läpi , minkä seurauksena lähetettyjen symbolien määrä kaksinkertaistuu ja siksi me voi saavuttaa suotuisan vastaanoton vastaanottavassa laitteessa.
Sanakirjat ja tietosanakirjat |
---|