Virheenkorjauskoodi - Error correction code

In Computing , tietoliikenne , informaatioteorian , ja koodaus teoria , virheenkorjauskoodin , joskus virheenkorjauskoodin , ( ECC ) käytetään ohjaamiseksi virheitä tietojen epäluotettavia tai meluisa viestintäkanavia . Keskeinen ajatus on, että lähettäjä koodaa viestin tarpeettomilla tiedoilla ECC: n muodossa. Redundanssin avulla vastaanotin voi havaita rajoitetun määrän virheitä, joita voi esiintyä missä tahansa viestissä, ja usein korjata nämä virheet ilman uudelleenlähetystä. Amerikkalainen matemaatikko Richard Hamming oli edelläkävijä tällä alalla 1940-luvulla ja keksi ensimmäisen virheenkorjaavan koodin vuonna 1950: Hammingin (7,4) koodin .

ECC eroaa virheiden havaitsemisesta , koska havaitut virheet voidaan korjata, ei vain havaita. Etuna on, että ECC: tä käyttävä järjestelmä ei vaadi paluukanavaa tietojen uudelleenlähetyksen pyytämiseen virheen sattuessa. Haittapuoli on, että viestiin lisätään kiinteä yleiskustannus, mikä edellyttää suurempaa eteenpäin suuntautuvan kanavan kaistanleveyttä. Siksi ECC: tä käytetään tilanteissa, joissa uudelleenlähetykset ovat kalliita tai mahdottomia, kuten yksisuuntaiset tietoliikenneyhteydet, ja kun lähetetään useille vastaanottajille monilähetyksessä . Myös pitkän viiveen yhteydet hyötyvät; Uranuksen ympärillä kiertävän satelliitin tapauksessa uudelleen lähettäminen virheiden vuoksi voi aiheuttaa viiden tunnin viiveen. ECC -tiedot lisätään yleensä massamuistilaitteisiin vioittuneiden tietojen palauttamiseksi, niitä käytetään laajalti modeemeissa ja niitä käytetään järjestelmissä, joissa ensisijainen muisti on ECC -muisti .

ECC -käsittely vastaanottimessa voidaan soveltaa digitaaliseen bittivirtaan tai digitaalisesti moduloidun kantoaallon demodulointiin. Jälkimmäisessä tapauksessa ECC on olennainen osa vastaanottimen ensimmäistä analogia-digitaalimuunnosta . Viterbi-dekooderi toteuttaa pehmeä päätös algoritmi demoduloida digitaalisen datan analogiseksi signaaliksi kohinan vääristämiä. Monet ECC-kooderit/-dekooderit voivat myös tuottaa BER-signaalin ( bit-error rate ), jota voidaan käyttää palautteena analogisen vastaanottoelektroniikan hienosäätöön.

Korjattavien virheiden tai puuttuvien bittien enimmäisosuudet määräytyvät ECC -koodin suunnittelun perusteella, joten erilaiset virheenkorjauskoodit sopivat eri olosuhteisiin. Yleensä vahvempi koodi aiheuttaa enemmän redundanssia, joka on lähetettävä käytettävissä olevan kaistanleveyden avulla, mikä vähentää tehokasta bittinopeutta ja parantaa samalla vastaanotettua tehokasta signaali-kohinasuhdetta. Meluisa-kanavakoodauksen lause on Claude Shannonin voidaan laskea suurin saavutettavissa viestinnän kaistanleveys tietyn maksimaalisen hyväksyttävän virhetodennäköisyys. Tämä asettaa rajat kanavan teoreettiselle enimmäistiedonsiirtonopeudelle jollakin tietyllä peruskohinatasolla. Todisteet eivät kuitenkaan ole rakentavia, joten ne eivät anna tietoa siitä, kuinka rakentaa kapasiteetin saavuttamiskoodi. Vuosien tutkimuksen jälkeen jotkin kehittyneet ECC -järjestelmät ovat vuodesta 2016 lähtien lähellä teoreettista maksimirajaa.

Virheenkorjaus eteenpäin

