Кодове Рийд–Соломон за корекция на грешки — дефиниция и приложения

Коригирането на грешки на Рийд–Соломон е класична схема за корекция на грешки, която работи чрез свръхизбиране на полином, конструиран от данните. Полиномът се оценява в няколко точки и тези стойности се изпращат или записват. Вземането на проби от полинома по-често, отколкото е необходимо, прави полинома свръхдетерминиран: докато приемникът получи „много“ от точките правилно, той може да възстанови оригиналния полином дори при наличието на „няколко“ лоши точки.

Как работят Рийд–Соломон кодовете

Рийд–Соломоновите кодове се дефинират над крайни полета (най-често над полетата GF(2^m), т.е. с байтови символи). Съобщението се представя като полином p(x) с градус по-малък от k (където k е дължината на полезния блок). За код с параметри (n, k) се избират n различни елемента α1,...,αn от полето и се формира кодовата дума чрез оценка:

c_i = p(α_i) за i = 1..n.

Така всяко изпращане съдържа n символа, от които k носят информация. Разликата n − k определя излишъка за корекция на грешки.

Ключови свойства и възможности

  • Моносимволна корекция: RS работи на ниво символ (например байт), което прави кодовете много ефективни при сривове, които засягат цели байтове или блокове (burst errors).
  • MDS (Maximum Distance Separable): Рийд–Соломоновите кодове са максимално разпределящи разстоянието – минималното Хаминг-расстояние е d = n − k + 1. Това означава, че за даден брой паритетни символи те постигат максималната възможна способност за откриване/корекция на грешки (според границата на Сингълтън).
  • Корекционни възможности: код (n,k) може да коригира до t символни грешки, където 2t = n − k. За комбинирани грешки и пропуснати символи (erasures) важи неравенството 2e + s ≤ n − k (e = брой грешки, s = брой известни пропуснати символи).
  • Ограничение по дължина: при класическа конструкция над поле GF(q) максималната дължина е n ≤ q − 1 (често q = 2^m, например при m = 8 имаме n ≤ 255).
  • Систематично кодиране: лесно се реализира така, че оригиналните k символа да присъстват явно в кодовата дума и да се добавят n − k паритетни символа.

Декодиране и алгоритми

След получаване на кодова дума приемникът изчислява синдроми и от тях реконструира грешките чрез алгоритми за решаване на уравнения за локаторите на грешки. Най-използваните алгоритми са:

  • алгоритъмът на Берлекемп–Мейс (Berlekamp–Massey) за намиране на полинома на локаторите;
  • алгоритъм на Еуклид за намиране на полиноми за грешките;
  • алгоритъм на Форни (Forney) за изчисляване на големините на грешките и корекцията;
  • варианти за декодиране с известни пропуски (erasures) и list-decoding методи за крайни случаи.

Практически приложения използват оптимизирани имплементации, понякога комбинирани с интерливинг (за разпръскване на грешките във времето) и с други кодове (например вътрешни/външни кодове в сорцовете за космически връзки).

Примери

  • Стандартен пример е RS(255,223) над GF(256): тук n − k = 32, което позволява корекция на до t = 16 символни грешки в блок.
  • Cross‑interleaved Reed–Solomon (CIRC) – комбинация от два интерливани RS кода, използвана при компактдисковете за защита срещу грешки и повреди на повърхността.

Приложения

Рийд–Соломоновите кодове се използват в множество търговски и индустриални системи заради високата си ефективност при корекция на символни грешки. Примери:

  • Оптични носители: компактдискове (CIRC), DVD и Blu-ray дискове – различни варианти и слоеве на RS кодове, често комбинирани с интерливинг, защитават записаната информация от надрасквания и дефекти.
  • Технологии за предаване на данни: DSL, WiMAX и други широколентови връзки използват RS кодове като част от схемите за надеждност.
  • Системи за излъчване и телевизия: DVB и ATSC използват RS кодове (често като външен код в комбинация с вътрешен код като Viterbi/LDPC) за защита срещу грешки при приемане.
  • Кодовете се използват и в QR кодове, баркодове, RAID системи за съхранение, сателитни и космически връзки, а също така в цифрови предавания на данни и комуникационни протоколи.

Ограничения и модерни варианти

