Professional Documents
Culture Documents
Zaštitno Kodiranje FER ZG
Zaštitno Kodiranje FER ZG
Zatitno kodiranje
Mr. sc. Zdenko Vrdoljak
Zagreb, 2006.
smetnji pri komunikaciji: npr. buke, prekida u komunikaciji ili npr. razmazanih ili izgubljenih
slova u pismu.
Jednak princip se koristi i kod zatitnog kodiranja. Kodirane poruke se kodiraju kodnim rijeima
koje imaju veu prosjenu duljinu od prosjene duljine poruka, to omoguuje da dekoder na
odreditu otkrije pogreku nastalu prilikom prijenosa. Cilj je iskoristiti onaj zatitni kd koji
uvodi najmanje mogue poveanje prosjene duljine kodnih rijei u odnosu na prosjenu duljinu
kodiranih poruka, a u isto vrijeme osigurava prihvatljivo malu vjerojatnost neotkrivanja
pogreaka simbola nastalih pri prijenosu.
Ukoliko doe do otkrivanja pogreke na primljenoj kodnoj rijei, pokree se postupak otklanjanja
pogreke (engl. error correction). Jedan nain otklanjanja pogreke je koritenje posebnih
svojstava zatitnog koda kako bi se odredila kodna rije koja je zapravo poslana. Opisani pristup
zovemo ispravljanje pogreki u dekoderu kanala (FEC engl. forward error correction).
Koristi se prvenstveno onda kada odredite ne moe zatraiti ponovno slanje pogreno primljene
kodne rijei (engl. retransmission). Zatitni kodovi koji se koriste u ovom pristupu moraju
posjedovati svojstva otkrivanja i ispravljanja pogreaka i takve kodove zovemo kodovi za
ispravljanje pogreaka (engl. error correcting code).
U sluaju kada postoji mehanizam koji odreditu omoguuje da zatrai ponovno slanje krivo
primljene kodne rijei, koristi se pristup ispravljanja pogreki ponovnim slanjem (BEC engl.
backward error correction). U ovom pristupu, kada odredite otkrije pogreku na primljenoj
kodnoj rijei, prvo je pokuava otkloniti koristei se strukturom samog koda. Ukoliko nije
mogue otkloniti pogreku, ili sam zatitni kd ne prua mogunost otklanjanja pogreke,
odredite trai ponovno slanje kodne rijei sve dok se ne primi ispravna kodna rije. Zatitni
kodovi koji mogu samo otkriti pogreke zovemo kodovi za otkrivanje pogreaka (engl. error
detection code). Zatitni kodovi za otkrivanje pogreaka mogu, ali ne moraju imati sposobnost
otklanjanja pogreaka.
Zatitni kodovi dijele se u dvije osnovne skupine: blok-kodovi (engl. block codes) i konvolucijski
kodovi (engl. convolutional codes), koji se u literaturi dosta esto mogu nai i pod nazivima
stablasti (engl. tree) ili reetkasti (engl. trellis) kodovi. Glavne razlike meu navedenim
skupinama kodova su u nainu izvedbe kodera. Kod blok-kodova se k-bitni ulazni blok bitova
potpuno preslikava u n-bitnu izlaznu kodnu rije (engl. code word). Drugaije reeno, koder za
blok-kodove spada u grupu kodera bez memorije (engl. memoryless) iz razloga to je generiranje
nekog bita u kodiranoj poruci iskljuivo funkcija trenutanog stanja ulaza kodera. Konvolucijski
kodovi spadaju u grupu memorijskih kodova. Kod njih je generiranje nekog bita u kodiranoj
poruci funkcija trenutanog stanja ulaza kodera kao i nekolicine njegovih prethodnih stanja.
Takoer, postoji i druga podjela zatitnih kodova, a to je na linearne (engl. linear) i nelinearne
(engl. nonlinear) kodove. Navedena podjela napravljena je na osnovu strukture i svojstava
kodnih rijei. Linearni kodovi su oni kodovi ija se svaka kodna rije moe izraziti kao linearna
kombinacija drugih kodnih rijei. Njihova primjena je jako rasprostranjena. Postoje tri kategorije
linearnih kodova, i to: blok, konvolucijski i turbo kodovi. Njihova e svojstva biti analizirana u
sljedeim poglavljima.
vei broj simbola od originalne poruke. U binarnim digitalnim komunikacijskim sustavima kodne
rijei i kodirane poruke su nizovi jedinica i nula. Na primjer, kodirana poruka moe biti 10110 .
Zatitni koder na tu kodiranu poruku dodaje jedan zatitni bit tako da zbroj jedinica bude paran 101101 . Dobivena kodna rije omoguuje otkrivanje jednostruke pogreke simbola/bita. Ovo je
primjer paritetnog kodiranja koje e biti posebno obraeno u nastavku poglavlja.
Openito se moe govoriti o q-narnom kodu, ije se kodne rijei sastoje od simbola izabranih iz
konanog skupa simbola Fq = {1, , q} s q elemenata kojeg nazivamo abeceda (engl.
alphabet). Najee se abeceda izabire kao podskup skupa cijelih brojeva, a broj elemenata u
abecedi se izabire kao prost broj ili potencija prostog broja. U digitalnim komunikacijskim
sustavima koristi se abeceda F2 = {0, 1}. Simboli abecede F2 su binarne znamenke 0 i 1, a kodovi
koji koriste ovu abecedu zovu se binarni kodovi. Nadalje prouavamo iskljuivo binarne
zatitne kodove.
Primjer: zatitno kodiranje
0
0
P=
1
1
0
1
0
1
A;
B;
C;
D.
Koder kanala zatitno kodira ove kodirane poruke dodajui jedan redundantni simbol na sljede i
nain:
0 0 0 A ;
0 1 1 B ;
K1 =
1 0 1 C ;
1 1 0 D .
Dobiven je zatitni kd s etiri kodne rijei i pravilom njihovog pridruivanja kodiranim
porukama. Moe se uoiti da ukoliko prilikom prijenosa doe do pogreke na jednom simbolu
kodne rijei, primljena kodna rije nee pripadati zatitnom kodu pa prijemnik moe otkriti da je
dolo do pogreke. Kd K1 je kd za otkrivanje jednostruke pogreke.
Neki drugi koder moe dodati tri redundantna simbola. Na primjer, zatitni kd moe biti sljedei:
0 0 0 0 0 A ;
0 1 1 0 1 B ;
K2 =
1 0 1 1 0 C ;
1 1 0 1 1 D .
Kd K 2 ne samo da moe otkriti jednostruku pogreku, nego je moe i ispraviti. Dodatno, kd
K 2 moe otkriti i dvostruku pogreku. Ispravljanje pogreke se vri na nain da prijemnik odredi
onu kodnu rije koja se najmanje razlikuje od primljene. Na primjer, ako je primljena kodna rije
01100, najblia ispravna kodna rije je 01101, pod pretpostavkom da je nastupila jednostruka
pogreka na zadnjem simbolu (binarnoj znamenci).
4
PRIMJER
Princip zatitnog kodiranja vidljiv je iz sljedeeg primjera. Izvor informacije generira etiri
razliite informacijske poruke: A, B, C i D, a koder informacije kodira ih binarnim kodom na
sljedei nain:
Zatitni kodovi K1 i K 2 iz prethodnog primjera imaju svojstvo da su im sve kodne rijei jednake
duljine. Takvi kodovi se nazivaju blok-kodovi. Naglasimo ovaj pojam sljedeom definicijom.
3
=
=
3
Hammingova distanca je vaan parametar kada se govori o sposobnosti koda da otkrije ili ispravi
pogreku. Problem s kojim se suoava primatelj kada primi kodnu rije koja nije dio
dogovorenog zatitnog koda je otkriti o kojoj se kodnoj rijei zapravo radi. Jedna od strategija
koja se najee primjenjuje je dekodiranje najbliim susjedom. U binarnim simetrinim
kanalima u kojima je vjerojatnost pogreke bita jednaka za 1 i 0, takva strategija rezultira
dekodiranjem s najveom vjerojatnou. Ukoliko kd ima sposobnost otklanjanja pogreke
bita, odabire se ona rezultantna kodna rije koja ima najmanju Hammingovu distancu od
5
DEFINICIJA
DEFINICIJA
BLOK-KD: Kd K zove se blok-kd ukoliko su duljine svih njegovih kodnih rijei jednake.
Ako kodne rijei koda K imaju duljinu n, onda je K blok-kd duljine n.
primljene kodne rijei. Drugim rijeima, ukoliko je primljena kodna rije x, izabire se kodna rije
x' K takva da je distanca d (x, x) minimalna. Sposobnost koda da otkrije ili ispravi pogreku
ovisi o najmanjoj Hammingovoj distanci svih parova kodnih rijei nekog koda K. Tu najmanju
distancu nazivamo distanca koda.
d ( K ) = min ( d (x, y ) x y ) .
x , yK
DEFINICIJA
DISTANCA KODA: Distanca koda K, s oznakom d(K), je najmanja Hammingova distanca svih
parova kodnih rijei koda K, tj.
Kd K moe otkriti najvie d ( K ) 1 pogreki u jednoj kodnoj rijei, tj. ako je najvei broj
pogreki koje kd moe otkriti s, onda mora biti zadovoljen izraz d ( K ) s + 1 .
TEOREM
Prvo svojstvo je jednostavno za shvatiti. Ukoliko je jednu kodnu rije nekog koda mogue
pretvoriti u neku drugu kodnu rije tek izmjenom s + 1 simbola, onda e bilo koja izmjena od s
ili manje simbola zasigurno dati rije koja nije dio koda. Dekoder e takvu rije smatrati
pogrenom i pogreka e biti otkrivena.
Drugo svojstvo izgleda netrivijalno. Da bismo ga shvatili, uvest emo pojam sfere, koji e nam
posluiti i kasnije u tekstu.
gdje je (F2)n oznaka za skup svih binarnih kodnih rijei duljine n (vektorski prostor).
Dakle, sfera S (x, r ) je skup svih vektora koji su od x po Hammingovoj distanci udaljeni 0,1,,r.
n
Korisno je primijetiti da je broj vektora koji do vektora x imaju udaljenost m tono . Na
m
primjer, neka je zadana kodna rije 0101 nekog binarnog koda. Sfera S(0101, 2) je skup sljedeih
kodnih rijei:
6
DEFINICIJA
SFERA KODNE RIJEI: Neka je x bilo koja kodna rije (vektor) duljine n koda K. Kodna
rije predstavljena vektorom x pripada skupu svih moguih vektora duljine n. Neka je r cijeli
nenegativan broj, r 0. Sfera radijusa r sa sreditem x i oznakom S(x, r) je skup vektora koji
imaju Hammingovu distancu do vektora x manju ili jednaku r, tj.
S (x, r ) = {y ( F2 ) n | d (x, y r )} ,
0101
0101
d = 0
1101
0001
0111
0100
d =1
1001
1111
1100
0011 .
0000
0110
d =2
Vratimo se sada drugoj toki svojstva. Zamislimo kd s etiri kodne rijei i Hammingovom
distancom izmeu svih kodnih rijei 2t + 1 ili veom (Slika 0.4). Dekoder dekodira kodne rijei
principom najblieg susjeda, tako da e sve primljene rijei unutar sfere S (xi , t ) biti (ispravno)
dekodirane kao xi. Meutim, da bi neka poslana kodna rije xi bila ispravno primljena, ona u
prijenosu ne smije biti toliko izmijenjena da izae izvan svoje sfere. Kodna rije takoer ne smije
prijei u sferu neke druge kodne rijei. Stoga, da bi kodna rije bila ispravno dekodirana, najvie
t njenih simbola smije biti promijenjeno zbog smetnji pri prijenosu. Upravo je to izreka druge
toke svojstva o otkrivanju i ispravljanju pogreki.
binarnih abeceda na tu poziciju mogui postaviti samo 2 razliita simbola, slijedi da je najvei
mogui broj razliitih kodnih rijei A(n, n) = 2. Na primjer, to moe biti kd s ponavljanjem:
0000, 1111.
Tablica 0.1: Danas poznate vrijednosti A(n, d) nekih binarnih kodova
n
5
6
7
8
9
10
11
12
13
14
15
16
d=3
4
8
16
20
40
72-79
144-158
256
512
1024
2048
2560-3276
d=5
2
2
2
4
6
12
24
32
64
128
256
256-340
d=7
2
2
2
2
4
4
8
16
32
36-37
Do ostalih rezultata dolazi se sloenim postupcima, a neke vrijednosti nisu niti poznate. Danas
poznate vrijednosti ukratko su prikazane u tablici (Tablica 0.1) [2]. Meutim, postoje odreene
zakonitosti koje pomau prilikom odreivanja najveeg M.
Neka #S(x, t) oznaava broj kodnih rijei u sferi S(x, t) vektora x duljine n. Budui da je broj
n
kodnih rijei koji do vektora x imaju Hammingovu distancu m jednak , slijedi da je
m
n n
n
+ + ... + .
1 2
t
#S (x, t ) = 1 +
Neka je distanca koda d = 2t + 1 . U tom sluaju, oko svake od M kodnih rijei postoji sfera
radijusa t, te zasigurno vrijedi M #S (x, t ) 2n , gdje je 2n ukupan broj moguih binarnih vektora
duljine n.
Ovu tvrdnju mogue je shvatiti ukoliko se pogleda slika (Slika 0.5). Tokama su prikazani svi
mogui vektori duljine n, a krugovima su oznaene sfere oko kodnih rijei koda. Iz ovoga se
jednostavno moe izraunati gornja granica na M, a to je upravo i iskaz sljedeeg svojstva o
Hammingovom ogranienju.
TEOREM
Ovo ogranienje broja M se zove i ogranienje sfernog pakiranja (engl. sphere-packing bound).
U skladu s ovim svojstvom uveden je pojam perfektnog koda.
PERFEKTAN KOD: Binarni kd (n, M , 2t + 1) koji zadovoljava izraz:
DEFINICIJA
M=
2n
n n n
n
+ + + ...
0 1 2
t
K1 =
1
1
0
1
0
1
0
1
1
0
0
0
1
1
0
1
0
1
0
0
K2 =
1
1
0
0
1
1
1
0
0
1
0
1
0
1
0
1
0
1
Iako izgledaju potpuno razliiti, izmeu njih postoji odreena funkcijska ovisnost. Kd K2 je
dobiven na nain da su na treoj poziciji koda K1 zamijenjeni simboli 1 s 0 i 0 s 1. Nakon toga su
zamijenjene pozicije 2 i 4 svih kodnih rijei. Slika 0.7 prikazuje Hammingove distance kodova.
Uoavamo da nema razlike u Hammingovim distancama izmeu pojedinih rijei kodova K1 i K2,
a time nema niti razlike u sposobnosti ovih kodova da otkriju i isprave eventualnu pogreku.
Openito se moe rei da zamjene pozicija kodnih rijei ne utjeu na relativne odnose pojedinih
kodnih rijei u pogledu Hammingove distance.
Permutacija binarnih znamenki oblika
0
izvrena na istoj poziciji svih kodnih rijei takoer ne mijenja Hammingove distance izmeu
pojedinih kodnih rijei. Stoga, kodovi koji se mogu dobiti jedan iz drugoga primjenom
permutacije nad simbolima iste pozicije kodnih rijei i zamjenom pozicija su u pogledu
sposobnosti otkrivanja i otklanjanja pogreaka ekvivalentni.
DEFINICIJA
Promotrimo binarni kd
1
0
1
0
1
1
0
0
PRIMJER
0
0
K =
1
1
0
1
.
0
1
,
0
10
0
1
K'=
0
1
0
1
0
1
0
0
1
1
0
0
.
1
1
Dobiveni kd K se u odnosu na poetni kd K razlikuje samo u dvije kodne rijei, ali posjeduje
kodnu rije 0. Moe se pokazati da je bilo koji kd operacijama permutacije i zamjene pozicija
mogue pretvoriti u ekvivalentan kd koji u sebi sadri kodnu rije 0 = 0000.
TEOREM
Nadalje, kodna rije 1 = 11111 takoer nije mogua budui da nije mogue formirati niti jednu
kodnu rije koja bi imala Hammingovu distancu do kodnih rijei 0 i 1 od najmanje 3 pozicije.
Nije mogue imati kodne rijei s jednom ili dvije jedinice, budui da bi distanca tih kodnih rije i
do kodne rijei 0 bila manja od 3. Dakle, kao kandidati za ostale kodne rijei su samo one koje
imaju 3 jedinice. Iako takvih kodnih rijei ima ukupno deset, potrebno je izabrati one koje su
meusobno udaljene najmanje za 3 pozicije. Provjerom svih kombinacija mogue je zakljuiti da
samo dvije rijei zadovoljavaju ovaj kriterij.
Sada je mogue formirati kd koji se sastoji od kodne rijei 0, dvije kodne rijei s 3 jedinice i
jedne kodne rijei sa 4 jedinice. To moe biti sljedei konkretan kod:
0
1
K =
0
1
0
1
0
1
0
1
1
0
0
0
1
1
0
0
.
1
1
Jo nije dan odgovor na pitanje koliki je A(5,3) . Jedino se zna da je 4 A(5,3) 5 . Moe se
pretpostaviti da postoji kd (5, 5, 3). Meutim, u tom sluaju bi, koristei princip ekvivalentnosti
kodova, morala postojati trea kodna rije s 3 jedinice ili pak dvije kodne rijei sa 4 ili 5 jedinica.
Budui da niti jedan od ova dva zahtjeva nije mogue ispuniti, zakljuak je da kd (5,5,3) ne
postoji i da je A(5,3) = 4.
11
PRIMJER
Ovo svojstvo moe uvelike pomoi prilikom odreivanja najveeg broja kodnih rijei nekog koda.
Za primjer odredimo koliki je najvei M binarnog koda (5, M, 3), tj. A(5, 3). Koristei se
Hammingovim ogranienjem, lako je zakljuiti da je M 5. Meutim, koristei se prethodnim
svojstvom, moe se zakljuiti da je u nekom ekvivalentnom kodu s najveim brojem kodnih rije i
zasigurno kodna rije 00000. Budui da je najmanja Hammingova distanca 3, onda moe
postojati samo jedna kodna rije koja ima 4 ili 5 jedinica. To slijedi iz injenice da ako bi ih bilo
dvije, njihova meusobna distanca bi bila manja od 3, jer bi se razlikovale u najvie jednoj ili
dvije pozicije.
Ukoliko prilikom prijenosa kodne rijei prijenosnim kanalom doe do jednostruke pogreke bita,
broj bitova 1 nee biti paran broj i dekoder kanala e otkriti pogreku prilikom prijenosa.
Zalihosni bit koji se dodaje kodiranoj poruci naziva se paritetni bit (engl. redundancy check). U
praksi se koriste dva naina dodavanja paritetnog bita: parni paritet (engl. even parity) i
neparni paritet (engl. odd parity). Kod parnog pariteta ukupan broj bitova 1 u kodnoj rije i
mora biti paran broj, a kod neparnog pariteta neparan broj. Ukoliko s x1,,xk oznaimo simbole
kodirane poruke, onda se paritetni bit R izraunava zbrajanjem aritmetikom modulo 2 na sljede i
nain:
R = x1 + x2 +
+ xk
( parni paritet ),
R = x1 + x2 +
+ xk + 1
(neparni paritet ).
+ xmi , i = 1,..., k ,
gdje se zbrajanje provodi u aritmetici modulo 2. Ovakav pristup umetanju paritetnih bitova se
naziva vertikalna provjera zalihosti (VRC engl. vertical redundancy check).
12
Ukoliko koder kanala uz vertikalnu provjeru zalihosti vri i paritetno kodiranje svake od m
kodiranih poruka posebno, onda se takav pristup naziva horizontalna ili longitudinalna
provjera zalihosti (LRC engl. longitudinal redundancy check). U tom sluaju vertikalna
provjera zalihosti umee i paritetni bit Ck+1 kao paritetni bit svih horizontalnih paritetnih bitova Slika 0.9. U sluaju parnog pariteta, vrijednost bita Ck+1 se dobiva izrazom:
Ck +1 = R1 + R2 +
+ Rm ,
x2
x1+ x2
x1 x2
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
Neka je V(n) skup svih moguih binarnih vektora duljine n. Takvih je 2n. Nad skupom V(n) je
mogue definirati operacije zbrajanja vektora i mnoenja vektora skalarom na sljedei nain:
x + y = [ x1 , x2 , x3 ,..., xn ] + [ y1 , y2 , y3 ,..., yn ] = [ x1 + y1 , x2 + y2 , x3 + y3 ,..., xn + yn ] ,
a x = a [ x1 , x2 , x3 ,..., xn ] = [ a x1 , a x2 , a x3 ,..., a xn ] ,
gdje su a, xi, yi skalari iz F2, a x, y vektori iz skupa V(n). Uz ovako definirane operacije, skup V(n)
je vektorski prostor2. Na primjer, zbrajanjem vektora 011010 i 101110 iz V(6) dobivamo kodnu
rije 110100 na nain da zbrajamo binarne znamenke na istoj poziciji u aritmetici modulo 2 na
sljedei nain:
011010
+ 101110
.
110100
Skup F2 s elementima {0, 1} i ovako definiranim operacijama mnoenja i zbrajanja je algebarska struktura
Galoisovo polje.
2
Vektorski prostor je skup vektora nad kojim su definirane operacije zbrajanja vektora i mnoenja vektora skalarom
takve da su zadovoljena svojstva zatvorenosti s obzirom na zbrajanje vektora i mnoenja sa skalarom, asocijativnosti,
komutativnosti, postojanja neutralnog i suprotnog elementa s obzirom na zbrajanje, distributivnosti zbrajanja i
mnoenja te postojanja neutralnog elementa s obzirom na mnoenje skalarom.
13
Zbog zbrajanja u aritmetici modulo 2, operacija zbrajanja uvijek daje isti rezultat kao i operacija
oduzimanja. Na primjer 011010 + 10111 = 011010 10111 = 110100.
Mnoenje vektora skalarom iz abecede F2 je trivijalno. Ukoliko se vektor x mnoi skalarom 1,
dobiva se ponovno vektor x, a ukoliko se mnoi skalarom 0, dobiva se vektor 0:
1 x = x, 0 x = 0 .
Nadalje podrazumijevamo da sve opisane algebarske operacije vrimo u aritmetici modulo 2.
Binarni blok-kd se naziva linearan binarni blok-kd ako se zbrajanjem bilo koje dvije kodne
rijei (vektora) opet dobiva neka kodna rijei iz koda ili ako se mnoenjem bilo koje kodne rijei
skalarom iz abecede opet dobiva kodna rijei iz koda. Primjer linearnog binarnog koda je kd (5,
4, 3) iz prethodnog potpoglavlja. Definiciju linearnog blok-koda mogue je iskazati i formalno na
sljedei nain.
x + y K,
a x K,
DEFINICIJA
14
DEFINICIJA
TEINA KODNE RIJEI: Teina kodne rijei x koda K je broj pozicija kodne rijei na kojima
se nalazi simbol 1. Oznaka teine kodne rijei x je w(x).
d ( K ) = w( K ).
TEOREM
x = a1 b1 + a2 b 2 +
+ a b ,
k
gdje su ai skalari abecede koda. Broj kodnih rijei koje mogu nastati svim linearnim
kombinacijama vektora baze ima tono 2k.
Iz ovog razloga, linearni blok-kd se ne mora definirati ispisom svih 2k kodnih rijei, nego
jednostavno definicijom k vektora baze. Vektori baze ine tzv. generirajuu matricu koda.
DEFINICIJA
0
1
K =
0
PRIMJER
Za bazu se mogu uzeti dvije zadnje kodne rijei, budui da su linearno neovisne: z1 = 00111 i
z2 = 11011 . Sve se kodne rijei koda K mogu dobiti kao linearna kombinacija a z1 + b z2 , gdje
su a i b {0, 1}. Tako je generirajua matrica koda K koja ga jedinstveno opisuje
0 0 1 1 1
.
G=
1 1 0 1 1
15
Sada vidimo da se prve dvije kodne rijei koda K mogu dobiti kao linearna kombinacija vektora
iz generirajue matrice G:
[00000] = 0 [00111] + 0 [11011],
[11100] = 1 [00111] + 1 [11011].
Na taj nain je cijeli kd definiran svojom generirajuom matricom.
Budui da je broj kodnih rijei linearnog blok-koda odreen brojem vektora baze (dimenzija koda)
k prema jednadbi M = 2k , uvodi se i posebna oznaka koda.
Blok-kd iz prethodnog primjera je prema ovoj oznaci linearni blok-kd [5,2], a budui da znamo
distancu koda d(K) = 3, moemo ga oznaiti i oznakom [5,2,3]. Budui da je broj kodnih rije i
koda iz prethodnog primjera M=22=4, kd [5,2,3] je ujedno mogue oznaiti i oznakom (5,4,3).
K =
1
1
0
1
0
1
0
0
1
1
0
1
.
1
0
Ke =
1
1
0
1
0
1
1
1
0
0
0
1
.
1
0
Dobiveni ekvivalentni kd Ke je ekvivalentan kodu K, ali nema kodnu rijei (vektor) 0 i stoga
nije linearan.
Postavlja se pitanje koje je operacije doputeno vriti nad linearnim blok-kodom, a da
ekvivalentan kd takoer bude linearan. Budui da su reci generirajue matrice linearnog koda
takoer kodne rijei, onda se nad recima generirajue matrice mogu izvriti operacije zamjene
redaka i dodavanje jednog retka drugom retku, a da nova generirajua matrica daje isti kd.
16
DEFINICIJA
Budui da zamjena stupaca generirajue matrice odgovara zamjeni pozicija kodnih rijei koda,
onda se zamjenom stupaca generirajue matrice dobiva generirajua matrica nekog ekvivalentnog
koda.
Navedenim operacijama nad recima i stupcima generirajua matrice dobiva se generirajua
matrica nekog ekvivalentnog linearnog blok-koda. Operacija permutacije nad recima nije
doputena.
TEOREM
G = [I k | A ] ,
TEOREM
EGZISTENCIJA STANDARDNOG OBLIKA: Svaka generirajua matrica G linearnog blokkoda [n, k] moe se operacijama zamjene redaka, zamjene stupaca i dodavanja jednog retka
drugom retku svesti na standardni oblik [ I k | A ] .
DEFINICIJA
0
1
K =
0
0 0 0 0
1 1 0 0,
0 1 1 1
0 0 1 1 1
.
G=
1 1 0 1 1
1 0 1 1
PRIMJER
U prethodnom primjeru smo definirali linearni blok-kd [5, 2, 3] preko liste kodnih rijei i
generirajue matrice G:
postojeoj matrici G izvrimo operaciju zamjene drugog i treeg stupca, a potom zamijenimo prvi
i drugi redak. Dobivamo novu generirajuu matricu
1
0 1 1 1
G =
1 0 1 1
0 1 1 1
G ** =
0 1 0 1 1
G=
r1
r
2.
rk
generirajua matrica koda K, gdje su ri vektori baze. Neka je m=[m1 m2 mk] bilo koja od 2k
poruka. Tada poruci m odgovara tono jedna kodna rije x koda K koja je jednaka linearnoj
kombinaciji skalara mi i vektora baze ri:
m r = m G.
k
x=
i =1
Tako se generiranje zatitne kodne rijei x za kodiranu poruku m svodi na umnoak vektor retka
poruke i generirajue matrice. Sloenost kodiranja bilo koje poruke je O (n k ) .
Primjer: Kodiranje pomou generirajue matrice
PRIMJER
0 1 1 1
,
1 1 0 1 1
G=
Koder izvora informacije generira kodiranu poruku 11. U koderu kanala nastaje zatitna kodna
rije:
18
[1 1]
0 1 1 1
= [ 1 1 1 0 0 ].
1 0 1 1
Sloenost kodiranja moe se smanjiti ako se koristi standardni oblik generirajue matrice koda. U
tom sluaju kodiranje poruke m se svodi na mnoenje
m [ I k | A ] = {m, m A}.
Dobivena kodna rije se sastoji od dva dijela. Prvih k pozicija zauzima sama poruka i taj dio
kodne rijei se zove jednostavno poruka. Ostalih (n k ) pozicija je umnoak m A . Ovaj dio
kodne rijei se zove dio za provjeru. On predstavlja zalihost kodne rijei. Sloenost kodiranja
bilo koje poruke postaje O(n k k 2 ) .
Primjer: Kodiranje pomou generirajue matrice u standardnom obliku
0 0 1 1
,
0 1 1 1 1
G=
gdje su matrice I 2 i A :
1
0
,
0 1
1 1
.
1 1 1
I2 =
A=
0 0 1 1
= [ 0 1 1 1 1 ].
1 1 1 1
011
1 1.
poruka zalihost
K =
0
1
0
1
0
1
0
1
1
0
0
0
1
1
0
0
.
1
1
Budui da je distanca koda 3, ovaj kd moe otkriti dvostruku pogreku i ispraviti jednostruku
pogreku koritenjem principa dekodiranja najbliim susjedom.
19
PRIMJER
Pronaimo generirajuu matricu koda koji je ekvivalentan onom iz prethodnog primjera, a ija je
generirajua matrica u standardnom obliku. To moemo izvesti tako da jednostavno zamijenimo
prvi i trei stupac matrice G iz prethodnog primjera. Dobivamo generirajuu matricu:
Dekoder kanala moe postupiti na nain da za primljenu kodnu rije pronae kodnu rije do koje
ima najmanju Hammingovu distancu i nju proglasiti primljenom kodnom rijeju. Naravno,
ukoliko je najmanja distanca do bilo koje kodne rijei vea od jedan, dekoder ustanovljuje
dvostruku ili eventualno viestruku pogreku. Sloenost ovakvog postupka je O(M), gdje je M
broj kodnih rijei. Za velike kodove ovaj postupak moe zahtijevati veliko optereenje procesora
prijemnika, to rezultira skupom i neekonominom izvedbom prijemnog ureaja.
Jedan od postupaka brzog dekodiranja koji se koristi prilikom dekodiranja je sindromsko
dekodiranje o kojem se govori u nastavku ovog poglavlja. Za shvaanje tog naina dekodiranja
potrebno je uvesti pojmove vektora pogreke, koseta, standardnog niza i paritetne matrice.
e = y x = [e1 e2
e ].
n
DEFINICIJA
00000
00001
00010
00100
01000
10000
11100
11101
11110
11000
10100
01100
00111
00110
00101
00011
01111
10111
11011
11010
11001
11111
10011
01011
Ova tablica je formirana na nain da se u prvom retku nalaze kodne rijei koda (5,4,3)=[5,2,3].
Svi ostali reci su formirani na nain da se sasvim lijevo nalaze vektori pogreke za sluaj kada
kd moe ispraviti pogreku. Ostali lanovi redaka su dobiveni na nain da je na kodne rijei iz
prvog retka dodavan vektor pogreke retka (prvi stupac). Na ovaj nain su dobivene sve kodne
rijei koje dekoder moe primiti u sluaju da je nastupila jednostruka pogreka. Vano je
primijetiti da su lanovi prvog stupca takoer kodne rijei koje se mogu primiti uz jednostruku
pogreku ukoliko je poslana kodna rije 00000. Dobivena tablica formalno se naziva standardni
niz. lanovi nekog retka predstavljaju jedan koset (engl. coset) skupa kodnih rijei K. Koset koda
K je kd nastao na nain da je svim kodnim rijeima dodan neki vektor pogreke3 e. Zanimljivo
je da svi kosetovi koji mogu nastati na opisani nain sadre potpuno razliite kodne rijei.
Ova definicija koseta (engl. coset) je posebno prilagoena ovom tekstu. Koset S skupa K se definira kao onaj
skup vektora koji nastaje zbrajanjem svih vektora skupa K s nekim fiksnim vektorom iz istog vektorskog skupa.
20
DEFINICIJA
STANDARDNI NIZ: Standardni niz koda K je tablica koja u prvom retku ima kodne rijei koda
K s tim da je prva kodna rije 0. U svim ostalim recima standardnog niza se nalaze kosetovi koda
K nastali na nain da su kodnim rijeima koda K dodavani svi vektori pogreke e koje kd K
moe otkriti i ispraviti. Prvi stupac standardnog niza sadri vektore pogreke, koji se jo nazivaju
i vodeim elementima koseta.
Uzimajui u obzir pretpostavku da nije nastupila trostruka ili vea pogreka nad simbolima
poslane kodne rijei, dekoder vri dekodiranje na sljedei nain. Kada primi kodnu rije,
pokuava je pronai u standardnom nizu. Ukoliko je nije pronaao u standardnom nizu, otkriva
pogreku, ali je ne moe ispraviti. Ukoliko pronae kodnu rije u i-tom stupcu standardnog niza,
ispravlja pogreku na nain da odreuje i-tu kodnu rije koda K kao primljenu kodnu rije.
Tonost dekodiranja opisanim postupkom slijedi iz injenice da je primljena rije jedina rije
koja je mogla nastati iz dekodirane kodne rijei uz jednostruku pogreku bita. Ovaj postupak je
temelj sindromskog dekodiranja.
K = {y V (n) | x K , y x = 0} ,
xy =
x y .
n
i =1
Primjer: dualni kd
,
K =
10111
01011
10111
G=
.
01011
21
DEFINICIJA
DUALNI KOD: Neka su x vektori koda K (x K). Skup svih vektora y vektorskog prostora V(n)
koji su ortogonalni na sve x K ini dualni kd koda K i ima oznaku K :
00000
10100
K =
11010
11001
01110
01101
.
00011
10111
Da se uistinu radi o dualnom kodu moe se provjeriti tako da se skalarno pomnoe svi parovi
kodnih rijei kodova K i kda K .
Dualni kd ima sljedee korisno svojstvo. Ako je primljena kodna rije koda K primljena
ispravno, onda njen umnoak sa svim rijeima dualnog koda K mora biti jednak nuli. Ovo
svojstvo moe posluiti za provjeru ispravnosti primljene kodne rijei. Meutim, broj kodnih
rijei dualnog koda moe biti iznimno velik, pa takvo to postaje nepraktino. Na sreu, dualni
kd je ujedno i linearan blok-kd te ima svoju generirajuu matricu.
TEOREM
LINEARNOST DUALNOG KODA: Neka je K linearni blok-kd [n, k]. Dualni kd K koda
K je linearan blok-kd [n, n k ] .
H=
0 1 0 0
1 0 1 0 .
1 0 0 1
Ova matrica predstavlja generirajuu matricu dualnog koda i nadalje je oznaavamo s H. Svi
skalarni produkti izmeu svih parova redaka matrica G i H jednaki su 0, pa zakljuujemo da
generirajue matrice koda K i dualnog koda K moraju zadovoljavati jednadbu
G T = 0.
Dakle, dualni kd ne samo da je linearan, nego je i njegova dimenzija nk, gdje je k dimenzija
koda K. Stoga je za provjeru ispravnosti primljene kodne rijei dovoljno skalarno pomnoiti
primljenu kodnu rije sa svim vektorima generirajue matrice dualnog koda kojih ima nk.
Provjera ispravnosti primljene rijei x se svodi na provjeru jednakosti:
x H = [ 0 0
0 ].
Uz poznatu generirajuu matricu H dualnog koda K, provjera ispravnosti primljene rijei svodi
sa na jednostavan umnoak vektora i matrice. Izraunavanje matrice H se u osnovi svodi na
rjeavanje jednadbe
G H = 0,
budui da svi vektori baze koda K moraju biti ortogonalni na vektore baze dualnog koda K.
Nasreu, postoji iznimno jednostavan nain raunanja matrice H kada je matrica G definirana u
standardnom obliku.
22
PRIMJER
U dualnom kodu iz prethodnog primjera mogue je izabrati tri linearno neovisne kodne rije i
koje ine bazu:
G = [I k | A ].
TEOREM
H = A | I n k .
0
1
K=
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
0
1 0 1 1 0
G=
.
1
0 1 1 0 1
1
0
,
0 1
I2 =
1 1 0
A=
.
1 0 1
H=
1 1 0 0
0 0 1 0 .
1 0 0 1
[ 11 0 11 ] 1
0
0
1
0
0
1
0
0
1
0 = [ 0 0 0 ].
0
1
23
PRIMJER
redak matrice H definira za zbroj vrijednosti simbola ispravne kodne rijei na pozicijama 1, 2 i 3
mora biti paran. Drugi stupac to definira za pozicije 1 i 4, a trei stupac za pozicije 2 i 5.
Uzmimo sada istu kodnu rije, ali uvedimo pogreku na drugom bitu (e = [0 1 0 0 0 ],
y = [1 0 0 1 1 ]):
1
[ 1 0 0 11 ] 1
0
0
1 0
0 1
0 0 = [ 1 0 1 ].
1 0
0 1
Dobili smo vektor koji nije 0, to potvruje da kodna rije nije ispravna, tj. otkrivena je pogreka.
Zbroj vrijednosti simbola ije pozicije odreuju prvi redak (pozicije 1, 2 i 3) i trei redak
(pozicije 2 i 5) matrice H nije paran broj.
Vidljivo je da zalihosni bitovi (pozicije 3, 4 i 5) zapravo predstavljaju bitove za provjeru
pariteta za odabrane pozicije unutar originalne kodirane poruke. Zbog ovog svojstva matrica H
se naziva paritetna matrica.
DEFINICIJA
S (y ) = y H .
Dva sindroma S (y ) smo ve izraunali u prethodnom primjeru. Ukoliko primljena kodna rije y
pripada kodu K, sindrom je vektor 0. Primijetimo da ukoliko je kd K = [n, k ] , onda je sindrom
vektor redak dimenzije nk. Sindrom S (y ) ima jedno vrlo vano svojstvo. Promotrimo opet kd
[5, 2,3] . Generirajua i paritetna matrica ovog koda su:
24
DEFINICIJA
0 1 1 0
, H =
0 1 1 0 1
G=
0
0
1
0
0
1
0
0
1
0 .
0
1
e
00000
11100
00111
11011
000
00001
11101
00110
11010
001
00010
11110
00101
11001
010
00100
11000
00011
11111
100
01000
10100
01111
10011
101
10000
01100
10111
01011
110
Moemo uoiti neobino svojstvo sindroma da sve kodne rijei jednog koseta (retka standardnog
niza) imaju isti sindrom. To se moe provjeriti mnoenjem za gornji standardni niz. Standardni
niz je proiren stupcem u kojem su zapisani sindromi pojedinih redaka/koseta. Ovo svojstvo
sindroma je klju brzog dekodiranja linearnih blok-kodova.
Korisna posljedica ovog svojstva je da je za odreivanje sindroma jednog retka standardnog niza
dovoljno izraunati sindrom vodeeg lana retka - vektora pogreke e. Tako dolazimo do
zakljuka da postoji preslikavanje jedan-na-jedan izmeu vektora pogreke i sindroma. Mogue
je napisati sljedeu tablicu preslikavanja za jednostruke pogreke:
e
00000
00001
00010
00100
01000
10000
S(y)
000
001
010
100
101
110
Opisani postupak ima odreenih nedostataka. to ako je primljena kodna rije y koja ima
dvostruku pogreku? Na primjer, sve kodne rijei koje imaju vektor pogreke e = 00011 ili
e = 10001 imaju sindrome koji ne pripadaju tablici preslikavanja:
[ 0 0 0 11 ] H = [ 0 11 ],
[ 1 0 0 0 1 ] H = [ 111 ].
25
TEOREM
SINDROM KOSETA: Svi kodne rijei (vektori) koji pripadaju istom kosetu koda K imaju isti
sindrom.
Ukoliko sindrom primljene kodne rijei ne postoji u tablici preslikavanja, onda dekoder kanala
zakljuuje da ta kodna rije ima dvostruku pogreku. Meutim, neke dvostruke pogreke mogu
uzrokovati potpuno krivu interpretaciju kod dekodera kanala. Na primjer, neka je poslana kodna
rije x = 10110 i neka se dogodila pogreka na pozicijama 2 i 3. Primljena je kodna rije
y = 11010 , a vektor pogreke je e = 01100 . Dekoder izraunava sindrom
S (y ) = [ 11 0 1 0 ] H = [ 0 0 1 ],
pogleda u tablicu preslikavanja i pogreno zakljuuje da je vektor pogreke 00001. Uzrok
ovakvom ponaanju nije u samom sindromskom dekodiranju, nego u principu dekodiranja
najbliim susjedom. Kd je ispravno otkrio dvostruku pogreku, ali dekoder nikako ne moe
razluiti izmeu jednostruke i dvostruke pogreke. Ovaj problem se u praksi rjeava dodavanjem
jo jednog paritetnog bita - poveanjem distance koda za 1.
Promatrajmo sluajni dogaaj da je tono k unaprijed odreenih pozicija simbola neke kodne
rijei duljine n pogreno preneseno, a preostalih n k ispravno preneseno. Zbog neovisnosti
dogaaja koji ga ine, vjerojatnost takvog dogaaja raunamo kao umnoak k vjerojatnosti
neispravnog prijenosa simbola i n k vjerojatnosti ispravnog prijenosa simbola, to daje
vjerojatnost pgk (1 pg )
n k
Oigledno je da dogaaj pojave pogreki nad odreenim simbolima kodne rijei odgovara
dogaaju pojave odgovarajueg vektora pogreke e. Stoga se u nastavku koriste iskljuivo
vjerojatnosti pojave vektora pogreke P(e).
Uoimo da dobivena vjerojatnost pgk (1 pg )
n k
Jasno, vjerojatnost pojave k-struke pogreke simbola, bez poznavanja tone pozicije pogreki,
dobiva se zbrajanjem svih vjerojatnosti konkretnih vektora pogreki s k jedinica. Na primjer, za
26
prethodni primjer koda [5, 2, 3] postoji 5 razliitih realizacija vektora pogreke e s jednostrukom
pogrekom, i svaka ima istu vjerojatnost. Stoga je vjerojatnost jednostruke pogreke simbola
P ( e = 1) = 5 pg (1 pg ) .
4
P( K ) =
N p
n
i
g
i =0
(1 p )
n i
TEOREM
P( K ) = (1 pg ) + 5 pg (1 pg ) = (1 + 4 pg )(1 pg ) .
5
N i =
Meutim, u standardnom nizu se mogu nalaziti i vektori pogreke s vie od t jedinica. Na alost,
ne postoji jednostavan nain izrauna vrijednosti Ni za i > t. Meutim, ukoliko je kd K perfektan,
onda su sve rijei unutar sfera radijusa t, pa se u standardnom nizu nalaze iskljuivo vektori
pogreke s t i manje jedinica. U tom sluaju je vjerojatnost pogreke perfektnog koda
P( K ) =
ni
t
i=0
pg i (1 pg )
n i
27
PRIMJER
R( K ) =
k
1,
n
gdje je k dimenzija koda, a n duljina koda. Ukoliko generirajua matrica koda K ima standardni
oblik, onda je R(K) udio korisnih (informacijskih) bitova u kodnoj rijei. Budui da je n k,
R(K) 1.
DEFINICIJA
KODNA BRZINA ZATITNOG KODA: Kodna brzina linearnog binarnog blok-koda K=[n, k]
s oznakom R(K) je omjer:
Za bilo koji realan broj > 0 postoji zatitni kd [n, k] s kodnom brzinom R(K) = k/n koji
ispunjava uvjet R(K) C(pg), a koji e za danu vjerojatnost pogreke simbola pg imati
vjerojatnost pogreke nakon dekodiranja manju od , tj.
Pe (K ) < .
Teorem o kodiranju nam kae da za dani binarni simetrini kanal s vjerojatnou pogreke pg
uvijek moemo konstruirati zatitni kd ija e vjerojatnost pogreke nakon dekodiranja Pe(pg)
biti po volji mala dok god je kodna brzina takvog koda manja od kapaciteta kanala: R(K) < C(pg).
Drugim rijeima, dok god kodna brzina koda ne prelazi kapacitet kanala, komunikaciju je
mogue realizirati pouzdanom po volji. Podruje u kojem je mogue konstruirati kd s
proizvoljno malom pogrekom dekodiranja prikazano je na slici (Slika 0.11).
28
TEOREM
Za R(K) > C(pg) nije mogue postii po volji malu pogreku Pe(K). Postavlja se pitanje koliku je
najmanju vjerojatnost pogreke nakon dekodiranja mogue postii ukoliko zatitni kd mora
imati kodnu brzinu veu od kapaciteta. U teoriji informacije postoji niz manje i vie uskih granica
za Pe(K) kada je R(K) > C(pg) koje u obzir uzimaju konstrukcijske vrijednosti samog koda (vidi
[4]). Ovdje emo za odreivanje ove granice iskoristiti originalni Shannonov teorem o kanalu s
prisustvom smetnji koji kae da je kodna brzina R ograniena odozgo izrazom:
C
,
1 + Pe log 2 Pe + (1 Pe ) log 2 (1 Pe )
1 + p g log 2 pg + (1 pg ) log 2 (1 pg )
1 + Pe ( K ) log 2 Pe ( K ) + (1 Pe ( K )) log 2 (1 Pe ( K ))
Pe ( K ) 1
1 1
+C.
R( K ) n
Iz ovoga je vidljivo da za R(K) > C(pg) nije mogue postii proizvoljno mali Pe(K).
Na slici (Slika 0.12) je prikazana skica mogueg podruja vrijednosti vjerojatnosti pogreki
nakon dekodiranja za ciljane vrijednosti kodnih brzina koda [5]. Vidimo da ukoliko kodna brzina
pree vrijednost kapaciteta, nije mogue postii po volji malu pogreku nakon dekodiranja, a
granicu odreuje izraz za obrat Shannonovog teorema.
Iako nam Shannonov teorem o kodiranju kae da postoje kodovi koji osiguravaju po volji malu
pogreku nakon dekodiranja, on nam ne daje algoritam za stvaranje takvog koda. U opem
sluaju generiranje zatitnog koda je preputeno domiljatosti konstruktora. Meutim, postoje
klase linearnih blok-kodova kod kojih je mogue definirati generirajui matricu prema unaprijed
29
TEOREM
poznatoj distanci koda (npr. BCH i Reed-Solomonovi kodovi), to moe znatno olakati
konstrukciju koda.
HAMMINGOV KOD: Neka je r pozitivan cijeli broj i neka je H matrica dimenzija r (2r 1)
ije stupce sainjavaju svi vektori dimenzije r razliiti od 0 iz vektorskog prostora V(r). Matrica
H je paritetna matrica Hammingovog koda s oznakom Ham(r).
H1 =
1
1
1
1
0
1
1
0
0
1
1
1 1
1 1 1 7
0 2
1 1 0 6
0 1 1 3
1 3
0 4 ili H 2 = 1 0 1 5
1 0 0 4
1 5
0 6
0 1 0 2
0 0 1 1
1 7
perfektan kd.
Drugo svojstvo je izuzetno zanimljivo. Ono garantira da Hammingov kd koji ima duljinu kodne
rijei 7 ili veu, zasigurno moe ispraviti jednostruku pogreku, budui da je (3 2) / 2 = 1 .
Odreivanje distance Hammingovog koda s proizvoljnim n = 2r 1 u opem sluaju nije
jednostavan zadatak i ovaj problem nije u fokusu ovog poglavlja. Ovdje navodimo samo neke
primjere Hammingovog koda s distancama veim ili jednakim 3 - Tablica 0.2.
30
TEOREM
[n, k ,3]
[n, k ,5]
[n, k , 7]
[n, k ,9]
[n, k ,11]
[n, k ,13]
[3,1, 3]
[5,1, 5]
[7,1, 7]
[9,1, 9]
[11,1,11]
[13,1,13]
[5, 2,3]
[8, 2,5]
[11, 2, 7]
[14, 2,9]
[17, 2,11]
[20, 2,13]
[6,3,3]
[10,3,5]
[13,3, 7]
[17,3,9]
[20,3,11]
[24,3,13]
[7, 4,3]
[11, 4,5]
[14, 4, 7]
[19, 4,9]
[22, 4,11]
[26, 4,13]
[9,5,3]
[13,5,5]
[15,5, 7]
[20,5,9]
[23,5,11]
[27,5,13]
[10, 6,3]
[14, 6,5]
[17, 6, 7]
[22, 6,9]
[25, 6,11]
[29, 6,13]
[11, 7,3]
[15, 7,5]
[18, 7, 7]
[24, 7,9]
[26, 7,11]
[32, 7,13]
[12,8, 3]
[16,8, 5]
[19,8, 7]
[25,8, 9]
[28,8,11]
[34,8,13]
[13,9,3]
[17,9,5]
[20,9, 7]
[26,9,9]
[30,9,11]
[35,9,13]
[14,10, 3]
[19,10, 5]
[21,10, 7]
[28,10, 9]
[31,10,11]
[36,10,13]
0 1 0 1 0 1
1 1 0 0 1 1 .
0 0 1 1 1 1
Stupci ove matrice predstavljaju binarne ekvivalente brojeva 1,2, , 7. U opem sluaju ovakvu
matricu dobivamo na nain da se i-ti stupac formira od bitova koji predstavljaju binarni
ekvivalent broja i = 1, , 2r-1, gdje je r broj redaka paritetne matrice H.
Ve smo rekli da svaki redak paritetne matrice odreuje pozicije simbola kodne rijei iji zbroj
mora biti paran broj, odnosno jednak 0 u aritmetici modulo 2. Promatrana matrica H definira
sljedee pozicije u kodnoj rijei iji zbroj vrijednosti simbola mora biti paran:
prvi redak
drugi redak
trei redak
31
U skladu s ovako odabranom strukturom kodne rijei, moraju biti zadovoljene sljedee jednakosti:
x2
x4
Postupak formiranja jedne kodne rijei za ulaznu kodiranu poruku 1010 i Hammingov kd [7, 4,
3] ilustriran je na slici (Slika 0.14). Bit za provjeru pariteta x1 dobiven je zbrajanjem bitova na
pozicijama kodne rijei 3, 5 i 7, odnosno pozicijama kodirane poruke 1, 2 i 4: x1=1+0+0=1. Bit za
provjeru pariteta x2 dobiven je zbrajanjem bitova na pozicijama kodne rijei 3, 6 i 7, odnosno
pozicijama kodirane poruke 1, 3 i 4: x2=1+1+0=0. Bit za provjeru pariteta x3 dobiven je
zbrajanjem bitova na pozicijama kodne rijei 5, 6 i 7, odnosno pozicijama kodirane poruke 2, 3 i
4: x3=0+1+0=1. Dobivena je kodna rije 1011010.
Opisani postupak moe se initi kompliciran. Stoga se isplati pronai generirajuu matricu koda
[7,4,3] - G. Budui da paritetna matrica ima 3 retka, a duljina kodne rijei iznosi 7, slijedi da je
32
dimenzija koda k=4. To je ujedno i broj redaka generirajue matrice koda G. Broj stupaca
generirajue matrice je jednak duljini kodne rijei - 7.
Kodna rije Hammingovog koda se formira mnoenjem poruke (duljine 4 bita) s matricom G.
Prvi bit kodne rijei se formira mnoenjem poruke s prvim stupcem matrice G, drugi bit
mnoenjem poruke s drugim stupcem itd. Pogledajmo ponovno sliku (Slika 0.14). Jasno je da se
prvi bit formira zbrajanjem 1., 2. i 4. bita kodirane poruke. Stoga e prvi stupac matrice G
zasigurno biti [ 11 0 1 ] .
Slino je i s drugim stupcem. Drugi bit poruke se formira zbrajanjem 1., 3. i 4. bita kodirane
poruke, pa je drugi stupac [ 1 0 11 ] . Trei bit kodne rijei je sam prvi bit poruke, pa je trei
stupac matrice G zapravo [ 1 0 0 0 ] . Nastavljajui ovaj postupak dolazimo do generirajue
matrice koda [7, 4,3] :
1
G=
1
0
1
1
1
0
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
0
.
0
1
[ 101 0 ]
0
1
0
1
1
1
0
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
0
= [ 1 0 11 0 1 0 ].
0
0 1 0 1 0 1
1 1 0 0 1 1 .
0 0 1 1 1 1
Ukoliko primljena kodna rije y ima pogreku na i -tom bitu, sindrom S(y) e biti binarni zapis
vrijednosti i. Na primjer, neka primljena kodna rije ima pogreku na 5. bitu - kodna rije
0000100 . Dobiva se sindrom:
[ 0 0 0 0 1 0 0 ] H = [ 1 0 1 ],
a to je upravo binarni zapis broja 510 = 1012 . Na taj nain paritetna matrica omoguuje
neposredno preslikavanje sindroma u indeks pozicije na kojoj je nastupila jednostruka pogreka.
33
Ako je S(y)0, invertiraj bit na poziciji koja odgovara decimalnom ekvivalentu sindroma.
Naravno, mogue je koristiti i bilo koju drugu Hammingovu paritetnu matricu, meutim onda se
mora upotrijebiti opa procedura dekodiranja sindromom linearnih blok-kodova.
Primijetimo da svaka primljena kodna rije ima sindrom jednostruke pogreke, bez obzira
nastupila jednostruka ili dvostruka pogreka. To svojstvo je posljedica perfektnosti koda. Nain
rjeavanja ovog problema je koritenje proirenog Hammingovog koda, to izlazi izvan okvira
ove knjige.
DEFINICIJA
linearan blok-kd i
ako bilo koji cikliki posmak kodne rijei iz K opet daje kodnu rije iz K.
Priroda ciklikog koda je takva da je kodnu rije [ an-1 an-2 a2 a1 a0 ] korisno poistovjetiti s
polinomom stupnja n 1:
a = [an 1 ... a2 a1 a0 ] a ( x ) = an 1 x n 1 + an 2 x n 2 + ... + a2 x 2 + a1 x1 + a0 x 0 ,
gdje su ai{0,1}, a operacije se provode u aritmetici modulo 2. Na primjer, kodnu rije a=[10101]
poistovjeujemo s polinomom
a = [1 0 1 01] a( x) = x 4 + x 2 + 1.
Treba naglasiti da nam polinom a(x) ovdje slui samo kao povoljnije sredstvo zapisa kodne rije i
od vektora simbola. Polinom a(x) ne promatramo kao funkciju iji argument x moe poprimiti
neku konkretnu vrijednost, nego kao sredstvo zapisa kodne rijei.
Promotrimo
proizvoljnu
kodnu
rije
opisanu
polinomom
n 1
n 2
2
1
0
a( x ) = an 1 x + an 2 x + ... + a2 x + a1 x + a0 x te ju pomnoimo s x i preoblikujmo kako slijedi:
34
x a( x ) = an 1 x n + an 2 x n 1 + ... + a2 x 3 + a1 x 2 + a0 x1
=
=
x n ( an 1 x 0 ) + an 2 x n 1 + ... + a1 x 2 + a0 x1
x n ( an 1 x 0 ) an 1 x 0 + an 1 x 0 + an 2 x n 1 + ... + a1 x 2 + a0 x1
= an 1 ( x n 1) + an 2 x n 1 + ... + a1 x 2 + a0 x1 + an 1 x 0 .
an 1 ( x n 1)
an 2 x n 1 + ... + a1 x 2 + a0 x1 + an 1 x 0
Ono to smo upravo utvrdili je postupak ciklikog posmicanja polinoma a( x ) reda n 1 (tj.
ciklike kodne rijei duljine n) za jedno mjesto ulijevo. U opem sluaju postupak za posmicanje
za m pozicija ulijevo je:
pomnoi polinom a( x ) s x m ,
izraunaj ostatak dijeljenja polinomom x n 1 .
Primjer: Cikliki posmak ulijevo
b( x) = a ( x) x = x3 + x,
x3 + x
x3
: x3 1 = 1
+1
x +1
Ostatak dijeljenja b=011 predstavlja kodnu rije a koja je cikliki posmaknuta ulijevo za jednu
poziciju. Isti postupak rezultira cikliki posmakom za sve rijei duljine 3 .
Budui da posmicanjem bilo koje kodne rijei ciklikog koda moramo opet dobiti kodnu rije
koda, slijedi da polinomi svih kodnih rijei moraju biti u modulo xn 1 aritmetici6. Skup svih
polinoma F [ x ] = a ( x ) : a( x)(mod ( x n 1)) oznaimo s Rn. Poistovjeujui kodne rijei s
Polinom namjerno piemo od veeg prema manjem stupnju kako bi njegova struktura odgovarala znaaju bitova
kodnih rijei.
Polinomi u aritmetici modulo xn1 su oni polinomi koji su dobiveni dijeljenjem polinoma proizvoljnog stupnja
polinomom xn1, odnosno svi oni polinomi koji pri dijeljenju s xn1 za ostatak nakon dijeljenja daju same sebe.
Oznaka polinoma a(x) u aritmetici modulo xn1 je a(x)(mod (xn1)).
6
35
PRIMJER
Promatrajmo kd duljine n = 3 i kodnu rije a = 101 . Polinom koji odgovara ovoj kodnoj rijei
je a( x) = x 2 + 1 . Pomnoimo ovaj polinom5 s x i izraunajmo ostatak dijeljenja s x 3 1 :
Postavlja se pitanje kako generirati konkretan cikliki kd? Odgovor na to pitanje slijedi iz
sljedeeg vanog svojstva.
a ( x ) + b( x) K ,
a ( x ) K i r ( x ) R r ( x) a( x) mod( x
a( x ), b( x ) K
1) K .
TEOREM
Prvo svojstvo odgovara svojstvu linearnosti. Drugo svojstvo kae da ukoliko bilo koji polinom
koda K pomnoimo s bilo kojim polinomom iz skupa Rn, ponovno dobivamo neki polinom
(kodnu rije) iz skupa K. Kaemo da je cikliki kd zatvoren s obzirom na mnoenje s bilo kojim
polinomom iz Rn. Budui da su svi polinomi a(x) takoer u skupu Rn, ovim svojstvom je dan
jednostavan algoritam za generiranje ciklikog koda s duljinom kodne rijei n :
K f ( x ) = {r ( x ) f ( x) | r ( x ) Rn }.
(0 x 2 + 0 x + 0)
(0 x 2 + 0 x + 1)
(0 x 2 + 1x + 0)
(0 x 2 + 1x + 1)
(1x 2 + 0 x + 0)
(1x 2 + 0 x + 1)
(1x 2 + 1x + 0)
(1x 2 + 1x + 1)
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
( x 2 + 1)(mod ( x 3 1))
=
=
=
=
=
=
=
=
0x2 + 0 x + 0
1x 2 + 0 x + 1
0 x 2 + 1x + 1
1x 2 + 1x + 0
1x 2 + 1x + 0
0 x 2 + 1x + 1
1x 2 + 0 x + 1
0x2 + 0 x + 0
[000]
[101]
[011]
[110]
[110]
[011]
[101]
[000]
Budui da imamo ponavljanje polinoma, ukupan broj kodnih rijei ciklikog koda je 4 : 000, 101,
011, 110. Distanca ovog koda je 2 (najmanja teina kodnih rijei je 2), to znai da kd moe
detektirati jednostruku pogreku. Generirajuu matricu moemo dobiti uzimajui drugu i treu
kodnu rije pa dobivamo:
36
PRIMJER
0 1
.
0 1 1
G=
Jasno, generiranje ciklikog koda na ovaj nain moe biti izuzetno sloeno zbog velikog broja
rijei. Stoga se uvodi pojam generirajueg polinoma ciklikog koda koji jednoznano odreuje
sam kd i generirajuu matricu koda.
TEOREM
Ovo svojstvo potrebno je paljivo tumaiti. Prva i druga toka kau da je cikliki kd K mogue
generirati polinomom koji je jedini polinom svog stupnja i da ima najmanji stupanj od svih
polinoma u kodu. Druga toka kae da upravo taj jedinstveni polinom generira cikliki kd K.
Trea toka kae da je generirajui polinom bilo koji faktor polinoma x n 1 , tj. polinom koji
dijeli x n 1 bez ostatka.
Na primjer, ukoliko se promatra cikliki kd podskupa R3, onda kd K mora biti u aritmetici
modulo ( x 3 1) . x 3 1 mogue je faktorizirati na sljedei nain7:
x 3 1 = 1 ( x + 1) ( x 2 + x + 1).
Stoga su svi mogui cikliki kodovi oni koji se mogu generirati polinomima: g(x)=1,
g ( x) = x + 1, g ( x ) = x 2 + x + 1 i sam g ( x ) = x 3 1 , budui da sam sebe dijeli bez ostatka.
DEFINICIJA
Kada je odabran generirajui polinom ciklikog koda, odreivanje generirajue matrice G koda
postaje trivijalno.
g ( x ) = g r x r + ... + g 2 x 2 + g1 x + g 0 .
37
TEOREM
G=
gr
g r 1
gr 2
g1
gr
g r 1
g r 2
gr
g r 1
gr 2
gr
g0
g1
g0
g1
g0
0
g r 1
g r2
g1
0 .
0
g 0
x 5 1 = ( x + 1)( x 4 + x3 + x 2 + x + 1) .
Stoga
mogui
su
sljedei
generirajui
polinomi:
g 0 ( x) = 1,
g1 ( x ) = x + 1,
nisu interesantni budui da g 0 ( x ) = 1 generira kd koji ima sve kodne rijei iz V(5), a
g3 ( x) = x 5 + 1 generira kd koji ima samo kodnu rije 00000 . Takoer g 2 ( x ) daje kd dimenzije
k = n r = 5 4 = 1 i ima samo jednu kodnu rije 11111 .
G1 =
1
1
0
0
0
1
1
0
0
0
1
1
0
0
.
0
Pokazali smo da je generiranje ciklikog koda trivijalno kada su poznati faktori polinoma x n 1
koda duljine n. Najvei problem je provesti samu faktorizaciju. Matematika literatura obiluje
razliitim algoritmima za faktorizaciju, no ovdje emo jednostavno nabrojati faktorizacije za
nekoliko najee koritenih duljina kodnih rijei. Prilikom generiranja ciklikog koda
jednostavno treba odabrati povoljan generirajui polinom - Tablica 0.3.
Naalost, ne postoji nikakvo poznato svojstvo ciklikog koda na osnovu kojeg bi uz poznat
generirajui polinom i veliinu kodne rijei mogli izraunati distancu koda. Postoje samo
opeprihvaeni pristupi proraunu distance koda za pojedine klase ciklikih kodova. No ovi
pristupi su esto sloeni i zahtjevni. Stoga se koriste tablice ve poznatih rezultata na osnovi
kojih se donosi odluka o izboru koda.
38
PRIMJER
Formirajmo cikliki kd ija e duljina kodne rijei biti n = 5 . Kd mora biti u aritmetici modulo
x51, a generirajui polinom koda je faktor polinoma x51 koji ima sljedeu faktorizaciju:
aritmetika
x1 1
x +1
x2 1
( x + 1) 2
x3 1
( x + 1)( x 2 + x + 1)
x5 1
( x + 1)( x 4 + x 3 + x 2 + x + 1)
x7 1
( x + 1)( x 3 + x + 1)( x3 + x 2 + 1)
x9 1
( x + 1)( x 2 + x + 1)( x 6 + x3 + 1)
11
x11 1
( x + 1)( x10 + x 9 + x8 + x 7 + x 6 + x 5 + x 4 + x 3 + x 2 + x + 1)
13
x13 1
15
x15 1
17
x17 1
( x + 1)( x 8 + x 5 + x 4 + x 3 + 1)( x 8 + x 7 + x 6 + x 4 + x 2 + x + 1)
19
x19 1
x n 1 = g ( x)h( x).
h( x) se zove polinom za provjeru pariteta ciklikog koda K.
DEFINICIJA
Budui da je g(x) polinom stupnja r, onda je h(x) polinom stupnja k=nr. Polinom za provjeru
pariteta ima sljedee vano svojstvo.
DEFINICIJA
h( x) = hk x k + ... + h2 x 2 + h1 x + h0 ,
H=
h0
h1
h2
hk 1
h0
h1
h2
h0
h1
hk
hk 1
hk
hk 1
hk
0 .
0
h2
h0
h1
h2
hk 1
hk
Konstruirajmo cikliki kd s duljinom kodne rijei n = 7. Generirajui polinom mora biti stupnja
r < 7 te mora faktorizirati polinom x71. Iz tablice faktorizacija (Tablica 0.3) vidimo daje
faktorizacija ovog polinoma:
x 7 1 = ( x + 1)( x 3 + x + 1)( x3 + x 2 + 1) .
G=
1
1
0
0
0
1
1
0
1
0
1
1
0
1
0
1
0
0
1
0
0
0
0
H=
1 1 0 1 0 0
1 1 1 0 1 0 .
0 1 1 1 0 1
000000, 1111111.
Rijei su razdvojene u dva podskupa dobivena posmicanjem kodnih rijei 1101000 i 1011100, te
kodne rijei 0000000 i 1111111. Potvrdili smo da se cikliki posmak bilo koje rijei opet daje
kodnu rije istog koda. Najmanja teina svih kodnih rijei razliitih od 0 je 3, to je ujedno i
teina svih kodnih rijei nastalih posmicanjem rijei 1101000. Stoga je distanca ovog koda 3 pa
je konstruiran kd [7,4,3]. Iz svojstava o distanci koda zakljuujemo da ovaj kd moe otkriti
dvostruku pogreku i ispraviti jednostruku pogreku.
U praksi je iznimno vano jednostavno izdvojiti podatkovne bite, a ujedno zadrati svu
funkcionalnost ciklikog koda.
Najee se koristi algoritam kodiranja koji proizvodi kd u kojem se redom (od najznaajnijih
do najmanje znaajnih pozicija) prvo nalaze bitovi poruke, a onda zatitni bitovi. Dio kodne rije i
u kojem se nalaze zatitni bitovi naziva se ciklika provjera zalihosti (engl. cyclic redundancy
check - CRC) - Slika 0.16. U nastavku emo ovu vrstu ciklikog koda zvati i CRC kd.
Ideja algoritma je sljedea: Neka je d ( x ) polinom koji opisuje kodiranu poruku. Neka je g ( x)
generirajui polinom stupnja r. Polinom d ( x ) moe se pomnoiti s x r i podijeliti s g(x) u
aritmetici modulo 2, nakon ega se dobiva polinom q( x ) i ostatak r ( x) :
d ( x ) x r = g ( x )q( x ) + r ( x).
r ( x) je polinom stupnja manjeg od r. Budui da je q( x) Rn , slijedi da je g ( x )q( x) zasigurno
neka kodna rije ciklikog koda. Ta kodna rije je u aritmetici modulo 2 jednaka:
c( x) = g ( x )q( x ) = d ( x ) x r + r ( x ),
gdje je
r ( x) = d ( x ) x r mod[ g ( x)].
Dakle, dobivena ciklika kodna rije sastoji se od umnoka d ( x ) x r i polinoma r(x). d(x)
predstavlja ulaznu kodiranu poruku i polinom je stupnja nr1. Mnoenjem s x r pomaknut je
ulijevo za r pozicija tako da u kodnoj rijei c(x) najznaajnijih nr pozicija zauzimaju upravo
bitovi kodirane poruke.
Polinom r(x) je stupnja manjeg od r, te u ukupnoj kodnoj rijei zauzima r najmanje znaajnih
bitova kodne rijei - Slika 0.17. Polinom r(x) predstavlja cikliku redundantnu zatitu kodne
rijei.
41
Dakle, da bismo formirali kodnu rije za ulaznu poruku d(x), sve to treba napraviti je izraunati
ostatak dijeljenja d ( x ) x r s generirajuim polinomom g ( x) i ostatak zdesna dodati samoj
kodiranoj poruci.
U praksi se dijeljenje polinoma pojednostavljuje na nain da se promatraju samo binarni
koeficijenti polinoma. Potrebno je jedino imati u vidu pravilo orijentacije pisanja binarnog
ekvivalenta. Dogovorno uzimamo da prvi bit slijeva ima najveu teinu, a prvi zdesna najmanju
teinu. Stoga su binarni brojevi ekvivalentni polinomima na sljedei nain:
g ( x ) = g r x r + g r 1 x r 1 +
+ g 2 x 2 + g1 x + g 0 [ g r g r 1
g 2 g1 g 0 ].
Primijetimo da u svakom koraku vodei (lijevi) bit predstavlja kvocijent dijeljenja (podebljani
bitovi), te da je stupanj ostatka uvijek za (najmanje) jedan manji od polinoma kojeg dijelimo.
Vodei (podebljani) bit mnoi generirajui polinom i oduzimamo ga od trenutno dijeljenog
polinoma. Nastaje ostatak koji je za jedan stupanj manji. U svakom koraku posuujemo i nulu
(strelica) iz poetnog polinoma. Dijeljenje obavljamo bez preskakanja, dakle i onda kada g ( x) u
polinom "ulazi" nula puta.
Ostatak pri dijeljenu je 011, odnosno polinom x + 1 , a to je upravo zalihosni (CRC) dio kodne
rijei, pa je kodna rije ciklikog koda:
1 0 1 0 0 1 1.
Moemo primijetiti vrlo jednostavan algoritam dobivanja trojke u sljedeem koraku iz trojke u
prethodnom koraku. Naime, vidimo da R3 u svakom koraku mnoi bitove generirajueg polinoma,
pa se od dijeljenog polinoma oduzima ili 0000 ili sam generirajui polinom g(x). Budui da se
oduzimanjem uvijek gubi vodei lan (R3 R3g3 = 0), trojku u sljedeem koraku uvijek
dobivamo prema sljedeim izrazima:
(1) R3
= R2 ( R3 g 2 )
(2) R2
= R1 ( R3 g1 )
(3) R1
= ulazni bit ( R3 g0 ),
d3
d2 d1 d0
g (x )
g(x)
g (x )
g(x)
g3 g2 g1 g0
R3 R2 R 1
0 1
1
x
g2 g1 g0
1
d0
g2 g1 g0
0
g2 g1 g0
0
g2 g1 g0
0
Identian postupak se ponavlja u svim koracima sve dok se ne dobije konani ostatak. Zbog toga
je mogue izgraditi sklop u kojem je svakom R1 , R2 i R3 pridruen jedan bistabli. Sklop je
shematski prikazan na slici (Slika 0.20).
Kao to se moe vidjeti, ispred bistabila R1 i R2 je umetnut sklop koji vri operaciju ekskluzivnog
ili izmeu koeficijenta gi i prethodnog bistabila, odnosno ulaza. Ekskluzivni ili () odgovara
zbrajanju u aritmetici modulo 2. Na ulaz bistabila R1 dovodi se rezultat operacije ekskluzivnog ili
43
izmeu ulaznog bita i trenutnog stanja bistabila R3. To odgovara operaciji R1= ulazni bit R3g0,
gdje je g0=1.
Jednako tako, na ulaz bistabila R2 dovodi se rezultat operacije ekskluzivnog ili izmeu trenutnog
stanja bistabila R1 i trenutnog stanja bistabila R3. To odgovara operaciji R2= R1 R3 g1, gdje je
g1=1.
Na ulaz bistabila R3 se dovodi jedino trenutno stanje registra R2. Razlog tome je u injenici da je
g2=0, pa je izraz R3 = R2 R3g2 = R2. Zakljuujemo da se ekskluzivni ili vri samo ispred onih
registara iji je odgovarajui koeficijent generirajueg polinom jednak 1. Stoga ovaj sklop
obavlja operaciju koja je opisana slikom (Slika 0.19). Primijetimo jo da vodei koeficijent
polinoma nema vlastiti sklop za ekskluzivni ili.
Postupak dobivanja ostatka r(x) je da se na poetku u registre R1, R2 i R3 upie 0. Nakon toga se u
svakom koraku (taktu) na ulaz dovode redom bitovi poruke d3, d2, d1 i d0, a nakon toga slijede tri
nule. Potrebno je naglasiti da se u jednom koraku (taktu) odvijaju sve tri opisane operacije
odjednom.
U opem sluaju sklop za generiranje zatitnog dijela ciklikog koda s generirajuim polinomom
g ( x ) = g r x r + + g1 x + g 0 izgleda kako je prikazano na slici (Slika 0.21). I u ovom sluaju
koeficijent g r nema vlastiti sklop za ekskluzivni ili. Zatitni dio se formira u bistabilima
Rr , , R1 na nain da se na poetku u njih upiu nule, a nakon toga se na ulaz dovedu svi bitovi
poruke redom d k 1 , , d0 . Nakon njih se na ulaz dovodi tono r bitova 0, nakon ega se u
Rr , , R1 nalazi zatitni dio koda.
Postavlja se pitanje kako otkriti i eventualno ispraviti pogreku primljene ciklike kodne rijei.
Promatrajmo ponovno kd s generirajuim polinomom g ( x ) = x3 + x + 1. Ranije smo utvrdili da
je distanca koda K=[7,4] d(K)=3, tako da ovaj kd moe ispraviti jednostruku pogreku.
Ukoliko dio primljene kodne rijei koji odgovara samoj kodiranoj poruci (prva etiri bita) u
dekoderu ponovno propustimo kroz sklop za kodiranje, ostatak mora biti jednak zatitnom dijelu
ako je poruka primljena bez pogreke. No, postavlja se pitanje kako izraunati sindrom i na
osnovu njega odrediti poziciju pogreke.
Cilj je sklop za kodiranje iskoristiti i za dekodiranje. Stoga je potrebno pronai nain
izraunavanja sindroma istim sklopom kao na slici (Slika 0.21). U tu svrhu emo definirati
polinom pogreke e( x) , koji ima isti smisao kao i vektor pogreke. Primljena kodna rije y ( x) se
moe zapisati kao poslana kodna rije c( x) kojoj je dodan polinom pogreke e( x) :
y ( x) = c ( x) + e( x ).
Svi polinomi y(x) koji imaju isti e(x) moraju imati isti sindrom pri dekodiranju. Iako bi se
sindrom mogao dobiti mnoenjem paritetnim polinomom h(x), ovdje emo upotrijebiti neto
drugaiji nain raunanja. Promotrimo funkciju
44
S [ y ( x )] = x r y ( x ) mod g ( x),
( 0.1 )
g ( x) q( x) | x r
g ( x ) q( x) x .
e( x)
S[e(x)]
x +1
x2 + x
x2
x2 + x +1
x3
x2 + 1
x4
x5
x6
x2
Kao to vidimo, razliiti polinomi pogreke e(x) generiraju razliite vrijednosti S[y(x)], pa je
S[y(x)] definiran izrazom ( 0.1 ) zapravo sindrom primljene kodne rijei y ( x) koda [7, 4] .
Treba uoiti da je izraz koji definira nain raunanja sindroma
S [ y ( x )] = x r y ( x ) mod g ( x )
identian izrazu za dobivanje zalihosnog dijela ciklike kodne rijei. Drugim rijeima, ukoliko u
funkciju sindroma S(x) uvrstimo polinom ulazne kodirane poruke d(x), dobit emo zalihosni dio
kodne rijei r(x). Dakle, sindrom se rauna na jednak nain kao i zatitni dio ciklike kodne rijei.
Stoga je logino iskoristiti isti sklop i za kodiranje i za dekodiranje.
45
Kako bi sklop mogao ispraviti pogreku na nain da odredi poziciju pogreke, potrebno je dodati
dodatne sklopove. Promotrimo ponovno primjer ciklikog koda K=[7,4,3]. Ukoliko je dolo do
pogreke na treem bitu kodne rijei, tj. ukoliko je vektor pogreke e(x) = x3, sindrom primljene
kodne rijei y(x) e biti S[y(x)] = S[e(x)]= x2+1. U skladu s tim zakljuujemo da e nakon
proputanja primljene kodne rijei y(x) kroz sklop na slici (Slika 0.20), u registrima R3, R2, R1
ostati bitovi redom 1 0 1. Dakle, ukoliko doe do pogreke na treem bitu kodne rijei, logiki
izraz:
q = R3 R2 R1
mora dati logiku jedinicu. U skladu s tim na sklop kodera (Slika 0.20) dodajemo dodatni sklop
za otkrivanje pogreke na treem bitu (Slika 0.22) i dobivamo dekoder. Jasno, ovakav dekoder je
nepotpun te ga je potrebno nadograditi sklopovima za otkrivanje jednostruke pogreke na drugim
bitovima, kao i sklopovima za otkrivanje viestrukih pogreki.
Zatitni dio CRC se odnosi na dio okvira koji ne ukljuuje preambulu i SFD (oznaka poetka
okvira, engl. Start Frame Delimiter). Zbog ogranienja na veliinu okvira koju namee sam
standard, kodna rije ima duljinu od 512 bitova do najvie 12144 bita. Meutim, sam generiraju i
polinom faktorizira polinom x n 1 , gdje je n = 232 , pa kodna rije teoretski moe biti daleko
vea od 12144 bita.
46
Svaka pojedina duljina okvira zapravo odgovara posebnom ciklikom kodu, pa se stoga unutar
standarda Ethernet aktivno koristi 11633 razliitih cikli kih kodova s duljinama n [512,12144] .
Ovakvi kodovi se zovu skraeni cikliki kodovi (engl. shortened cyclic codes).
Odreivanje distance koda je mukotrpan zadatak. Numerikim eksperimentima provedenim u
sklopu niza istraivanja (npr. [8]) utvrene su sljedee distance ovih kodova - Tablica 0.5.
Tablica 0.5: Distance ciklikih kodova koritenih u standardu IEEE 802.3
duljina koda K - n
distanca d ( K )
3007 n 12144
301 n 3006
204 n 300
124 n 203
90 n 123
67 n 89
Dakle, CRC kd koji se koristi u lokalnim mreama Ethernet moe detektirati najmanje trostruku
pogreku bita jednog okvira te otkloniti jednostruku pogreku bita. No, CRC kd ima i svojstva
otklanjanja snopova pogreki bita.
Kada se unutar neke kodne rijei duljine n dogode pogreke unutar grupe od b susjednih bitova
rijei, onda se kae da se dogodio snop pogreki duljine b (engl. error burst). Dakle, snop
pogreki je niz bitova od prve do posljednje pogreke. Ukoliko su pogreke nastupile na poetku i
na kraju kodne rijei, onda se definira cikliki snop pogreki koji se dobije cikliki posmicanjem
kodne rijei.
U osnovi bilo koji cikliki kd s generirajuim polinomom stupnja r moe detektirati snop
pogreki duljine r ili manje. To znai da CRC-32 moe detektirati snop pogreki duljine 32 ili
manje. Osim ovoga, cikliki kd CRC-32 moe detektirati i dvostruke snopove pogreki duljine b.
Dvostruki snopovi pogreki duljine b se sastoje od dva snopa pogreki najvee duljine b.
Uoimo jednu vanu injenicu vezanu uz odnos kodera informacije i kodera kanala. Ako
razmatramo podatkovni sloj mree utemeljene na standardu Ethernet, onda uoavamo da
postupak formiranja cjelokupnog okvira odgovara funkciji koju u opem modelu
komunikacijskog sustava obavlja koder informacije. Zapravo, koder informacije kao poruku daje
cjelokupan ethernetski okvir u kojem jo nije izraunata ciklika zatita. Nakon toga, koder
kanala izraunava cikliku zatitu (CRC) i stavlja je na predvieno mjesto. Time cjelokupan
okvir postaje jedna kodna rije.
U opem sluaju koder kanala ne mora zatititi cjelokupnu poruku, nego samo onaj njen dio koji
je iz tehnikih razloga potrebno zatititi. Primjer je paket mrenog protokola IP (engl. Internet
Protocol). U zaglavlju paketa IP-a postoji 16-bitna zatita zaglavlja paketa, iako se kodnom rije i
smatra cjelokupan paket. Stoga u ovom sluaju koder kanala titi samo zaglavlje paketa.
1.5. Reference
[1]
Hamming, R.W., Error Detecting and Error Correcting Codes, Bell Systems Technical
Journal, vol. 26, pp. 147-160, April 1950.
47
[2]
R. Hill, A First Course in Coding Theory, Oxford University Press, ISBN: 0198538030,
SAD, 1990.
[3]
M. J. E. Golay, Notes on Digital Coding, Proceedings of IEEE, vol 37, pp. 657, 1949.
[4]
Gallager, R.G., Information Theory and Reliable Communication, John Wiley & Sons,
Inc., ISBN: W-471-29048-3, SAD, 1968.
[5]
Sinkovi, V., Informacija, simbolika, semantika, kolska knjiga Zagreb, ISBN: 953-030739-X, Zagreb, 1997.
[6]
T.R.N. Rao and E. Fujiwara, Error-Control Coding for Computer Systems, Prentice-Hall
International Editions, ISBN: 0-13-284068-5, New Jersy, 1989.
[7]
ANSI/IEEE Standard for Local Area Networks, Carrier sense multiple access with
collision detection (CSMA/CD) access method and physical layer specifications, 1984.
[8]
Fujiwara, T., Kasami, T., Lin, S., Error Detecting Capabilities of the Shortened Hamming
Codes Adopted for Error Detection in IEEE Standard 802.3, IEEE Transactions on
Communications, vol. 37, No. 9, pp. 986-989, September 1989.
48