In tietoliikenne , informaatioteorian , ja koodausteoriaan , forward error correction ( FEC ) tai kanavakoodaus on tekniikka, jota käytetään ohjaamiseksi virheet sisään tiedonsiirron epäluotettavia tai meluisa viestintäkanavia . Keskeinen ajatus on, että lähettäjä koodaa viestin tarpeettomalla tavalla, useimmiten käyttämällä ECC: tä.

Redundanssin avulla vastaanotin voi havaita rajoitetun määrän virheitä, joita voi esiintyä missä tahansa viestissä, ja usein korjata nämä virheet ilman uudelleenlähetystä. FEC antaa vastaanottimelle mahdollisuuden korjata virheet tarvitsematta paluukanavaa tietojen uudelleenlähetyksen pyytämiseksi, mutta kiinteän, suuremman eteenpäin suuntautuvan kanavan kaistanleveyden hinnalla. Siksi FEC: tä käytetään tilanteissa, joissa uudelleenlähetykset ovat kalliita tai mahdottomia, kuten yksisuuntaiset tietoliikenneyhteydet, ja kun lähetetään useille vastaanottajille monilähetyksessä . FEC -tiedot lisätään yleensä massamuistilaitteisiin (magneettiset, optiset ja solid -state/flash -pohjaiset), jotta voidaan palauttaa vioittuneet tiedot, niitä käytetään laajalti modeemeissa , käytetään järjestelmissä, joissa ensisijainen muisti on ECC -muisti ja vastaanottimella ei ole mahdollisuutta pyytää uudelleenlähetystä tai se aiheuttaisi merkittävän viiveen. Esimerkiksi Uranuksen ympärillä kiertävän satelliitin tapauksessa dekoodausvirheiden takia tapahtuva uudelleenlähetys voi aiheuttaa vähintään 5 tunnin viiveen.

FEC -käsittely vastaanottimessa voidaan soveltaa digitaaliseen bittivirtaan tai digitaalisesti moduloidun kantoaallon demodulointiin. Jälkimmäisessä tapauksessa FEC on erottamaton osa vastaanottimen ensimmäistä analogia-digitaalimuunnosta . Viterbi-dekooderi toteuttaa pehmeä päätös algoritmi demoduloida digitaalisen datan analogiseksi signaaliksi kohinan vääristämiä. Monet FEC-kooderit voivat myös tuottaa bittivirhesuhteen (BER) signaalin, jota voidaan käyttää palautteena analogisen vastaanottoelektroniikan hienosäätöön.

Korjattavien virheiden tai puuttuvien bittien enimmäisosuus määräytyy ECC: n suunnittelun perusteella, joten erilaiset eteenpäin lähetettävät virheenkorjauskoodit sopivat eri olosuhteisiin. Yleensä vahvempi koodi aiheuttaa enemmän redundanssia, joka on lähetettävä käytettävissä olevan kaistanleveyden avulla, mikä vähentää tehokasta bittinopeutta ja parantaa samalla vastaanotettua tehokasta signaali-kohinasuhdetta. Meluisa-kanavakoodauksen lause Claude Shannonin vastaa kysymykseen, kuinka paljon kaistanleveyttä jää tiedonsiirtoyhteyden käyttämällä tehokkainta koodi, joka kytkee dekoodauksen virheen todennäköisyys nollaksi. Tämä asettaa rajat kanavan teoreettiselle enimmäistiedonsiirtonopeudelle jollakin tietyllä peruskohinatasolla. Hänen todistuksensa ei ole rakentava, eikä siksi anna tietoa siitä, kuinka rakentaa kapasiteetin saavuttamiskoodi. Kuitenkin vuosien tutkimuksen jälkeen jotkin kehittyneet FEC -järjestelmät, kuten polaarikoodi, saavuttavat Shannon -kanavan kapasiteetin äärettömän pituisen kehyksen hypoteesissa.

Kuinka se toimii

