Reed‑Solomonova korekcia chýb
Popis princípu, vlastností, histórie a praktických použití Reed‑Solomonových kódov na opravu chýb v dátových prenosoch a úložiskách.
Prehľad
Reed‑Solomonova korekcia chýb je typ blokového kódovania navrhnutého na detekciu a opravu chýb pri prenose alebo uložení dát. Základnou myšlienkou je interpretovať sekvenciu dát ako koeficienty polynómu nad konečným poľom a následne prenášať hodnoty tohto polynómu v rôznych bodoch. Keď prijímač dostane dostatočný počet správnych hodnôt, dokáže pôvodný polynóm rekonštruovať aj v prítomnosti niekoľkých nesprávnych alebo chýbajúcich symbolov. Pre viac technických detailov pozrite technický prehľad.
Galéria obrázkov
3 ObrázkyPrincíp a vlastnosti
Reed‑Solomonov kód je parametrový kód často označovaný ako RS(n,k), kde k je počet dátových symbolov a n je celkový počet symbolov po zakódovaní. Kód pracuje na symboloch z konečného poľa (najčastejšie GF(2^m)), nie na jednotlivých bitoch. Základné vlastnosti zahŕňajú:
- Silná symbolová odolnosť: dokáže opraviť niekoľko symbolových chýb, nie len jednotlivé bity.
- Nadbytočnosť a korekčná schopnosť: rozdiel n−k určuje množstvo nadbytočných symbolov; počet opráviteľných chýb je približne (n−k)/2.
- Flexibilita parametrov: rôzne voľby n a k umožňujú prispôsobiť kód požiadavkám na redundanciu a výkon.
Podrobnejšie algoritmy dekódovania zahŕňajú metódy založené na Berlekamp‑Masseyovom algoritme, Euklidovom algoritme a výpočte polynomiálnych chybových polomov; existujú aj rozšírené prístupy pre listové dekódovanie. Pozrite si všeobecný prehľad algoritmov na algoritmické zdroje.
Historický kontext
Reed‑Solomonove kódy vyvinuli Irving S. Reed a Gustave Solomon v roku 1960. Od svojho vzniku sa stali jedným z najpoužívanejších kódov pre praktické aplikácie, pretože poskytujú efektívnu ochranu proti sústredeným chybám a erózii dát. Postupne sa objavili optimalizované implementácie aj hardvérové akcelerátory, ktoré umožnili nasadenie v reálnych zariadeniach a systémoch. Viac historických informácií a pôvodný článok je možné nájsť na archívnych zdrojoch.
Použitie a príklady
Vďaka svojim vlastnostiam sa Reed‑Solomonove kódy používajú v mnohých oblastiach. Medzi typické príklady patria:
- Optické média: ochrana dát na kompaktných diskoch a diskovom nosiči, ako sú CD, DVD a Blu‑ray.
- Digitálne vysielanie a prenos: ochrana pri satelitnom a pozemnom vysielaní, štandardy ako DVB alebo ATSC a v bezdrôtových sieťach.
- Sieťové a širokopásmové technológie: použitie v DSL a mobilných systémoch, napríklad DSL alebo WiMAX.
- Kódy v identifikačných a 2D symboloch: napríklad QR kódy a niektoré barcode systémy využívajú RS kódy pre obnovu poškodených častí.
- Úložiská a redundancia: pokročilé erasure kódovanie v systémoch zálohovania a distribuovaných úložiskách často vychádza z princípov Reed‑Solomonových kódov.
Pre ukážky implementácií a štandardy pozrite ďalšie zdroje: optické médiá, DVD štandardy a Blu‑ray špecifikácie.
Dôležité rozdiely a poznámky
Reed‑Solomonove kódy sa odlišujú od bitových kódov (ako napr. BCH alebo konvolučné kódy) predovšetkým tým, že pracujú na symboloch väčších ako 1 bit, čo ich robí vhodnými pri burst‑type chybách. Ich silná stránka je v opravovaní sústredených porúch a v kombinácii s ďalšími technikami (medziľahlé vrstvy ochrany, interleaving) dosahujú ešte väčšiu odolnosť. Existujú aj rozšírenia a variácie, ktoré riešia špecifické potreby pri vysokorýchlostnom prenose alebo pri paralelnom uložení dát. Pre praktické porovnania a implementačné rady je užitočné konzultovať technické manuály a štandardy, napríklad DVB a DSL dokumenty.
Reed‑Solomonova korekcia chýb zostáva kľúčovou technikou v oblasti spoľahlivého prenosu a ukladania dát, pričom sa jej použitie neustále prispôsobuje novým požiadavkám moderných systémov.
Viac referencií a praktických príkladov implementácií nájdete tu: Zdroj 1, Zdroj 2, Zdroj 3.
Prehľad
Reed-Solomonove kódy sú blokové kódy. To znamená, že pevný blok vstupných údajov sa spracuje na pevný blok výstupných údajov. V prípade najčastejšie používaného kódu R-S (255, 223) je 223 vstupných symbolov Reed-Solomona (každý dlhý osem bitov) zakódovaných do 255 výstupných symbolov.
- Väčšina schém R-S ECC je systematická. To znamená, že určitá časť výstupného kódového slova obsahuje vstupné údaje v pôvodnej podobe.
- Bola zvolená veľkosť Reed-Solomonovho symbolu osem bitov, pretože dekodéry pre väčšie veľkosti symbolov by bolo ťažké implementovať pomocou súčasnej technológie. Táto konštrukčná voľba núti najdlhšie kódové slovo k dĺžke 255 symbolov.
- Štandardný Reed-Solomonov kód (255, 223) je schopný opraviť až 16 Reed-Solomonových symbolových chýb v každom kódovom slove. Keďže každý symbol je v skutočnosti osem bitov, znamená to, že kód dokáže opraviť až 16 krátkych sérií chýb spôsobených vnútorným konvolučným dekodérom.
Reedov-Solomonov kód, podobne ako konvolučný kód, je transparentný kód. To znamená, že ak boli symboly kanála niekde na trase invertované, dekodéry budú stále fungovať. Výsledkom bude doplnok pôvodných údajov. Reed-Solomonov kód však stráca svoju transparentnosť, ak sa použije virtuálna nulová výplň. Z tohto dôvodu je povinné, aby sa pred Reed-Solomonovým dekódovaním vyriešil zmysel údajov (t. j. pravý alebo doplnený).
V prípade programu Voyager dosahujú kódy R-S takmer optimálny výkon, keď sú spojené s (7, 1/2) konvolučným (Viterbiho) vnútorným kódom. Keďže na každú chybu, ktorá sa má opraviť, sú potrebné dva kontrolné symboly, výsledkom je celkovo 32 kontrolných symbolov a 223 informačných symbolov na jedno kódové slovo.
Okrem toho sa Reed-Solomonove kódové slová môžu pred konvolučným kódovaním prekladať na základe symbolov. Keďže sa tým oddeľujú symboly v kódovom slove, znižuje sa pravdepodobnosť, že výbuch z Viterbiho dekodéra naruší viac ako jeden Reed-Solomonov symbol v ktoromkoľvek kódovom slove.
Základná myšlienka
Hlavnou myšlienkou Reed-Solomonovho kódu je, že kódované údaje sa najprv zobrazia ako polynóm. Kód sa opiera o vetu z algebry, ktorá hovorí, že ľubovoľných k rôznych bodov jednoznačne určuje polynóm stupňa najviac k-1.
Odosielateľ určí polynóm stupňa k - 1 {\displaystyle k-1} nad konečným poľom, ktorý reprezentuje k {\displaystyle k}
dátových bodov. Polynóm je potom "zakódovaný" jeho vyhodnotením v rôznych bodoch a tieto hodnoty sa skutočne posielajú. Počas prenosu sa niektoré z týchto hodnôt môžu poškodiť. Preto sa v skutočnosti posiela viac ako k bodov. Pokiaľ sa prijme dostatočný počet hodnôt správne, prijímač môže odvodiť, aký bol pôvodný polynóm, a dekódovať pôvodné údaje.
V rovnakom zmysle, v akom je možné opraviť krivku interpoláciou cez medzeru, môže Reed-Solomonov kód preklenúť sériu chýb v bloku údajov a obnoviť koeficienty polynómu, ktorý vykreslil pôvodnú krivku.
História
Kód vynašli v roku 1960 Irving S. Reed a Gustave Solomon, ktorí boli v tom čase členmi Lincolnovho laboratória MIT. Ich zásadný článok mal názov "Polynomiálne kódy nad určitými konečnými poľami". V čase jeho napísania nebola digitálna technológia dostatočne pokročilá na implementáciu tohto konceptu. Prvou aplikáciou RS kódov v hromadne vyrábaných produktoch bol v roku 1982 kompaktný disk, kde sa používajú dva preložené RS kódy. Účinný dekódovací algoritmus pre kódy RS na veľké vzdialenosti vyvinuli Elwyn Berlekamp a James Massey v roku 1969. Dnes sa RS kódy používajú v pevných diskoch, DVD, telekomunikáciách a protokoloch digitálneho vysielania.
Súvisiace články
Autor
AlegsaOnline.com Reed‑Solomonova korekcia chýb Leandro Alegsa
URL: https://sk.alegsaonline.com/art/81778