Въпреки силните си свойства, класическите RS кодове имат ограничения: декодиращата сложност при много големи полета, ограничение в дължината и по-ниска производителност при много ниски нива на грешки в сравнение с модерни кодове като LDPC при големи блокове. Затова в много нови системи RS кодовете се комбинират с LDPC, Turbo или други схеми (например RS като външен код, LDPC като вътрешен) за по-добър общ компромис между производителност и сложност.

В обобщение, Рийд–Соломоновите кодове са мощен и широко използван инструмент за корекция на грешки, особено ефективен при символни и групови грешки, с богата теория и множество практични реализации.

Преглед

Кодовете на Рийд-Соломон са блокови кодове. Това означава, че фиксиран блок от входни данни се обработва във фиксиран блок от изходни данни. В случая на най-често използвания R-S код (255, 223) - 223 входни символа на Рийд-Соломон (всеки с дължина осем бита) се кодират в 255 изходни символа.

  • Повечето R-S ECC схеми са систематични. Това означава, че известна част от изходната кодова дума съдържа входните данни в оригиналния им вид.
  • Избран е размер на символа на Рийд-Соломон от осем бита, тъй като декодерите за по-големи размери на символите биха били трудни за изпълнение с настоящата технология. Този избор на конструкция налага най-дългата кодова дума да бъде 255 символа.
  • Стандартният код (255, 223) на Рийд-Соломон може да коригира до 16 грешки на символа на Рийд-Соломон във всяка кодова дума. Тъй като всеки символ всъщност е осем бита, това означава, че кодът може да коригира до 16 кратки серии от грешки, дължащи се на вътрешния конволюционен декодер.

Кодът на Рийд-Соломон, както и конволюционният код, е прозрачен код. Това означава, че ако символите на канала са били инвертирани някъде по линията, декодерите ще продължат да работят. Резултатът ще бъде допълнение на оригиналните данни. Въпреки това кодът на Рийд-Соломон губи своята прозрачност, ако се използва виртуално запълване с нула. Поради тази причина е задължително смисълът на данните (т.е. истински или допълнен) да бъде определен преди декодирането на Рийд-Соломон.

В случая на програмата Voyager R-S кодовете достигат почти оптимална производителност, когато са конкатенирани с (7, 1/2) конволюционен (Viterbi) вътрешен код. Тъй като за всяка грешка, която трябва да бъде коригирана, са необходими два контролни символа, това води до общо 32 контролни символа и 223 информационни символа на кодова дума.

Освен това кодовите думи на Рийд-Соломон могат да се редуват по символи, преди да бъдат кодирани по конволюционен път. Тъй като по този начин се разделят символите в кодовата дума, вероятността взрив от декодера на Витерби да наруши повече от един символ на Рийд-Соломон във всяка една кодова дума става по-малка.

Основна идея

Основната идея на кода на Рийд-Соломон е, че кодираните данни първо се визуализират като полином. Кодът се основава на теорема от алгебрата, която гласи, че всякакви k отделни точки определят еднозначно полином от степен най-много k-1.

Изпращачът определя степен k - 1 {\displaystyle k-1}{\displaystyle k-1} полином над крайно поле, който представя k {\displaystyle k}k точки с данни. След това полиномът се "кодира" чрез оценяването му в различни точки и тези стойности са това, което всъщност се изпраща. По време на предаването някои от тези стойности могат да се повредят. Затова в действителност се изпращат повече от k точки. Стига достатъчно стойности да бъдат получени правилно, приемникът може да заключи какъв е бил оригиналният полином и да декодира оригиналните данни.

В същия смисъл, в който може да се коригира крива чрез интерполиране на празнина, кодът на Рийд-Соломон може да преодолее поредица от грешки в блок от данни, за да възстанови коефициентите на полинома, който е начертал оригиналната крива.

История

Кодът е изобретен през 1960 г. от Ървинг С. Рийд и Густав Соломон, които тогава са членове на лабораторията "Линкълн" на Масачузетския технологичен институт. Тяхната основополагаща статия е озаглавена "Полиномиални кодове над определени крайни полета". Когато тя е написана, цифровата технология не е достатъчно напреднала, за да се приложи концепцията. Първото приложение през 1982 г. на RS кодове в масово произвеждани продукти е компактдискът, в който се използват два преплетени RS кода. Ефективен алгоритъм за декодиране на RS кодове на големи разстояния е разработен от Елуин Берлекамп и Джеймс Маси през 1969 г. Днес RS кодовете се използват в твърдите дискове, DVD, телекомуникациите и протоколите за цифрово излъчване.


AlegsaOnline.com - 2020 / 2025 - License CC3