ECC saavutetaan lisäämällä redundanssi lähetettyihin tietoihin algoritmin avulla. Redundantti bitti voi olla monien alkuperäisten informaatiobittien monimutkainen funktio. Alkuperäinen tieto voi näkyä kirjaimellisesti koodatussa lähdössä tai ei; koodit, jotka sisältävät muokkaamattoman syötteen tulostukseen, ovat systemaattisia , kun taas ne, jotka eivät tee sitä, eivät ole systemaattisia .

Yksinkertainen esimerkki ECC: stä on lähettää jokainen databitti 3 kertaa, joka tunnetaan (3,1) toistokoodina . Kohinaisen kanavan kautta vastaanotin saattaa nähdä 8 versiota lähdöstä, katso alla oleva taulukko.

Tripletti vastaanotettu Tulkittu muodossa
000 0 (virheetön)
001 0
010 0
100 0
111 1 (virheetön)
110 1
101 1
011 1

Tämä mahdollistaa minkä tahansa kolmen näytteen virheen korjaamisen "enemmistöäänestyksellä" tai "demokraattisella äänestyksellä". Tämän ECC: n korjaava kyky on:

  • Jopa 1 bitti triplettia virheellisesti, tai
  • enintään 2 bittiä triplettia jätetty pois (tapauksia ei ole esitetty taulukossa).

Vaikka tämä kolminkertainen modulaarinen redundanssi on yksinkertainen toteuttaa ja sitä käytetään laajalti, se on suhteellisen tehoton ECC. Paremmat ECC -koodit tutkivat tyypillisesti useita viimeisiä kymmeniä tai jopa viimeisiä satoja aiemmin vastaanotettuja bittejä määrittääkseen kuinka purkaa nykyiset pienet kourallinen bittejä (tyypillisesti 2 - 8 bitin ryhmissä).

Kohinan keskiarvo virheiden vähentämiseksi

ECC: n voitaisiin sanoa toimivan "keskimääräisellä melulla"; koska jokainen databitti vaikuttaa moniin lähetettyihin symboleihin, joidenkin symbolien aiheuttama turmeltuminen sallii yleensä alkuperäisen käyttäjätiedon erottamisen muista, vioittumattomista vastaanotetuista symboleista, jotka myös riippuvat samasta käyttäjätiedosta.

  • Tämän "riskien yhdistämisen" vaikutuksen vuoksi ECC: tä käyttävät digitaaliset viestintäjärjestelmät toimivat yleensä selvästi tietyn vähimmäissignaali -kohinasuhteen yläpuolella eivätkä ollenkaan sen alapuolella.
  • Tämä kaikki tai ei mitään taipumusta - kallion vaikutus - tulee selvemmäksi, kun vahvempi koodeja lähemmin lähestyä teoreettisen Shannonin rajan .
  • ECC -koodatun datan limittäminen voi vähentää lähetettyjen ECC -koodien kaikkia tai ei mitään -ominaisuuksia, kun kanavavirheitä esiintyy yleensä purskeina. Tällä menetelmällä on kuitenkin rajansa; sitä käytetään parhaiten kapeakaistaisessa datassa.

Useimmat tietoliikennejärjestelmät käyttävät kiinteän kanavan koodia, joka on suunniteltu sietämään odotettu pahin tapaus bittivirhesuhde , eivätkä sitten toimi ollenkaan, jos bittivirhesuhde on aina huonompi. Jotkut järjestelmät kuitenkin sopeutuvat annettuihin kanavavirheolosuhteisiin: jotkut automaattisen automaattisen toistopyynnön tapaukset käyttävät kiinteää ECC-menetelmää niin kauan kuin ECC pystyy käsittelemään virhetasoa ja siirtyvät sitten ARQ- tilaan, kun virheaste nousee liian korkeaksi; adaptiivinen modulaatio ja koodaus käyttävät erilaisia ​​ECC-nopeuksia, lisäävät enemmän virheenkorjausbittejä per paketti, kun kanavassa on korkeampia virheitä, tai poistavat ne, kun niitä ei tarvita.

ECC -tyypit

Image
Virheenkorjauskoodien lyhyt luokittelu

