Professional Documents
Culture Documents
Zastitno Kodiranje II
Zastitno Kodiranje II
Zaštitno kodiranje II
Linearno binarni blok kodovi
Sadržaj
• Linearno binarni blok kodovi
• Generirajuća matrica G i njen standardni oblik
• Kodiranje
• Dekodiranje (dekodiranje preko sindroma)
• Proračun vjerojatnosti ispravnog dekodiranja
• Hammingovi kodovi
• Ciklični kodovi
• Konvolucijski i turbo kodovi
Teorija informacije 2 od 88
Vektorski prostor
• Linearno binarni blok kodovi definiraju se preko skupa vektora
(vektorski prostor) nad kojim su definirane određene operacije.
• Kodnu riječ opisujemo binarnim vektorom x = [ x1 x2 … xn ]; xi su iz
abecede F2 = {0, 1}.
• Na skupom F2 = {0, 1} definiraju se operacije zbrajanja i množenja u
aritmetici modulo 2.
x1 x2 x1+ x2 x1⋅ x2
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Teorija informacije 3 od 88
Vektorski prostor
Teorija informacije 4 od 88
Linearni binarni blok kôd
Definicija: Neka je blok-kôd K potprostor vektorskog prostora V(n): K ⊂
V(n). Neka su x i y kodne riječi koda K i neka je a ∈ {0,1}. Ako
je za sve x , y i a ispunjeno:
• x+y ∈ K,
• a⋅x ∈ K,
onda je K linearan binarni blok-kôd.
• Svi vektori duljine n čine vektorski prostor V(n). Ako je K potprostor
od V(n), onda je K LINEARAN BLOK KÔD!
• Zbrajanjem dvije kodne riječi nastaje neka nova riječ koda K.
• Množenjem neke kodne riječi s konstantom nastaje neka nova riječ
koda K.
• Kodna riječ 0 pripada kodu K.
• Linerani blok kodovi: proračun udaljenosti koda preko težine kodnih
riječi.
Teorija informacije 5 od 88
Težina kodne riječi
Definicija: Težina kodne riječi x koda K je broj pozicija kodne riječi na
kojima se nalazi simbol 1. Oznaka težine kodne riječi x je
w(x).
[0 0 0] = 0 [ 0 1 1] + 0 [ 1 0 1 ] [1 0 1] = 0 [ 0 1 1] + 1 [ 1 0 1 ]
[0 1 1] = 1 [ 0 1 1] + 0 [ 1 0 1 ] [1 1 0] = 1 [ 0 1 1] + 1 [ 1 0 1 ]
Teorija informacije 7 od 88
Generirajuća matrica G
• Ako znamo bazu linearnog blok-koda (tj. vektorskog potprostora), onda
svaku kodnu riječ možemo izraziti kao linearnu kombinaciju vektora
baze:
x = a1 ⋅ b1 + a2 ⋅ b 2 + + ak ⋅ b k
• zbog jednostavnosti generiranja kodnih riječi vektore baze stavljamo u
matricu.
00000
11100 M=4
K= G=
00111 k=2
11011
Teorija informacije 8 od 88
Primjer: generiranje kodnih riječi
• Binarni kôd K=(5, 4, 3)
0 0 0 0 0
1
1 1 0 0 0 0 1 1 1
K = G=
0 0 1 1 1 1 1 0 1 1
1 1 0 1 1
0·[00111]+0·[11011] = [00000]
0·[00111]+1·[11011] = [11011]
1·[00111]+0·[11011] = [00111]
1·[00111]+1·[11011] = [11100]
Teorija informacije 9 od 88
Oznaka linearnog blok koda
Definicija: Ako je kôd K vektorski k-dimenzionalni potprostor vektorskog
prostora V(n), onda kôd K ima oznaku [n, k]. Ukoliko je
poznata udaljenost koda d, onda je oznaka koda [n, k, d].
0 0 0 0 0
1
1 1 0 0
K = M=4 k = log2(4)=2 [5, 2] = (5,4).
0 0 1 1 1
1 1 0 1 1
n=5
0 0 0 0 0 0 1 0
0 1 0 1 0
EKVIVALENTAN 1 1 1
K = KÔD Ke =
1 0 1 1 1 0 0 1
1 1 0 0
1 1 1 0
Teorija informacije 11 od 88
Generirajuće matrice ekvivalentnih
linearnih blok kodova
• Ekvivalentan kôd linearnog blok koda nije nužno i linearan! Mora
postojati kodna riječ 0.
• Sljedeće pravilo definira način dobivanja ekvivalentnih linearnih blok
kodova:
Teorija informacije 12 od 88
Standardni oblik generirajuće
matrice G
Definicija: Generirajuća matrica G nekog koda K ima standardni oblik
ako ima strukturu
G = [ Ik | A ],
gdje je Ik jedinična matrica reda k, a A matrica dimenzija
k×(n−k).
1 0 1 0 1 1 0 1 1 1
G* = G** =
0 1 1 1 1 0 1 1 0 1
Teorija informacije 13 od 88
Kodiranje linearnim blok kodovima
• Ideja kodiranja – kodirana poruka određuje vektore baze (retke
matrice G) koji ulaze u linearnu kombinaciju s koeficijentom 1 kako bi
dali kodnu riječ.
• Na primjer: Ako je poruka [ 0 1 0 1 ], to znači da će se toj poruci
pridružiti kôd dobiven zbrajanjem 2. i 4. vektora baze.
[ 0 1 0 1] 1 1 1 0 0 0 0 [ 1 0 1 1]
1 0 0 1 1 0 0
G= 0 1 0 1 0 1 0
1 1 0 1 0 0 1
+ +
0 1 0 0 1 0 1 0 1 1 0 0 1 1
Teorija informacije 14 od 88
Kodiranje linearnim blok kodovima
• Način formiranja kodne riječi x odgovara množenju vektor-retka
kodirane poruke m duljine k i generirajuće matrice G u aritmetici
modulo 2. r1
r k
G = 2 x = ∑mi ⋅ ri = m ⋅ G.
i =1
rk
1 1 1 0 0 0 0
1 0 0 1 1 0 0 =[0 1 1 0 0 1 1]
[ 1 0 1 1]·
0 1 0 1 0 1 0
1 1 0 1 0 0 1
1 0 0 1 1
I2 G= A
0 1 1 1 1
1 0 0 1 1
[ 0 1] ⋅ = [ 0 1 1 1 1 ].
0 1 1 1 1 poruka zaštitni bitovi
Teorija informacije 16 od 88
Dekodiranje linearnog blok koda
• Primjer: Kôd (5, 4, 3) = [5, 2, 3] → otkriva dvostruku i ispravlja
jednostruku pogrešku korištenjem principa dekodiranja najbližim
susjedom.
0 0 0 0 0
1
1 1 0 0
K =
0 0 1 1 1
1 1 0 1 1
Teorija informacije 17 od 88
Dekodiranje linearnog blok koda
• Dekodiranje po principu pronalaženja kodne riječi koja od primljene
kodne riječi ima najmanju Hammingovu distancu.
• Složenost postupka raste s brojem kodnih riječi M;
• Za velike kodove ovaj postupak zahtijeva veliko opterećenje procesora
prijemnika.
• Razvijene su druge metode brzog dekodiranja linearnih blok kodova (Na
primjer: Sindromsko dekodiranje).
• Sindromsko dekodiranje.
• Za razumijevanje ovog načina dekodiranja potrebno je poznavanje sljedećih
pojmova: vektor pogreške, standardni niz, razred, matrica provjere pariteta i
sindrom.
Teorija informacije 18 od 88
Vektor pogreške
Definicija: Vektor pogreške e za poslanu kodnu riječ x = [ x1, x2, …, xn ] i
primljenu kodnu riječi y = [ y1, y2, …, yn ] se definira kao razlika vektora:
e = y − x = [e1 e2 en ].
Teorija informacije 19 od 88
Standardni niz i razred
• Standardni niz je tablica koja se formira na sljedeći način:
• U prvom retku su kodne riječi koda K;
• Prva kodna riječ je 0;
• Prvi stupac je stupac vektora pogreški;
• U ostalim redcima nalaze se razredi koda K nastali dodavanjem vektora
pogreške e kodnim riječima koda K.
• Članovi nekog retka predstavljaju jedan razred (engl. coset) skupa kodnih riječi
koda K. Svaki razred koda K je blok kôd nastao dodavanjem nekog vektora
pogreške svim kodnim riječima koda K.
Teorija informacije 20 od 88
Standardni niz i razred
00000
11100
K=
00111
11011
Teorija informacije 21 od 88
Primjer: dekodiranje korištenjem
standardnog niza
• Neka je primljena kodna riječ y = [ 1 1 1 0 0 ] Ako je primljeno
• Pronađi primljenu kodnu riječ y u standardnom nizu; [10101]?
• Ako y postoji tada je prvi element retka vektor pogreške, a prvi element stupca je
poslana kodna riječ;
• Ako y ne postoji tada je pogreška otkrivena, ali se ne može ispraviti!
• ORTOGONALNOST
• Pretpostavimo da postoji linearni blok kôd s oznakom K⊥ čije su sve kodne
riječi ortogonalne na sve kodne riječi koda K.
• Što je ortogonalnost? → Skalarni umnožak svih vektora kodnih riječi iz K i K⊥
jednak je nula. Na primjer: [ 1 1 0 0 0 ] × [ 0 0 1 1 1 ] = 0.
Teorija informacije 23 od 88
Definicija: dualni kôd i
njegova linearnost
Dualni kôd: 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 kôd koda K i ima oznaku K⊥:
K ⊥ = {y ∈ V (n) | ∀x ∈ K , y ⋅ x = 0} ,
gdje je x⋅y skalarni produkt vektora u aritmetici modulo 2.
Teorija informacije 25 od 88
Matrica provjere pariteta koda K
• Primjer: Sljedeći par matrica G i H zadovoljava jednadžbu G·HT=0.
1 1 1 0 0
1 0 1 1 0
G= H = 1 0 0 1 0
0 1 1 0 1
0 1 0 0 1
• Ukoliko je primljena kodna riječ y primljena ispravno, onda njenim
množenjem s HT moramo dobiti nul-vektor.
1 1 0
1 0 1
[ y1 y2 y3 y4 y5 ] ⋅ 1 0 0 = [ ( y1 + y2 + y3 ) ( y1 + y4 ) ( y2 + y5 ) ] = [ 0 0 0 ]
0 1 0
0 0 1
Teorija informacije 27 od 88
Primjer: proračun matrice
provjere pariteta H
0 0 0 0 0
1 0 1 1 0
1 0 1 1 0
K = → G=
0 1 1 0 1 0 1 1 0 1
1 1 0 1 1
1 0 1 1 0
I2 = , A=
0 1 1 0 1
1 1 1 0 0
H = A Τ | I 3 H = 1 0 0 1 0 .
0 1 0 0 1
Teorija informacije 28 od 88
Primjer: Dekodiranje pomoću matrice
provjere pariteta H
Primljena kodna riječ y=[ 1 1 0 1 1 ] 1 1 0
1 0 1
[ 11 0 11 ] ⋅ 1 0 0 = [ 0 0 0 ].
0 1 0
0 0 1
e S(y)
POSTUPAK DEKODIRANJA:
• izračunaj sindrom S(y) primljene kodne riječi y;
• iz tablice preslikavanja odredi vektor pogreške e;
• poslana kodna riječ je x = y − e.
Teorija informacije 32 od 88
Vjerojatnost ispravnog dekodiranja
• Primjer: Za kôd [n, k, d] = [5, 2, 3] vrijedi:
(00001)=p(00010)=p(00100)=p(01000)=p(10000)= g
p (1 − p g ).4
Teorija informacije 33 od 88
Vjerojatnost ispravnog dekodiranja
• Ukoliko je poznata udaljenost koda – d(K) tada kôd K može ispraviti
najviše t-struku pogrešku → d(K) ≥ 2t + 1.
• U standardnom nizu se zasigurno nalaze svi vektori pogreške s 0 ≤ i ≤ t
jedinica. n
N i =
i
• Općenito gledano, u standardnom nizu se mogu nalaziti i vektori
pogreške s više od t jedinica.
• Ne postoji jednostavan način proračuna Ni.
• Ako je kôd K perfektan tada su sve riječi unutar kugli radijusa t.
• U standardnom nizu tada se nalaze isključivo vektori pogreške s t i manje
jedinica.
• Vjerojatnost ispravnog dekodiranja u tom slučaju je:
t
n i
p( K ) = ∑ p g (1 − p g ) n −i
i
Teorija informacije i =0 34 od 88
Kodna brzina zaštitnog koda
• Oznaka: R(K) = udio informacijskih bitova u kodnoj riječi.
• K = [n,k] - linearni binarni blok kôd;
• n – duljina kodne riječi;
• k – broj informacijskih bitova u kodnoj riječi.
k
R( K ) = ≤ 1
n
Teorija informacije 35 od 88
Hammingovi kodovi
Teorija informacije 36 od 88
Hammingov kôd
Definicija : Neka je r pozitivan cijeli broj i neka je H matrica dimenzija
r×(2r−1) čije stupce sačinjavaju svi vektori dimenzije r
različiti od 0 iz vektorskog prostora V(r). Matrica H je
matrica provjere pariteta Hammingovog koda s oznakom
Ham(r).
Teorija informacije 38 od 88
Kodiranje pomoću
Hammingovog koda
• Primjer: Hammingov kôd [7, 4, 3]
1 0 1 0 1 0 1
H = 0 1 1 0 0 1 1
0 0 0 1 1 1 1
Teorija informacije 39 od 88
Formiranje kodne riječi
Hammingovog koda
1 0 1 0 1 0 1 prvi redak Pozicije (1), (3), (5) i (7).
H = 0 1 1 0 0 1 1 drugi redak Pozicije (2, 3), (6 i 7),
0 0 0 1 1 1 1 treći redak Pozicije (4, 5, 6 i 7),
x1 x2 1 x4 0 1 0 x8 0 1 0 1 0 1 0 x16 1 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Poruka 1 0 1 0
Teorija informacije 41 od 88
Kodiranje pomoću
Hammingovog koda
• Primjer: generirajuća matrica za Hammingov kôd [7, 4, 3]
(1) Izbriši one stupce koji su na pozicijama paritetnih bitova
(2) Dobivenu matricu transponiraj
(3) Stupce transponirane matrice postavi na pozicije 1, 2, 4, 8, 16, …
(4) Ostatak stupaca popuni jediničnom matricom
1 2 4
1 2 3 4 5 6 7
1 1 0
1 0 1 0 1 0 1
1 0 1
H= 0 1 1 0 0 1 1 G=
0 1 1
0 0 0 1 1 1 1
1 1 1
Generirajuća
1 0 0 0
matrica
Hammingovog koda 0 1 0 0
I4 =
0 0 1 0
Teorija informacije 0 0 0 1 42 od 88
Dekodiranje Hammingova koda
• Primjer: sindrom za Hammingov kôd [7, 4, 3]
• Napomena: Vrijedi samo za standardni način formiranja Hammingovih
riječi!
1 0 1 0 1 0 1
H = 0 1 1 0 0 1 1
0 0 0 1 1 1 1
CJELOBROJNI
e S(y) EKVIVALENT
1 0 0 0 0 0 0 1 0 0 1
0 1 0 0 0 0 0 0 1 0 2
0 0 1 0 0 0 0 1 1 0 3
0 0 0 1 0 0 0 0 0 1 4
0 0 0 0 1 0 0 1 0 1 5
0 0 0 0 0 1 0 0 1 1 6
0 0 0 0 0 0 1 1 1 1 7
Teorija informacije 43 od 88
Dekodiranje Hammingova koda
• Primjer: određivanje sindroma bez matrice provjere pariteta
6
1 0 1 1 0 1 0
1 0 1 1 0 0 0
Ponovno
1 1 1 0 0 0 0 kodiranje
Razlika:
0 1 1 6
1 1 1 1 0 1 0
Ponovno
1 0 1 1 0 0 0 kodiranje
Razlika:
0 1 0 2
Teorija informacije 46 od 88
Ciklični kôd
Definicija : Blok kôd K je ciklični kôd ako je:
• linearan blok-kôd i
• ako bilo koji ciklični posmak kodne riječi iz K opet daje
kodnu riječ iz K.
1 0 1 1 0 1 1 0 1 1 0 1 1 1
11100001
11000011
10000111
00001111
00011110
00111100
Teorija informacije
01111000 47 od 88
Polinomski zapis kodne riječi
• Kodna riječ [an-1 an-2… a2 a1 a0] cikličnog koda može se 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
a(x) ne promatramo kao funkciju, nego čisto kao način zapisa. Na primjer,
a = [1 0 1 01] ↔ a ( x) = x 4 + x 2 + 1.
• Koeficijenti ai su iz skupa {0, 1}, a sve operacije nad njima provodimo u
aritmetici modulo 2.
• Ciklički posmak ulijevo možemo realizirati ovako:
x ⋅aan −(1x()x −=1) +aan −n1−x2 xn + a+n...
n −1
n
−2
+
x n −1 2
a 1 x+ +
...a+
0 x
a
1
2
+x 3
a +
n −1ax1
0 2
x +
: ax
0x
− 1 = an −1
n 1
( )
− an −1 ( x n −=1) x n an −1 x 0 + an − 2 x n −1 + ... + a1 x 2 + a0 x1
x a( a x x +)...
n −1 0
− +a a xx ++aax +x a+ ax ←...ostatak
x n −1 + + a1 x 2 nakon
+ a0 x1 dijeljenja.
n 20 1 0 0
= n − 2n −1 n −11 0 n −1 n −1 n − 2
= a ( x − 1) + a x + ... + a x
n −1
n
n−2
n −1
1
2
+ a0 x1 + an −1 x 0 .
• Nad polinomima kodnih riječi vršimo operacije u aritmetici modulo xn–1!
• Zbrajanje polinoma odgovora zbrajanju vektora, a množenje s x odgovara
cikličnom posmaku ulijevo.
Teorija informacije 48 od 88
Ciklični kod
• Primjer: ciklični posmak kodne riječi
a= [ 1 0 1] – polinom je a(x) = x2 + 1, duljina riječi n = 3
b′( x) = a ( x) ⋅ x = x 3 + x,
x3 + x : x3 − 1 = 1
− x3 +1
x +1 ← ostatak nakon dijeljenja.
000
101 1 0 1
K= G=
011 0 1 1
110
Teorija informacije 51 od 88
Generirajući polinom cikličnog koda
Definicija: Neka je K ciklični kôd dimenzije veće od 1, podskup od Rn.
• Postoji jedinstven polinom g(x) najmanjeg stupnja u K.
• Kôd K je generiran upravo polinomom g(x).
• g(x) je faktor polinoma xn −1, tj. xn−1= g(x)⋅q(x).
Polinom g(x) koji zadovoljava ovo svojstvo nazivamo
generirajući polinom cikličkog koda
Potencijalni g1(x) = x + 1 r = 1, k = 5 – 1= 4
generirajući
polinomi: g2(x) = x4 + x3 + x2 + x + 1 r = 4, k = 5 – 4 = 1
1 1 0 0 0
g1(x) = x + 1 G= 0 1 1 0 0
k=4
0 0 1 1 0
0 0 0 1 1
n=5
g2(x) = x4 + x3 + x2 + x1 + 1 G=[ 1 1 1 1 1 ]
Teorija informacije 54 od 88
Faktorizacije nekih polinoma
oblika x – 1
n
Teorija informacije 55 od 88
Standardni oblik generirajuće matrice
• Traženi oblik matrice G:
G = [I k | A ].
ALGORITAM:
I. Upiši g(x) u binarnom obliku u k-ti redak.
II. (k - 1)-vi redak dobije se cikličnim posmakom k-tog retka za
jedno mjesto u lijevo. Ovo odgovara operaciji xg(x).
• k-ti stupac mora u (k - 1)-om retku imati nulu kako bi imali
standardni oblik matrice G.
• Ako je 1 → na (k - 1)-i redak treba dodati k-ti redak (aritm. mod. 2);
III.Za (k - 2) redak treba primijeniti postupak iz točke II.
• Napraviti ciklični posmak (k - 1)-og retka za jedno mjesto u lijevo.
• Ako k–ti stupac u (k - 2)-om retku ima 1 → dodaj na (k - 2)-i redak k-ti
redak (aritm. mod. 2);
Ponavljaj algoritam za svaki sljedeći redak sve dok se ne popuni
matrica G.
Teorija informacije 56 od 88
Standardni oblik generirajuće matrice
• Primjer: Neka je g(x) = x4+x3+x2+1 i neka je dan ciklični kôd [n, k] = [7, 3].
0 1 0 0 1 1 1
0 0 1 1 1 0 1
0 0 1 1 1 0 1 t
Teorija informacije 57 od 88
Matrica provjere pariteta
cikličnog koda
Definicija: Neka je K ciklični kôd duljine n i dimenzije k [n,k] s generirajućim
polinomom g(x). Neka je h(x) polinom koji zadovoljava jednadžbu:
xn −1= g(x)·h(x).
h(x) se zove polinom za provjeru pariteta cikličnog koda K.
Definicija: Neka je K ⊂ Rn ciklični kôd duljine n i dimenzije k s generirajućim
polinomom g(x) i polinomom za provjeru pariteta
• Bilo koji polinom c(x) koda K zadovoljava jednakost c(x)·h(x) = 0.
• Ako je polinom za provjeru pariteta
h( x) = hk x k + ... + h2 x 2 + h1 x + h0 .
onda je matrica provjere pariteta cikličnog koda K:
h0 h1 h2 hk −1 hk 0 0 0
0 h0 h1 h2 hk −1 hk 0 0
H=0 0 h0 h1 h2 hk −1 hk 0 .
0
0 0 0 h0 h1 h2 hk −1 hk
Teorija informacije 58 od 88
Matrica provjere pariteta
cikličnog koda
• Primjer: matrica provjere pariteta cikličnog koda s duljinom kodne riječi
n = 7.
g(x) = x3 + x2 + 1
1 1 0 1 0 0 0
0 1 1 0 1 0 0
G=
0 0 1 1 0 1 0
0 0 0 1 1 0 1
x7 − 1 =
( x + 1)( x 3 + x + 1)( x 3 + x 2 + 1) h( x) =1 + x 2 + x 3 + x 4
1 0 1 1 1
1 0 1 1 1 0 0
H= 0 1 0 1 1 1 0 r=3
0 0
Teorija informacije n=7 59 od 88
Implementacija kodera cikličnog koda
• Duljina kodne riječi može biti iznimno velika!
• Generirajuća i paritetna matrica imaju prevelike dimenzije za
praktičnu implementaciju.
• Želimo kodnu riječ koja je sistematična tako da odmah možemo
razlučiti zaštitne bitove od bitova kodirane poruke:
Kodna riječ cikličkog koda
1 0 1 1 0 1 1
d(x) g(x)
1 0 1 0 00 00 00 : 1 0 1 1 = 1 0 0 1
– 1 0 1 1
0 0 1
– 0 0 0 0
0 1 0
– 0 0 0 0
1 0 0
– 1 0 1 1
0 1 1 ostatak nakon dijeljenja
Teorija informacije 62 od 88
Implementacija kodera cikličnog koda
• Primjer: Dijeljenje polinoma - Generiranje CRC-a
q(x) = 1 0 0 1 R3 R2 R1
d13 d02 d11 d0=0
g3 g2 g1 g0
g2 g1 g0
1 0 1 0 00 00 00 : 1 0 1 1 + + +
– 1 0 1 1
0 0 1 0
(1) 0 R03 1 = R2 ⊕ ( R3 ⋅ g 2 ) g2 g1 g0
– 0 R0
(2) 0 =0 R ⊕ ( R ⋅ g ) + + +
2 1 3 1
0 1 0
0 =0 0ulazni bit ⊕ ( R3 ⋅ g 0 ),
(3) – R01 0 1 1 0
g2 g1 g0
1 0 0 + + +
– 1 0 1 1 1 0 0 0
0 1 1 g2 g1 g0
+ + +
ostatak nakon dijeljenja 0 1 1
Teorija informacije 63 od 88
Implementacija kodera cikličnog koda
• Primjer: Sklop za generiranje CRC-a
(1) R3 = R2 ⊕ ( R3 ⋅ g 2 )
(2) R2 = R1 ⊕ ( R3 ⋅ g1 )
(3) R1 = ulazni bit ⊕ ( R3 ⋅ g 0 ),
R3·g1=1 R3·g0=1
R2 R1⊕R3·g1 ulaz⊕R3·g0
XOR XOR
d3 d2 d1 d0 0 0 0
R3 R2 R1
gr-1 gr-2 g2 g1 g0
r
XOR XOR
XOR XOR XOR
dk-1 ... d0 0 … 0
Rr Rr-1 R3 R2 R1
Teorija informacije 64 od 88
Implementacija dekodera
• Proračun sindroma ima preveliku složenost zbog velike duljine kodnih
riječi.
• Temeljno pitanje: Možemo li sindrom izračunati principom sličnim
izračunu zalihosnog dijela CRC?
• Smisao sindroma: Svaka kodna riječ na kojoj je nastupila pogreška na
istoj poziciji mora imati isti sindrom!
e S(y)
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
Teorija informacije 65 od 88
Implementacija dekodera
e(x) je polinom pogreške: e = [ 1 0 0 1 1 ], e(x) = x4 + x + 1
Primljena kodna riječ: y ( x) = c( x) + e( x).
Što dobivamo funkcijom S[ y ( x)] = x r ⋅ y ( x) mo dg ( x) ?
S [ y ( x)] = x r y ( x) mo dg ( x)
= x r [c( x) + e( x)] mod g ( x)
= x r c( x) mod g ( x) + x r e( x) mod g ( x)
= S [c( x)] + S [e( x)].
c( x) = g ( x)q( x) | ⋅ x r ⇒
c( x) x r = g ( x)q( x) x r .
Ako c(x)·xr podijelimo s g(x) ostatak je 0!
S [c( x)] = x r ⋅ c( x) mo dg ( x) = 0 .
Teorija informacije 66 od 88
Implementacija dekodera
Primjenom funkcije S[ y ( x)] = x r ⋅ y ( x) mo dg ( x)
na primljenu kodnu riječ y(x) dobivamo:
S [ y ( x)] = S [c( x)] + S [e( x)] = S [e( x)],
S[y(x)] za kodne riječi s istom pogreškom uvijek daje isti rezultat!
S[y(x)] je funkcija za računanje sindroma primljene kodne riječi!!!
S [ y ( x)] = x r ⋅ y ( x) mo d[ g ( x)]
r=
( x) d ( x) ⋅ x r mo dg ([x)].
Teorija informacije 67 od 88
Implementacija dekodera
• Primjer: dekodera za slučaj koda [7, 4, 3] s generirajućim polinomom
g(x) = x3 + x + 1 Tablica sindroma
q = R3 ⋅ R2 ⋅ R1
XOR XOR
y6 y5 y4 y3 y2 y1 y0 0 0 0
R3 R2 R1
Teorija informacije 68 od 88
Konvolucijski i turbo kodovi
Teorija informacije 69 od 88
Konvolucijski kodovi
• Konvolucijski kodovi (engl. Convolutional codes) spadaju u grupu memorijskih kodova.
• Generiranje i-tog bita u kodnoj riječi ovisi ne samo o trenutačnom ulaznom bitu kodera
nego i o k prethodnih ulaznih bitova.
• Blok kodovi su bezmemorijski kodovi.
• Konvolucijski koder se sastoji od:
• binarnih posmačnih registara (svaki registar uključuje m memorijskih stanja);
• digitalnog logičkog sklopovlja, tj. binarnih zbrajala preko kojih se definiraju izlazi kodera
(Konv. koder može imati jedan i više izlaza.).
• Konvolucijski koder opisujemo s tri parametra, i to: (n, k, L)
• L – granična duljina kodera (engl. Constraint length) broj bitova koji utječu na pojedini
izlaz kodera, L=m+1
• k – ulazni bitovi
• U okviru ovog predavanja: k = 1;
• n – izlazni bitovi
• Stanje m0 predstavlja ulaz kodera. Ulazni bit se
iz njega na signal “clock” posmiče u stanje m1 i
prema modulo-2 zbrajalu.
Teorija informacije 70 od 88
Tipovi konvolucijskih kodera
• Sistematski konvolucijski koder (k=1, n=2): u kodnoj riječi pored bitova zaštite
pojavljuju se i bitovi izvorne poruke.
izlaz 1 ulaz
• Nesistematski konvolucijski koder (k=1, n=2): u kodnoj riječi ne nalaze se bitovi izvorne
poruke.
izlaz 1 ulaz
Teorija informacije 72 od 88
Generirajuća matrica konv. kodova
• Primjer (3, 1, 3)/ izlazi kodera (tzv. kodirani vektori):
• Znak “*” predstavlja • Općenito, r-ti bit (r ≥ 0) j-tog
binarnu (modulo-2) kodiranog vektora se određuje iz:
diskretnu k m
konvoluciju i (r=
j)
∑∑ d
=i 1 =t 0
h = d r h1,0
( j)
r − t i ,t
( j)
+ d r −1h1,1
( j)
+ + d r − m h1,( mj ) +
• r=0
• Polazno su sva stanja u posmačnom
registru postavljena na “0”.
• r=1
l = 0,1,...,m
• Primjer (3, 1, 3)/ gen matrica, G:
Teorija informacije 74 od 88
Grafički prikaz konv. kodova
• Postoje tri metode za prikaz konvolucijkog kodiranja.
• stablasti dijagram (engl. tree diagram)
• rešetkasti dijagram (engl. trellis diagram)
• dijagram stanja (engl. state diagram)
• Izlaz iz kodera određen je s ulaznim bitom (m0) i
jednim od četiri moguća stanja posmačnog registra
(m1, m2): 00, 01, 10 i 11.
i(1) 1 1
a) b) i(1)
i(2) 2 2
+ + i(2)
izlaz izlaz
3 (s) 3 (s)
ulaz ulaz
(d) (d)
+ +
i(3) i(3)
00 a
01 b
10 c
11 d
Teorija informacije 76 od 88
Prijenosna funkcija konv. koda
i udaljenost koda
• Prijenosna funkcija (oznaka -> T(D)) određuje udaljenost i performanse koda u pogledu
pogrešaka.
• Prethodni dijagram stanja (slajd 76), uz izmjenu, iskoristit ćemo za objašnjenje i
proračun udaljenosti konv. koda.
• Potrebno je napraviti sljedeće:
• Podijeliti stanje “a” na dva nova stanja, tj. “a” (ulaz) i “e” (izlaz) potrebno je
ukloniti vlastitu petlju u stanju “a”;
• Označiti svaku granu u grafu s Di, gdje i označava težinu kodne riječi n (izlazni bitovi
kodera);
• Uvesti jednu varijablu (Xa, ..., Xe) za svako stanje (a, ...,e).
• Kao referentni put odabran je put sastavljen isključivo od nula;
D2
Xd
Xe
d
T ( D) = • Potrebno je pronaći sve putove od stanja “a” do
Xa stanja “e” i zbrojiti njihove težine. Put s
D
Xa Xc
D2
Xb Xe
najmanjom težinom je ujedno i put s najmanjom
Hamm. udaljenosti.
D
3
D D2
a c b e
D
Teorija informacije 77 od 88
Prijenosna funkcija konv. koda
i udaljenost koda
• Primjer (3, 1, 3)/ T(D): Xe
D2
T ( D) =
Xd Xa
d
=
X c D 3 X a + DX b
D
D2
Xa
3
Xc
D
Xb Xe =
X b DX c + DX d
D D 2
=
X d D2 X c + D2 X d
a c b e
D
X e = D2 X b
Rješavanjem sustava jednadžbi, dobivamo:
Napomena: Za dodatne mogućnosti prijenosne funkcije konv. koda vidjeti: PANDŽIĆ, I.S. BAŽANT, A. ILIĆ, Ž. VRDOLJAK, Z. KOS, M.
SINKOVIĆ, V. Uvod u teoriju informacije i kodiranje. Element, 2 izdanje, 2010. (ISBN 978-953-197-605-3)
Teorija informacije 78 od 88
Dekodiranje konv. kodova: dekoder s
tvrdim i mekim odlučivanjem
• Udaljenost koda: mjera sličnosti između dvaju kodnih riječi nekog koda K.
• Dvije mjere sličnosti: Hammingova i euklidska udaljenost koda;
• Primjena neke od navedenih mjera ovisi o odabranom kodnom sustavu,
zahtijevanom BER-u, tipu prijenosnog kanala i vrsti demodulatora.
• Hammingova udaljenost koda
• Kod prijenosa binarnim simetričnim kanalom u kojem se svaki simbol
promatra zasebno (bezmemorijski kanal);
• U prijemu se koristi tzv. većinska odluka o tome koji je simbol primljen;
• Koristi se tzv. dekoder s tvrdim odlučivanjem (engl. hard-decision decoder).
• Euklidska udaljenost koda
• Kod prijenosa kanalom s aditivnim bijelim Gaussovim šumom (skr. AWGN);
• Odluka o primljenom simbolu provodi se uzimajući u razmatranje cijelu
kodnu riječ;
• Koristi se tzv. dekoder s mekim odlučivanjem (engl. soft-decision decoder).
Teorija informacije 79 od 88
Dekodiranje konv. kodova:
performanse kodnih sustava
• Za procjenu performansi kodnog sustava najčešće se uzima ovisnost vjerojatnosti
pogreške bita naprema odnosu srednje snage signala prema srednjoj snazi šuma,
tj. BER=f(S/N) ili Pb=f(S/N).
• Kodno pojačanje (engl. coding gain, skr. CG): određuje potrebni omjer S/N
(definiran kao srednja primljena energija po bitu Eb u odnosu na jednostanu
spektralnu gustoću snege šuma N0) koji osigurava zahtijevanu vjerojatnost
pogreške bita, Pb.
• Za dekoder s tvrdim odlučivanjem:
CG ≤ 10log10 [ R (t + 1) ]
Pb sustav koji koristi konvolucijsko
kodiranje
sustav koji ne koristi konvolucijsko
kodiranje
• Za dekoder s mekim odlučivanjem:
CG ≤ 10log10 [ Rd ]
CG=(Eb/N0)B-(Eb/N0)A
• Dekoder traži takav slijed bitova koji osigurava maksimum navedene metrike
p(c’,c). Također, dekoder analizira cijeli primljeni slijed bitova c’.
• Dekoder koristi rešetkasti dijagram u kojem izračunava težinu (tj. metriku)
svake putanje i u svakom koraku grananja donosi odluku o primljenoj kodnoj
riječi.
• Dosta često se prethodni izraz zapisuje kao (iz razloga što su vjerojatnosti
“mali” brojevi):
Teorija informacije 82 od 88
Dekodiranje konv. kodova:
dekodiranje ML
Teorija informacije 83 od 88
Dekodiranje konv. kodova:
dekodiranje ML
Odabrani put:
Teorija informacije 84 od 88
Dekodiranje konv. kodova:
•
Viterbijev algoritam
Optimalno dekodiranje konv. kodova svodi se na nalaženje puta, u rešetkastom dijagramu,
koji od primljene kodne riječi c’ ima minimalnu Hamm. udaljenost, tj. traži se put u
rešetkastom dijagramu od stanja a do stanja e s min. Hamm. udaljenosti.D 2
Xd
2L putova.
• Viterbijev algoritam poboljšava
proračun tako što uspoređuje
dvije metrike za putove koji se
spajaju u nekom stanju i
odbacuje onaj put s manjom
metrikom. Navedeni postupak se
ponavlja za sva stanja. Na ovaj
način na svakoj razini rešetke
imamo 2m “preživjelih” putova.
Teorija informacije 85 od 88
Dekodiranje konv. kodova:
dekodiranje ML
• Sa slike (prethodni slajd) je vidljivo da dekoder (koristi Viterbijev algoritam) u
potpunosti može početi s radom (sva stanja su uključena) nakon trećeg koraka
grananja.
• Pitanje: Koliko dugo (do kojeg koraka grananja) algoritam treba ponavljati, tj.
kada treba donijeti odluku o primljenom slijedu bitova? Na ovaj način se
određuje dio bitova koji pripadaju izvornoj poruci.
• Odgovor na dano pitanje je jako bitan jer cijena dekodera ovisi o veličini memorije
u koju se spremaju “preživjeli” putovi.
• Pokazuje se da veličina memorije koja je 4 do 5 puta dulja od L daje performanse
koda bliske optimumu.
• Kao izlaz dekodera, tj. bitovima poruke proglašavaju se bitovi koji pripadaju
najvjerojatnijem putu od svih “preživjelih”.
• Kad se donese odluka o izlazu dekodera svi “preživjeli” putovi u memoriji se
brišu i u istu spremaju novi.
Teorija informacije 86 od 88
Dekodiranje konv. kodova:
dekodiranje ML
• Pitanje: Što dekoder radi ako u istom stanju ima dva puta koji imaju
jednaku metriku?
• U takvim prilikama dekoder odabire slučajno jedan od dva puta.
• Drugi algoritmi dekodiranja konvolucijskih kodova.
• Sekvencijalni algoritam (dosta sličan Viterbijevom algoritmu);
• Algoritam dekodiranja s povratnom vezom (engl. feedback
decoding).
Teorija informacije 87 od 88
Turbo kodovi
• Podgrupa konvolucijskih kodova.
• Kodiranje se temelji na paralelnom ulančavanju nekih klasa sistematskih
konvolucijskih kodova, tzv. rekurzivni sistematski konv. kodovi (RSCC, engl. recursive
systematic convolutional codes).
• RSCC nesistematski koder u kojem se na njegov ulaz spaja jedan ili više njegovih
izlaza.
i(1) ulaz i(1)=d
(d)
+ 1
1 d
ulaz d
(d) + RSC
2 2 i(2)
izlaz
+ (s) +
i(2) i(2)
• Turbo kodovi paralelna veza najčešće dva jednaka RSC kodera odvojena
sklopom za preplitanje bitova (engl. interleaver). d
d
RSC1
i(1)
sklop za
preplitanje
bitova
(i)
i(2)
RSC2
Teorija informacije 88 od 88