Reed-Solomoni veaparanduskoodid: põhimõte, toimimine ja rakendused

Avasta Reed–Solomoni veaparanduskoodide põhimõte, toimimine ja praktilised rakendused — usaldusväärne andmete taastamine CD/DVD, Blu‑ray, DSL, WiMAX, DVB ja ATSC süsteemides.

Reed-Solomoni veaparandus on edasi suunatud veaparanduskood. See põhineb andmetest konstrueeritud polünoomi väärtustel: andmekomplektist moodustatakse polünoom ja hinnatakse seda mitmes punktis — saadud väärtused edastatakse või salvestatakse. Kui polünoomist võetakse proove sagedamini kui vaja, siis on polünoom ülemääratud: vastuvõtja saab algse polünoomi taastada ka siis, kui mõnisada proovi on vigased või kadunud. Polünoomi mõiste ja hindamine seostuvad otse andmete ja polünoomi väärtuste võtmega (polünoomi hindamine), mis võimaldab vigade lokaliseerimist ja parandamist.

Põhimõte lühidalt

Peamine idee on esitada k andmesümbolit kui astme ≤ k−1 polünoomi kordajad ja seejärel arvutada sellest polünoomist n (> k) väärtust eri punktides. Nende n sümboli hulgas on k andmesümbolit ja n−k pariteetsümbolit. Kui mõni vastuvõetud sümbol rikutakse või läheb kaduma, saab vastuvõtja polünoomi ning seeläbi algandmed taastada, kuni rikete arv ei ületa koodiparameetrite võimalust.

Peamised parameetrid ja matemaatiline taust

  • Sümboli suurus: Reed–Solomoni koodid töötavad sümbolitasona, kus üks sümbol on tavaliselt m bitti ja alamruumiks on lõplik keha GF(2^m).
  • Koodipaar (n, k): n on saadetavate sümbolite arv, k on andmesümbolite arv. Pariteetsümbolite arv on n−k.
  • Vigade parandamine: Reed–Solomon võib parandada kuni t = ⌊(n−k)/2⌋ sümbolivead. Kui vigade positsioonid on teada (seitsmiste puhul erasures), saab parandada kuni n−k erasure’t.
  • Primitiivsed koodid: Sageli valitakse n = 2^m − 1 (täispikk RS-kood), kuid koodid võivad olla ka lühemad (shortened).

Kodeerimine

Kodeerimine tehakse tavaliselt kas polünoomi hindamisel või süsteemse teisendusena (kus andmesümbolid jäävad esialgu puutumatuks ja pariteet lisatakse lõppu). Generatorpolünoom g(x) konstrueeritakse nii, et see sisaldab järjestikuseid juure α^b, α^(b+1), … α^(b+n−k−1) (kus α on keha generaator). Pariteetsümbolid leitakse polünoomi jagamisel või otse hindamise teel. Praktikas kasutatakse sageli RS(255,223) tüüpi konfiguratsiooni (m=8), kus n=255 ja k=223 — see on levinud standardites.

Dekodeerimine — kuidas vigasid leitakse ja parandatakse

Peamised sammud dekodeerimisel:

  • Sündroomide arvutamine: arvutatakse vastuvõetud vektorist sündroomid; kui kõik sündroomid on nullid, ei esine vigu.
  • Vigakoordinaatide leidmine: kasutatakse algoritme nagu Berlekamp–Massey või eukleidiline algoritm, et leida vigade lokalisaatori polünoom.
  • Chieni otsing: lokalisaatori polünoomi juurete leidmiseks, mis annavad vigade positsioonid.
  • Forney algoritm: vigade suuruste (magnituudide) arvutamiseks ning vigade parandamiseks.

Need sammud koos annavad stabiilse ja efektiivse veaotsingu ja -paranduse protsessi. Dekodeerimisalgoritmid võivad töötada riistvaras reaalajas või tarkvaras sõltuvalt rakenduse nõudmistest.

Omadused ja piirangud

  • Paremus burst-vigade vastu: kuna RS töötab sümbolitasona (mitu bitti korraga), on see väga hea lühikeste vigade (burst errors) parandamisel.
  • Kompleksus: dekodeerimine on arvutuslikult keerulisem kui lihtsamad pariteedikontrollid; riistvaraline teostus ja optimiseeritud algoritmid on levinud suurel andmevoos.
  • Latiidsus ja viide: reed–solomoni koodid võivad lisada latentsust (eriti keerukate dekooderalgoritmide ja interleavingu tõttu) — seda tuleb arvestada reaalajas süsteemides.

Rakendused

Reed–Solomoni koode kasutatakse laialdaselt erinevates tehnoloogiates tänu nende usaldusväärsusele ja võimele parandada sümbolivigu. Näited:

  • CD-des, DVD-des ja Blu-ray-diskides kasutatakse RS-koode plaadilt lugemisel tekkivate vigade parandamiseks.
  • Andmeedastussüsteemid nagu DSL ja WiMAX kasutavad RS-koode kanalivigade leevendamiseks.
  • Ringhäälingusüsteemid (DVB, ATSC) kasutavad RS-koodi sageli konkateneeritud koodina koos bitivasakutega, et parandada signaali vastuvõttu.
  • Lisaks kasutatakse RS-koode QR-koodides, kõvaketta- ja andmesalvestuses, RAID-6 tüüpi salvestussüsteemides, satelliitkommunikatsioonis ja süvapõrkondades (deep-space) andmete taastamiseks.