ECC -koodien kaksi pääluokkaa ovat lohkokoodit ja konvoluutiokoodit .

  • Lohkokoodit toimivat ennalta määrätyn kokoisten bittien tai symbolien kiinteän kokoisilla lohkoilla (paketeilla). Käytännölliset lohkokoodit voidaan yleensä purkaa kovalla koodilla polynomi-ajassa niiden lohkon pituuteen.
  • Konvoluutiokoodit toimivat mielivaltaisen pituisilla bitti- tai symbolivirroilla. Ne dekoodataan useimmiten pehmeästi Viterbi -algoritmilla , vaikka toisinaan käytetään muita algoritmeja. Viterbi -dekoodaus mahdollistaa asymptoottisesti optimaalisen dekoodaustehokkuuden, kun konvoluutiokoodin rajoituspituus kasvaa, mutta eksponentiaalisesti kasvavan monimutkaisuuden kustannuksella . Lopetettu konvoluutiokoodi on myös lohkokoodi siinä mielessä, että se koodaa syöttötiedon lohkon, mutta konvoluutiokoodin lohkon koko on yleensä mielivaltainen, kun taas lohkokoodeilla on kiinteä koko, joka määräytyy niiden algebrallisten ominaisuuksien mukaan. Konvoluutiokoodien päättämistyyppejä ovat "hännänpureminen" ja "bittien huuhtelu".

Lohkokoodeja on monenlaisia; Reed – Salomon -koodaus on huomionarvoista sen laajan käytön vuoksi CD -levyillä , DVD -levyillä ja kiintolevyasemilla . Muita esimerkkejä klassisista lohkokoodeista ovat Golay , BCH , moniulotteinen pariteetti ja Hamming -koodit .

Hamming ECC: tä käytetään yleisesti NAND -flash -muistivirheiden korjaamiseen. Tämä tarjoaa yhden bitin virheenkorjauksen ja 2-bittisen virheentunnistuksen. Hamming-koodit sopivat vain luotettavampaan yksitasoiseen soluun (SLC) NAND. Tiheä monitasoinen solu (MLC) NAND voi käyttää monibittistä korjaavaa ECC: tä, kuten BCH tai Reed-Salomon. NOR Flash ei yleensä käytä virheenkorjausta.

Klassiset lohkokoodit dekoodataan yleensä vaikean päätöksenteon algoritmeilla, mikä tarkoittaa sitä, että jokaisesta tulo- ja lähtösignaalista tehdään vaikea päätös, onko se yksi- vai nollabitti. Sitä vastoin konvoluutiokoodit dekoodataan tyypillisesti käyttämällä pehmeän päätöksenteon algoritmeja, kuten Viterbi-, MAP- tai BCJR- algoritmeja, jotka käsittelevät (diskretoituja) analogisia signaaleja ja jotka mahdollistavat paljon paremman virheenkorjauskyvyn kuin vaikeiden päätösten dekoodaus.

Lähes kaikki klassiset lohkokoodit soveltavat äärellisten kenttien algebrallisia ominaisuuksia . Siksi klassisia lohkokoodeja kutsutaan usein algebrallisiksi koodeiksi.

Toisin kuin perinteiset lohkokoodit, joissa usein määritetään virheiden havaitsemis- tai korjausominaisuus, monilla nykyaikaisilla lohkokoodeilla, kuten LDPC-koodeilla, ei ole tällaisia ​​takeita. Sen sijaan modernit koodit arvioidaan niiden bittivirhesuhteiden perusteella.

Useimmat eteenpäin lähetettävät virheenkorjauskoodit korjaavat vain bittien kääntöjä, mutta eivät bittien lisäyksiä tai poistoja. Tässä asetuksessa Hamming -etäisyys on sopiva tapa mitata bittivirhesuhde . Muutama eteenpäin lähetetty virheenkorjauskoodi on suunniteltu korjaamaan bittien lisäyksiä ja poistoja, kuten merkkikoodit ja vesileimakoodit. Levenshteinin etäisyys on sopivampi tapa mitata bittivirhesuhdetta käytettäessä tällaista koodeja.

Koodinopeus ja kompromissi luotettavuuden ja tiedonsiirtonopeuden välillä

