2 1 Wielomian generujący kodu RS


2. Cykliczny kod Reeda - Solomona

2.1 Wielomian generujący kodu RS.

Cykliczny kod Reeda-Solomona zaliczamy do podklasy niebinarnych kodów BCH (Bose-Chaudhuri-Hocauenghema), umożliwiają one korekcję błędów grupowych. Błędy grupowe, zwane inaczej seryjnymi, mogą powstać w skutek działania osoby trzeciej lub podczas transmisji informacji w kanałach telekomunikacyjnych. Jednak ten drugi rodzaj błędów występuje bardzo rzadko. Wynika to dużej niezawodności łącz i nośników danych.

Błąd seryjny jest sekwencją błędów obejmującą pewną liczbę kolejnych pozycji, której pierwszy i ostatni element są elementami niezerowymi. Na przykład:

Jeśli wektor błędu ma postać: 00011111001110110000100000000000,

to błąd grupowy ma długość 18 : 00011111001110110000100000000000.

Kody korygujące błędy losowe, stosowane powszechnie w kanałach komunikacyjnych, nie są w stanie skorygować błędów grupowych. Skonstruowano więc kody, które z takim problemem są w stanie sobie poradzić. W kodach tych wymaga się, aby w przypadku, gdy konieczne jest skorygowanie pewnej ilości błędów grupowych b, liczba elementów kontrolnych wektora kodowego kodu (n,k) wynosi przynajmniej 2b.

0x01 graphic

b - oznacza liczbę błędów,

n - długość wektora kodowego,

k - długość wektora nadmiarowego.

Jeśli liczba elementów kontrolnych wektora kodowego k jest równa 2b, to zostanie i górna granica zdolności korekcyjnej kodu korygującego błędy grupowe. Mamy do czynienia wtedy z tak zwanym kodem optymalnym, a wartość zależności:

0x01 graphic

Jednak gdy chcemy aby kod wykrywał i korygował b błędów, wymagane jest, aby liczba elementów kontrolnych wektora kodowego wynosiła przynajmniej b + 1. Zalezność zmieni postać na :

0x01 graphic

Kod Reeda-Solomona należy właśnie do tego typu kodów i wykorzystywany jest do korekcji błędów grupowych oraz losowych zawierających się w długości wektora nadmiarowego. Kod Reeda-Solomona (n,k) nad ciałem GF(q) charakteryzuje się następującymi parametrami:

• Długość wektora kodowego n = q -1

• Liczba pozycji kontrolnych r = n - k

• Odległość minimalna d = r + 1

Zdolność korekcyjną kodu RS określa poniższa zależność:

0x01 graphic
0x01 graphic

gdzie t oznacza największą liczbę całkowitą nie większą od0x01 graphic
.

W niniejszej pracy dyplomowej kod Reeda-Solomona został skonstruowany nad ciałem GF(256). W tym przypadku każdy z elementów ciała GF(256) odpowiada mu z symboli tablicy kodów ASCII. Długość wektora informacyjnego przyjęto jako W związku z tym, parametry tego kodu są następujące:

Wielomian generujący kod g(x) jest takim wielomianem, który dzieli bez reszty każdy wielomian należący do zbioru wektorów kodowych danego kodu. Dodatkowo stopień tego wielomianu jest taki sam, jak liczba elementów kontrolnych wektora kodowego. Wynika z tego, iż wielomianem generującym kod cykliczny (także kod Reeda-Solomona) może być dowolny wielomian, który jest podzielnikiem xn + 1, przy czym n = qm - 1, a m jest liczbą naturalną.

W przypadku kodów Reeda-Solomona wielomiany generujące kody RS wyznacza się w następujący sposób. Jako element pierwotny ciała GF(q) przyjmuje się α. Zbiór {f(x)} jest zbiorem ciągów kodowych kodu Reeda-Solomona, jeśli pierwiastkami dowolnie wybranego wielomianu f(x) są elementy dała a,a2, a3,..., ar. Wtedy wielomian generujący kod RS nad ciałem charakterystyki dwa ma postać:

0x01 graphic

Dla kodu RS (255,125) nad ciałem GF(256) - kod ten został zaimplementowany w programie dołączonym do tej pracy dyplomowej - wielomian generujący kod wygląda następująco:

0x01 graphic

Wielomian g(x) jest stopnia 130, co odpowiada liczbie symboli nadmiarowych k wektora kodowego.

Procedura generowania wygląda następująco:

0x08 graphic

procedure RSgen(r:Byte);

var

gi, gj, gg, da, db, dc: Byte;

pa, pb, pc: array [0..255] of Byte;

procedure Multpoly(dga, dgb: Byte; var dgc: Byte);

var

im, jm: Byte;

begin

dgc:=dga+dgb;

for im:=0 to dgc do pc[im]:=0;

for im:=dga downto 0 do

for jm:=dgb downto 0 do

begin

pc[im+jm]:=S(pc[im+jm], P(pa[im], pb[jm]))

end

end;

begin

da:=1; pa[1]:=1; pb[0]:=1; db:=0; gg:=1;

for gi:=1 to r do

begin

gg:=P(gg, 2);

pa[0]:=gg;

Multpoly(da, db, dc);

db:=dc;

for gj:=dc downto 0 do pb[gj]:=pc[gj]

end;

for gj:=0 to dc do pg[gj]:=pc[gj]

end; {RSgen}



Wyszukiwarka

Podobne podstrony:
2 2 procedura kodowania kodu rs OGMEYHZCLP77IJOGFRT2YXDUJRVYVF2KUZLUKWQ
2 3 procedura uproszczonego?kodowania kodu rs VD6QCROCBKVDU5HUUQKD2I666CON6NW3RBNXL6Q
dzialania na wielomianach
Nierownosci wielomianowe
Historia stosunków międzynarodowych, RS
F1 15 Tablica kodu ASCII
IE RS lab 11 solutions
obliczenia arkusz rs 5 1392900864
Poprawki do kodu
doswiadczenia arkusz rs 6 1392900606
dzielenie wielomianów
WIELOMIANY, Zadania przygotowujące do matury z matematyki
JAVASCRIPT Kod kodu testu z JavaScript do pracy kontrolnej
doswiadczenia model rs 6 1392900786
4 4 Wielomiany
obliczenia model rs 5 1392900934

więcej podobnych podstron