Praktilised tähelepanekud

  • Symbol length: valik m (nt m=8) määrab maksimaalse n ja sobib paljudele rakendustele, kus sümboliks on bait.
  • Interleaving: Reed–Solomoni koodid kombineeritakse tihti interleavinguga, mis hajutab pikad veaburstid mitmeks lühemaks vigaks, mida RS suudab parandada.
  • Kombinatsioon teiste koodidega: RS on sageli väliskood (outer code) concatenated-süsteemides koos valikulisemate sisemiste koodidega (näiteks Viterbi), et saada väga tugevat üldist veakaitset.

Kokkuvõte: Reed–Solomoni veaparandus on mitmekülgne ja praktiline meetod andmete taastamiseks vigastatud või osaliselt kadunud kanalitingimustes. Selle sümboliteline lähenemine, suurepärane võime parandada burste ja rikas teoreetiline aparaat (GF(2^m), generatorpolünoomid, dekodeerimisalgoritmid) teevad sellest standardlahenduse paljudes tarbe- ja tööstuslikes rakendustes.

Ülevaade

Reed-Solomoni koodid on plokk-koodid. See tähendab, et fikseeritud sisendandmete plokk töödeldakse fikseeritud väljundandmete plokiks. Kõige sagedamini kasutatava R-S-koodi (255, 223) puhul kodeeritakse 223 Reed-Solomoni sisendsümbolit (igaühe pikkus kaheksa bitti) 255 väljundsümboliks.

  • Enamik R-S ECC-skeeme on süstemaatilised. See tähendab, et mingi osa väljundkoodisõnast sisaldab sisendandmeid algsel kujul.
  • Reed-Solomoni sümboli suurus on kaheksa bitti, sest suurema sümboli suuruse dekoodreid oleks praeguse tehnoloogiaga raske rakendada. Selline disainivalik sunnib pikima koodisõna pikkuseks 255 sümbolit.
  • Standardne (255, 223) Reed-Solomoni kood on võimeline parandama kuni 16 Reed-Solomoni sümboli viga igas koodisõnas. Kuna iga sümbol koosneb tegelikult kaheksast bitist, tähendab see, et kood suudab parandada kuni 16 lühikest veapartiid, mis tulenevad sisemisest konvolutsioonilisest dekooderist.

Reed-Solomoni kood, nagu ka konvolutsiooniline kood, on läbipaistev kood. See tähendab, et kui kanali sümbolid on kuskil inverteeritud, töötavad dekoodrid ikkagi. Tulemuseks on algsete andmete komplement. Reed-Solomoni kood kaotab aga läbipaistvuse, kui kasutatakse virtuaalset nulltäitmist. Seetõttu on kohustuslik, et enne Reed-Solomoni dekodeerimist tuleb lahendada andmete tähendus (st tõene või komplementaarne).

Programmi Voyager puhul saavutavad R-S koodid peaaegu optimaalse jõudluse, kui neid ühendatakse (7, 1/2) konvolutsioonilise (Viterbi) sisekoodiga. Kuna iga parandatava vea jaoks on vaja kaks kontrollsümbolit, siis on ühe koodisõna kohta vaja kokku 32 kontrollsümbolit ja 223 infosümbolit.

Lisaks sellele võib Reed-Solomoni koodisõnu enne konvolutsioonilist kodeerimist sümbolite kaupa interleaveerida. Kuna see eraldab koodisõnas olevad sümbolid, on vähem tõenäoline, et Viterbi dekooderist lähtuv purunemine häirib rohkem kui ühte Reed-Solomoni sümbolit ühes koodisõnas.

Põhiidee

Reed-Solomoni koodi põhiidee seisneb selles, et kodeeritud andmed kujutatakse kõigepealt polünoomina. Kood tugineb algebrast pärit teoreemile, mis väidab, et mis tahes k erinevat punkti määrab üheselt polünoomi, mille aste on maksimaalselt k-1.

Saatja määrab k - 1. astme {\displaystyle k-1}{\displaystyle k-1} polünoomi, mis esindab k {\displaystyle k}k andmepunkti. Seejärel "kodeeritakse" polünoomi selle hindamisega erinevates punktides ja need väärtused on see, mis tegelikult saadetakse. Edastamise käigus võivad mõned neist väärtustest kahjustuda. Seetõttu saadetakse tegelikult rohkem kui k punkti. Kui piisavalt palju väärtusi on õigesti vastu võetud, saab vastuvõtja järeldada, milline oli algne polünoom, ja dekodeerida algsed andmed.

Samamoodi, nagu saab kõverat parandada, interpoleerides lünka mööda, saab Reed-Solomoni koodiga ületada andmeplokis esinevad vead, et taastada algse kõvera joonistanud polünoomi koefitsiendid.

Ajalugu

Koodi leiutasid 1960. aastal Irving S. Reed ja Gustave Solomon, kes olid tollal MIT Lincolni laboratooriumi töötajad. Nende põhjapanev artikkel kandis pealkirja "Polünoomikoodid teatud piiratud väljadel". Selle kirjutamise ajal ei olnud digitaaltehnoloogia veel piisavalt arenenud, et seda kontseptsiooni rakendada. Esimene RS-koodide rakendus 1982. aastal masstoodangus oli kompaktplaat, kus kasutatakse kahte omavahel põimitud RS-koodi. Elwyn Berlekamp ja James Massey töötasid 1969. aastal välja tõhusa dekodeerimisalgoritmi suurte vahemaade RS-koodide jaoks. Tänapäeval kasutatakse RS-koode kõvakettal, DVD-l, telekommunikatsioonis ja digitaalringhäälingu protokollides.


AlegsaOnline.com - 2020 / 2025 - License CC3