ECC: n perusperiaate on lisätä redundantteja bittejä, jotta dekooderi voi selvittää lähettimen koodaaman todellisen viestin. Tietyn ECC-järjestelmän koodinopeus määritellään tietyn bittien lukumäärän ja tietyn tietoliikennepaketin bittien kokonaismäärän (eli informaation ja redundanssibittien) välisenä suhteena. Koodinopeus on siis reaaliluku. Alhainen koodinopeus lähellä nollaa tarkoittaa vahvaa koodia, joka käyttää monia redundantteja bittejä hyvän suorituskyvyn saavuttamiseksi, kun taas suuri koodinopeus lähellä 1 tarkoittaa heikkoa koodia.

Tiedot suojaavat redundantit bitit on siirrettävä käyttämällä samoja viestintäresursseja, joita ne yrittävät suojata. Tämä aiheuttaa perustavanlaatuisen kompromissin luotettavuuden ja tiedonsiirtonopeuden välillä. Eräässä ääripäässä vahva koodi (jolla on alhainen koodinopeus) voi aiheuttaa merkittävän lisäyksen vastaanottimen SNR: ssä (signaali-kohinasuhde) pienentäen bittivirhesuhdetta tehokkaan datanopeuden pienentämisen kustannuksella. Toisaalta ECC: n käyttämättä jättäminen (eli koodinopeus, joka on yhtä suuri kuin 1) käyttää koko kanavaa tiedonsiirtotarkoituksiin sillä hinnalla, että bitit jätetään ilman lisäsuojaa.

Yksi mielenkiintoinen kysymys on seuraava: kuinka tehokas tiedonsiirron kannalta voi olla ECC, jolla on vähäinen dekoodausvirhetaso? Claude Shannon vastasi tähän kysymykseen toisella lauseellaan, jonka mukaan kanavan kapasiteetti on suurin bittinopeus, joka voidaan saavuttaa millä tahansa ECC: llä, jonka virhetaso on yleensä nolla: Hänen todistuksensa perustuu Gaussin satunnaiseen koodaukseen, joka ei sovellu todelliseen maailmaan sovellukset. Shannonin työn antama yläraja inspiroi pitkää matkaa ECC: iden suunnittelussa, jotka voivat olla lähellä lopullista suorituskykyä. Erilaiset koodit voivat nykyään saavuttaa lähes Shannonin rajan. Kuitenkin kapasiteetin saavuttaminen ECC: t ovat yleensä erittäin monimutkaisia ​​toteuttaa.

Suosituimmissa ECC-laitteissa on kompromissi suorituskyvyn ja laskennallisen monimutkaisuuden välillä. Yleensä niiden parametrit antavat valikoiman mahdollisia koodinopeuksia, jotka voidaan optimoida skenaarion mukaan. Yleensä tämä optimointi tehdään pienen dekoodausvirheen todennäköisyyden saavuttamiseksi minimoiden vaikutukset datanopeuteen. Toinen kriteeri koodinopeuden optimoimiseksi on tasapainottaa alhainen virhetaso ja uudelleenlähetysten määrä viestinnän energiakustannusten mukaan.

Ketjutetut ECC -koodit parantavat suorituskykyä

Klassiset (algebralliset) lohkokoodit ja konvoluutiokoodit yhdistetään usein ketjutettuihin koodausmenetelmiin, joissa lyhyt rajoituspituinen Viterbi-dekoodattu konvoluutiokoodi tekee suurimman osan työstä ja lohko koodi (yleensä Reed – Salomon), jolla on suurempi symbolikoko ja lohkon pituus "pyyhkii" pois kaikki kehityksen dekooderin tekemät virheet. Yksivaiheinen dekoodaus tämän virheenkorjauskoodiperheen kanssa voi tuottaa erittäin alhaisia ​​virhetasoja, mutta pitkän kantaman lähetysolosuhteissa (kuten syvässä tilassa) suositellaan iteratiivista dekoodausta.

Ketjutetut koodit ovat olleet vakiokäytäntö satelliitti- ja syväavaruustiedonsiirrossa siitä lähtien, kun Voyager 2 käytti tekniikkaa ensimmäisen kerran vuoden 1986 tapaamisessaan Uranuksen kanssa . Galileo- alus, iteratiivisen ketjutettujen koodien kompensoimiseksi erittäin korkea virhetaso aiheuttamien tilojen, jolla on epäonnistunut antenni.

Pienitiheyksinen pariteettitarkistus (LDPC)

Pienitiheyksiset pariteettitarkistuskoodit (LDPC) ovat luokka erittäin tehokkaita lineaarisia lohkokoodeja, jotka on valmistettu monista yhden pariteetin tarkistuskoodeista (SPC). Ne voivat tarjota suorituskykyä hyvin lähellä kanavan kapasiteettia (teoreettista maksimi) käyttämällä iteroitua pehmeän päätöksen dekoodausmenetelmää lineaarisessa monimutkaisuudessa lohkon pituuden suhteen. Käytännön toteutukset riippuvat suuresti komponenttien SPC -koodien dekoodauksesta rinnakkain.

Robert G. Gallager esitteli LDPC -koodit ensimmäisen kerran väitöskirjassaan vuonna 1960, mutta enkooderin ja dekooderin käyttöönottoa ja Reed – Salomon -koodien käyttöönottoa koskevien laskennallisten ponnistelujen vuoksi niitä jätettiin enimmäkseen huomiotta 1990 -luvulle saakka.

LDPC-koodeja käytetään nyt monissa viimeaikaisissa nopeissa viestintästandardeissa, kuten DVB-S2 (Digital Video Broadcasting-Satellite-Second Generation), WiMAX ( IEEE 802.16e -standardi mikroaaltoyhteyttä varten), nopea langaton lähiverkko ( IEEE 802.11n) ), 10GBase-T Ethernet (802.3an) ja G.hn/G.9960 (ITU-T-standardi verkkojohtojen, puhelinlinjojen ja koaksiaalikaapelin kautta). Muut LDPC -koodit on standardoitu langattoman tiedonsiirron standardeille 3GPP MBMS -järjestelmässä (katso suihkulähdekoodit ).

Turbo -koodit

Turbo-koodaus on iteroitu pehmeä dekoodausmenetelmä, joka yhdistää kaksi tai useampia suhteellisen yksinkertaisia ​​konvoluutiokoodeja ja lomittajan lohkokoodin tuottamiseksi, joka voi toimia vain murto-osassa desibeliä Shannon-rajasta . LDPC -koodien ennakoiminen käytännön soveltamisen kannalta tarjoaa nyt samanlaisen suorituskyvyn.

Yksi varhaisimmista kaupallisista sovelluksista turbokoodauksessa oli Qualcommin kehittämä ja Verizon Wirelessin , Sprintin ja muiden operaattoreiden myymä digitaalinen CDMA2000 1x (TIA IS-2000) -soluteknologia . Sitä käytetään myös CDMA2000 1x: n kehittämiseen 1x erityisesti Internet-yhteyttä varten, 1xEV-DO (TIA IS-856). Kuten 1x, EV-DO: n on kehittänyt Qualcomm , ja sitä myyvät Verizon Wireless , Sprint ja muut operaattorit (Verizonin 1xEV-DO: n markkinointinimi on Broadband Access , Sprintin kuluttaja- ja yritysmarkkinointinimet 1xEV-DO: lle ovat Power Vision ja Mobile Laajakaista ).

Paikallinen dekoodaus ja koodien testaus

Joskus on tarpeen purkaa vain yksittäiset viestin bitit tai tarkistaa, onko annettu signaali koodisana, ja tehdä se katsomatta koko signaalia. Tämä voi olla järkevää suoratoistoasetuksessa, jossa koodisanat ovat liian suuria klassiseen dekoodaamiseen riittävän nopeasti ja joissa vain muutama bitti viestistä kiinnostaa toistaiseksi. Myös tällaisista koodeista on tullut tärkeä työkalu laskennallisen monimutkaisuuden teoriassa , esimerkiksi todennäköisyyspohjaisesti tarkistettavien todisteiden suunnittelussa .

Paikallisesti dekoodattavat koodit ovat virheenkorjaavia koodeja, joista yksittäiset viestin bitit voidaan palauttaa todennäköisyydellä katsomalla vain pientä (sanotaan vakio) koodisanan paikkoja, vaikka koodisana olisi vioittunut jossain vakio-osassa sijainteja. Paikallisesti testattavat koodit ovat virheenkorjaavia koodeja, joille voidaan todenmukaisesti tarkistaa, onko signaali lähellä koodisanaa, katsomalla vain pientä määrää signaalin paikkoja.

Lomitus

Image
Lyhyt esimerkki lomituksen ideasta

Lomitusta käytetään usein digitaalisissa viestintä- ja tallennusjärjestelmissä parantamaan eteenpäin suuntautuvien virheiden korjauskoodien suorituskykyä. Monet viestintäkanavat eivät ole muistittomia: virheet tapahtuvat tyypillisesti purskeina eikä itsenäisesti. Jos koodisanan sisältämien virheiden määrä ylittää virheenkorjauskoodin kyvyn, se ei palauta alkuperäistä koodisanaa. Lomittaminen helpottaa tätä ongelmaa sekoittamalla lähdesymboleja useiden koodisanojen kesken ja luomalla siten tasaisempi virheiden jakautuminen . Siksi lomitusta käytetään laajalti purskevirheen korjaamiseen .

Nykyaikaisten iteroitujen koodien, kuten turbokoodien ja LDPC -koodien , analyysi olettaa tyypillisesti virheiden itsenäisen jakautumisen. Järjestelmät, jotka käyttävät LDPC -koodeja, käyttävät siksi tyypillisesti ylimääräistä limitystä koodisanan symbolien välillä.

Turbokoodeissa lomitin on kiinteä osa, ja sen oikea muotoilu on ratkaisevan hyvän suorituskyvyn kannalta. Iteratiivisen dekoodauksen algoritmi toimii parhaiten, kun ei ole lyhyissä jaksoissa, että tekijä kaavio , joka edustaa dekooderin; lomittaja valitaan välttämään lyhyitä jaksoja.

Interleaver -malleja ovat:

  • suorakulmaiset (tai yhtenäiset) lomittimet (samanlainen kuin edellä kuvattuja ohituskertoimia käyttävä menetelmä)
  • mullistavia lomittajia
  • satunnaiset lomittajat (jos lomittaja on tunnettu satunnainen permutaatio)
  • S-satunnaislomittaja (jossa lomittaja on tunnettu satunnainen permutaatio, jonka rajoituksena on, että mitään tulosymbolia etäisyyden S sisällä ei näy ulostulon S etäisyydellä).
  • kiistaton toisen asteen permutaatiopolynoomi (QPP). Esimerkki käytöstä on 3GPP Long Term Evolution -matkaviestintästandardi.

In multi kantaja tietoliikennejärjestelmissä, lomitus poikki kantajia voidaan käyttää antamaan taajuus monimuotoisuutta , esimerkiksi, lieventää taajuus-häipyminen tai kapeakaistaista häiriötä.

Esimerkki

Vaihteisto ilman lomitusta :

Error-free message:                                 aaaabbbbccccddddeeeeffffgggg
Transmission with a burst error:                    aaaabbbbccc____deeeeffffgggg

Tässä kukin saman kirjaimen ryhmä edustaa 4-bittistä yhden bitin virheenkorjaavaa koodisanaa. Koodisana cccc muutetaan yhdellä bitillä ja se voidaan korjata, mutta koodisana dddd muutetaan kolmessa bitissä, joten sitä ei voida purkaa lainkaan tai se voidaan purkaa väärin .

Lomituksella :

Error-free code words:                              aaaabbbbccccddddeeeeffffgggg
Interleaved:                                        abcdefgabcdefgabcdefgabcdefg
Transmission with a burst error:                    abcdefgabcd____bcdefgabcdefg
Received code words after deinterleaving:           aa_abbbbccccdddde_eef_ffg_gg

Kussakin koodisanassa "aaaa", "eeee", "ffff" ja "gggg" vain yksi bitti muuttuu, joten yhden bitin virheenkorjaava koodi purkaa kaiken oikein.

Vaihteisto ilman lomitusta :

Original transmitted sentence:                      ThisIsAnExampleOfInterleaving
Received sentence with a burst error:               ThisIs______pleOfInterleaving

Termi "AnExample" on pääosin käsittämätön ja vaikea korjata.

Lomituksella :

Transmitted sentence:                               ThisIsAnExampleOfInterleaving...
Error-free transmission:                            TIEpfeaghsxlIrv.iAaenli.snmOten.
Received sentence with a burst error:               TIEpfe______Irv.iAaenli.snmOten.
Received sentence after deinterleaving:             T_isI_AnE_amp_eOfInterle_vin_...

Mitään sanaa ei menetetä kokonaan ja puuttuvat kirjaimet voidaan palauttaa vähäisellä arvailulla.

Lomituksen haitat

Lomitustekniikoiden käyttö lisää kokonaisviivettä. Tämä johtuu siitä, että koko lomitettu lohko on vastaanotettava, ennen kuin paketit voidaan dekoodata. Myös lomittajat piilottavat virheiden rakenteen; ilman lomitinta kehittyneemmät dekoodausalgoritmit voivat hyödyntää virherakennetta ja saavuttaa luotettavamman tiedonsiirron kuin yksinkertaisempi dekooderi yhdistettynä lomittimeen. Esimerkki tällaisesta algoritmista perustuu hermoverkkorakenteisiin .

Ohjelmisto virheiden korjaamiseen

Virheenkorjaavien koodien (ECC) käyttäytymisen simulointi ohjelmistoissa on yleinen käytäntö ECC: iden suunnittelussa, validoinnissa ja parantamisessa. Tuleva langaton 5G standardi herättää uudenlaisia sovelluksia ohjelmiston kuluttajaneuvontakeskukset: Tällä Cloud -radioliityntäverkkojen (C-RAN) , joka ohjelmistoradiohanke (SDR) yhteydessä. Ajatuksena on käyttää ohjelmisto -ECC: itä suoraan viestinnässä. Esimerkiksi 5G: ssä ohjelmistokeskukset voitaisiin sijoittaa pilveen ja antennit liittää tähän laskentaresurssiin: näin parannetaan viestintäverkon joustavuutta ja parannetaan lopulta järjestelmän energiatehokkuutta.

Tässä yhteydessä on saatavilla useita avoimen lähdekoodin ohjelmistoja, jotka on lueteltu alla (ei tyhjentävä).

  • AFF3CT (A Fast Forward Error Correction Toolbox): täysi viestintäketju C ++: ssa (monet tuetut koodit, kuten Turbo, LDPC, Polar -koodit jne.), Erittäin nopea ja erikoistunut kanavakoodaukseen (voidaan käyttää simulointiohjelmana tai SDR: n kirjasto).
  • IT ++ : C ++ -luokka- ja funktiokirjasto lineaariselle algebralle, numeeriselle optimoinnille, signaalinkäsittelylle, viestinnälle ja tilastoille.
  • OpenAir : Kehittyneiden pakettien ydinverkkoja koskevien 3GPP -määritysten toteuttaminen (C -muodossa ).

Luettelo virheitä korjaavista koodeista

Etäisyys Koodi
2 (yhden virheen tunnistus) Pariteetti
3 (yhden virheen korjaus) Kolminkertainen modulaarinen redundanssi
3 (yhden virheen korjaus) täydellinen Hamming, kuten Hamming (7,4)
4 ( SECDED ) Laajennettu Hamming
5 (kaksoisvirheen korjaus)
6 (kaksoisvirheen korjaus/kolminkertainen virheen tunnistus)
7 (kolmen virheen korjaus) täydellinen binäärinen Golay -koodi
8 (TEKSTI) laajennettu binäärinen Golay -koodi

Katso myös

Viitteet

Lue lisää

Ulkoiset linkit