You are on page 1of 88

Teorija informacije

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

• Neutralni element s obzirom na zbrajanje je 0, a s obzirom na


množenje je 1.
• U aritmetici modulo 2 zadovoljene su jednakosti: -1 = 1 i 1·1-1 = 1.

Teorija informacije 3 od 88
Vektorski prostor

• Neka je V(n) skup svih binarnih vektora duljine n nad kojim su


definirane operacije zbrajanja vektora i množenja vektora skalarom
na sljedeći način:

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 ] ,

a, xi, yi su skalari iz F2; x, y su vektori iz V(n)

• s ovako definiranim operacijama skup V(n) je 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).

• Primjer: w(101011) = 4, w(001000) = 1.


• Kod linearnih blok kodova vrijedi:
d(x, y) = w(x - y)
• Budući da je svaka razlika dvije kodne riječi neka kodna riječ
linearnog blok-koda, udaljenost koda određujemo kao:
d(K) = min w(x) uz x ≠ 0
000
011
K: 22 d(K)=2
101
110
Teorija informacije 6 od 88
Vektorski prostor: baza prostora
• Baza vektorskog prostora/potprostora: Skup svih linearno nezavisnih
vektora.
• Svi vektori nekog prostora/potprostora mogu se dobiti kao linearna
kombinacija vektora baze.
• Primjer:
000 dimenzija potprostora:
011 011 k = 2 (broj vektora u bazi)
K: 22 BAZA
101 101 M = 2k (broj kodnih riječi)
110
x = a [0 1 1] + b [1 0 1], a, b ∈ {0, 1}

[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.

Definicija: Matrica dimenzija k×n čiji se reci sastoje od vektora baze


koda (n,M,d) zove se generirajuća matrica. Oznaka G.

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

d(K) = min w(x) = 3 [5, 2, 3] = (5, 4, 3).


Teorija informacije 10 od 88
Generirajuće matrice ekvivalentnih
linearnih blok kodova
• Primjer: ekvivalentan kôd (zamjena 0 → 1, 1 → 0 na trećoj poziciji)

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:

Definicija: Dva ekvivalentna linearna binarna blok-koda [n, k], K1 i K2,


imaju generirajuće matrice G1 i G2 koje se jedna iz druge
mogu dobiti sljedećim operacijama:
1) Zamjena redaka;
2) Dodavanje jednog retka drugom retku;
3) Zamjena stupaca.

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).

• Primjer: Binarni kôd K=(5, 4, 3) – Generirajuće matrice


0 0 1 1 1
G=
1 1 0 1 1

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

• PROBLEM – gdje su bitovi kodirane poruke, a gdje zaštitni bitovi?


• Nesistematičan kôd.
Teorija informacije 15 od 88
Kodiranje s matricom G u
standardnom obliku
• Kada je generirajuća matrica u standardnom obliku, generiranje
kodne riječi se pojednostavljuje, a kôd postaje sistematičan.
m ⋅ [ I k | A ] = {m, m ⋅ A}.

1 0 0 1 1
I2 G= A
0 1 1 1 1

[01]· =[01] [01]· =[111]


poruka zaštitni bitovi

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 ].

Predajnik šalje x=[11011]


Prijemnik prima y=[10111]

Vektor pogreške e=[01100]

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

00001 11101 00110 11010


00010 11110 00101 11001
00100 11000 00011 11111
01000 10100 01111 10011
10000 01100 10111 01011
Standardni niz

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!

00000 11100 00111 11011


00001 11101 00110 11010
00010 11110 00101 11001
00100 11000 00011 11111
01000 10100 01111 10011
10000 01100 10111 01011
PRIMLJENO: VEKTOR POGREŠKE: DEKODIRANO:
y=[11110] e=[00010] x=[11100]
Teorija informacije 22 od 88
Primjer: dekodiranje korištenjem
standardnog niza
• Dekodiranje pomoći standardnog niza je procesorski zahtijevan
postupak u tablicama velikih dimenzija što rezultira skupom i
složenom izvedbom dekodera kanala.
• Ubrzavanje postupka dekodiranja preko matrice provjere pariteta H.
• Potrebno je definirati sljedeće pojmove: ortogonalnost, dualni kôd i linearnost
dualnog koda!

• 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.

00000 00000 01110


11100 10100 01101
 10111 
K = , G   K⊥ = 
 10111  01011 11010 00011

 01011 
11001 10111
Linearnost dualnog koda: Neka je K linearni blok-kôd [n, k]. Dualni kôd
koda K je linearan blok-kôd [n, n - k].
Teorija informacije 24 od 88
Generirajuće matrice
kodova K i K⊥
• Dualni kôd je linearan → posjeduje bazu i generirajuću matricu koju
ćemo označavati s H.
• Skalarni produkti između svih parova redaka matrica G (kôd K) i H
(kôd K⊥) jednaki su 0 te vrijedi jednadžba:
G ⋅ HΤ = 0

• Važno: Za provjeru ispravnosti primljene kodne riječi x dovoljno je


skalarno pomnožiti primljenu kodnu riječ sa svim vektorima
generirajuće matrice dualnog koda kojih ima n–k.
x ⋅ HΤ = [ 0 0  0 ]

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 

Matrica H praktički određuje pozicije u kodnoj riječi čiji zbroj u aritmetici


modulo 2 mora biti 0, odnosno pozicije na kojima mora biti zadovoljen
PARNI PARITET. Matricu H zbog toga nazivamo MATRICA PROVJERE
PARITETA!
Teorija informacije 26 od 88
Matrica provjere pariteta H
i njen standardni oblik
Matrica provjere pariteta: Neka je H generirajuća matrica dualnog koda K⊥.
Matrica H se naziva matrica provjere pariteta (engl. parity-check matrix) ili
paritetna matrica koda K. U svakom retku matrice H jedinice određuju pozicije
unutar ispravne kodne riječi na kojima zbroj vrijednosti simbola mora biti paran
broj. Ukoliko H ima strukturu:
H = [ B | I n−k ] ,
gdje je B kvadratna matrica, onda je paritetna matrica H u standardnom obliku.

Proračun matrice provjere pariteta: Neka je G generirajuća matrica linearnog


binarnog koda K u standardnom obliku:
G = [I k | A ].
Generirajuća matrica dualnog koda K⊥ zadovoljava jednadžbu G⋅HΤ =0 i jednaka
je
H =  A | I n − k  .
Τ

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 

Primljena kodna riječ y=[ 1 0 0 1 1 ] 1 0


?
1
1 0 1 

[ 1 0 0 11 ] ⋅  1 0 0  = [ 1 0 1 ].
 
Dekodiraj pomoću standardnog niza! 0 1 0
Rješenje: e = [0 1 0 0 0] i x = [1 1 0 1 1] 0 0 1 
Teorija informacije 29 od 88
Sindrom
Definicija: Sindrom primljene kodne riječi y koda K s paritetnom
matricom H je vektor dobiven umnoškom:
S(y) =y⋅HΤ.

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
JEDAN VEKTOR POGEŠKE – JEDAN SINDROM
Teorija informacije 30 od 88
Sindromsko dekodiranje
• Sindrom jedinstveno određuje vektor pogreške. Stoga možemo
formirati tablicu preslikavanja između sindroma S(y) i vektora
pogreške e!
e 00000 00001 00010 00100 01000 10000
S(y) 000 001 010 100 101 110

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.

PRIMLJENO: SINDROM: VEKTOR e: DEKODIRANO:


y=[ 1 1 0 0 0 ] y ·HT =[ 1 0 0 ] e =[ 0 0 1 0 0 ] x= y-e =[ 1 1 1 0 0 ]

• Ukoliko se pojavi sindrom [011] ili [111], došlo je do višestruke


pogreške koju nije moguće ispraviti!
Teorija informacije 31 od 88
Vjerojatnost ispravnog dekodiranja
• Promatramo prijenos poruke preko BSC-a.
• Događaji pogrešnog prijenosa simbola iste kodne riječi su neovisni
→ omogućen jednostavan proračun vjerojatnosti pojave pogreške
na k pozicija unutar kodne riječi duljine n simbola.

• Primjer: Neka je točno k unaprijed određenih pozicija simbola neke


kodne riječi, duljine n, pogrešno preneseno. Vjerojatnost ovog
događaja je:

• Dobiveni izraz predstavlja vjerojatnost pojave bilo kojeg vektora


pogreške s k pogrešnih simbola.
p gk (1 − p g ) n − k

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

• Vjerojatnost p(K) da će riječ dobivena dekodiranjem pomoću


standardnog niza biti jednaka poslanoj računa se iz:
n
p( K ) = ∑ N i p ig (1 − p g ) n −i
i =0
• Ni je broj vektora pogreške s i jedinica koji pripadaju standardnom nizu
blok koda K duljine n.
• Primjer (kôd [5, 2, 3]): {00000} → N0 = 1;
{00001, 00010, 00100, 01000, 10000} → N1 = 5; N2 = N3 = N4 = N5 = 0.

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).

• Primjer: Matrice provjere pariteta: r = 3, n = 23 – 1= 7


1 2 3 4 5 6 7 7 3 6 5 1 2 4
1 0 1 0 1 0 1 1 1 0 1 1 0 0 
H1 =   ili H2 =  
 0 1 1 0 0 1 1   1 1 1 0 0 1 0 
0 0 0 1 1 1 1 1 0 1 1 0 0 1 

• Stupci matrica provjere pariteta su binarni ekvivalenti cijelih brojeva


od 1 do 2r-1! Redoslijed je nevažan!
Teorija informacije 37 od 88
Svojstva Hammingovih kodova
Svojstva : Neka je Ham(r) binarni Hammingov kôd. Za r ≥ 2 vrijedi da je
Ham(r):
• linearan blok-kôd [2r−1, 2r−1−r];
• ima najmanju distancu 3 (otkriva dvostruku i ispravlja
jednostruku pogrešku);
• perfektan kôd.
kodovi i njihove distance!
Neki mogući Hammingovi

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

• Generirajuću matricu G nije jednostavno izračunati iz H jer ista nije u


standardnom obliku, tj. jednadžba GHT=0 daje velik broj mogućnosti.
• Potrebno je dobiti sistematičan kôd iz kojeg jednostavno dobivamo
poslanu kodiranu poruku.
• Važno svojstvo matrice H: Svaki redak matrice provjere pariteta
određuje pozicije simbola kodne riječi čiji zbroj mora bit paran broj
(ili jednak 0 u aritm. mod. 2).

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),

Ključno pitanje - koji bitovi su zaštitni?


Uobičajeno oni koji čija pozicija odgovara potenciji broja 2: 1, 2, 4, 8, 16, …
m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13
Poruka: 1 0 1 0 0 1 0 1 0 1 0 1 1

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

0 = x1 + x3 + x5 + x7 + x9 + x11 + x13 + ...


x1 = m1 + m2 0+=
mx4 ++mx5 ++m7 x+ ...
+ x= x3++ xx5 ++xx7 + x+9 ...
+
2 3 6 7 10 11
x2 = m1 + m30+=mx4 ++m + xm7++x... =+x3 x+ x+6 +
x6 + x x7++x x10+ +x x11 +
+ ...,

4 5 6 7 12 13 14 15
x4 = m2 + m3 + m4 + m8 + m9 + m10 + m11 + ... = x5 + x6 + x7 + x12 + x13 + x13 + x15 

Teorija informacije 40 od 88
Formiranje kodne riječi
Hammingovog koda
• Primjer: formiranje kodne riječi za Hammingov kôd [7, 4, 3]

Poruka 1 0 1 0

x11 x02 x14


Okvir kodne riječi

1X1 0 1X1 0 X01 0 X01


H = 0 1X0 1X1 0 0 X11 1 X
0


0 0 0 1X1 1 X
0 1 X01
X
1

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

Pogreška je na poziciji br. 6, a ispravna kodna riječ


Teorija informacije
1011010 44 od 88
Dekodiranje Hammingova koda
• Primjer: određivanje sindroma bez matrice provjere pariteta
2
1 0 1 1 0 1 0

1 1 1 1 0 1 0
Ponovno
1 0 1 1 0 0 0 kodiranje
Razlika:
0 1 0 2

Pogreška je na poziciji br. 2, a ispravna kodna riječ


1011010
Teorija informacije 45 od 88
Ciklični kodovi

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

Ako je 11110000 kodna riječ, onda su kodne riječi i

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.

• b = [ 0 1 1 ] kodna riječ nastala cikličnim posmakom kodne riječi a


ulijevo za jedno mjesto!
• Svaka kodna riječ duljine n je polinom stupnja n – 1 i nad njim sve
operacije provodimo u aritmetici mod xn –1;
• Skup svih riječi u mod xn – 1 aritmetici označavamo s Rn;
• Ciklični kôd je neki podskup od Rn:
K ⊂ Rn
Teorija informacije 49 od 88
Uvjeti za cikličan kôd
Uvjeti : Kôd K ⊂ Rn je cikličan kôd ako i samo ako K zadovoljava sljedeća
dva uvjeta:
• ∀ a(x), b(x) ∈ K, vrijedi a(x) + b(x) ∈ K (svojstvo linearnosti);
• ∀ a(x) ∈ K i ∀ r(x) ∈ Rn, vrijedi r(x)·a(x)mod(xn-1)∈ K.

• Kako dobiti sve kodne riječi nekog cikličkog koda?


• izaberi bilo koji polinom f (x) najvećeg stupnja n −1;
• sve kodne riječi cikličnog koda K dobit će se množenjem svih
r(x) ∈ R s f (x);

• Kaže se da je kôd K generiran polinomom f(x):


K ≡ f ( x) = {r ( x) f ( x) | r ( x) ∈ Rn }.
f(x) je kodna riječ koda K!
Teorija informacije 50 od 88
Generiranje cikličnog koda
f ( x) = x 2 + 1
• Primjer : Polinom kojim se generira kôd K:
• n=3, broj polinoma u Rn je 23 = 8.
(0 x 2 + 0 x + 0) ⋅ ( x 2 + 1)(mod ( x 3 − 1)) = 0 x 2 + 0 x + 0 [000]
(0 x 2 + 0 x + 1) ⋅ ( x 2 + 1)(mod ( x 3 − 1)) = 1x 2 + 0 x + 1 [101]
(0 x 2 + 1x + 0) ⋅ ( x 2 + 1)(mod ( x 3 − 1))= 0 x 2 + 1x + 1 [011]
(0 x 2 + 1x + 1) ⋅ ( x 2 + 1)(mod ( x 3 − 1)) = 1x 2 + 1x + 0 [110]
(1x 2 + 0 x + 0) ⋅ ( x 2 + 1)(mod ( x 3 − 1)) =1x 2 + 1x + 0 [110]
(1x 2 + 0 x + 1) ⋅ ( x 2 + 1)(mod ( x 3 − 1))= 0 x 2 + 1x + 1 [011]
(1x 2 + 1x + 0) ⋅ ( x 2 + 1)(mod ( x 3 − 1)) = 1x 2 + 0 x + 1 [101]
(1x 2 + 1x + 1) ⋅ ( x 2 + 1)(mod ( x 3 − 1)) = 0 x 2 + 0 x + 0 [000]

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

Primjer: g(x) je jedan od faktora polinoma x15 – 1 :


x15 – 1=(x + 1)(x2 + x + 1)(x4 + x + 1)(x4 + x3 + 1)(x4 + x3 + x2 + x + 1)
Svaki faktor generira jedan mogući ciklički kôd, pa faktoriziranjem
polinoma x15 – 1 praktički dobivamo 5 različitih cikličkih kodova s
generirajućim polinomima:
g1(x) = x + 1, g2(x)= x2 + x + 1, g3(x)= x4 + x + 1,
g4(x) = x4 + x3 + 1, g5(x) = x4 + x3 + x2 + x + 1
Teorija informacije 52 od 88
Generirajuća matrica cikličnog koda
Definicija: Neka je generirajući polinom cikličnog koda K ⊂ Rn:
g ( x) = g r x r + ... + g 2 x 2 + g1 x + g 0 .
Onda je dimenzija koda k = n − r , a generirajuća matrica
koda je:
 gr g r −1 gr −2  g1 g0 0 0  0
0 gr g r −1 g r −2  g1 g0 0  0 

G=0 0 gr g r −1 gr −2  g1 g0  0 .
 
         0
 0 0  0 gr g r −1 gr −2  g1 g 0 

• Broj redaka matrice G odgovara dimenziji koda - k = n – r;


• Broj stupaca matrice G odgovara duljini kodne riječi – n;
• Što je stupanj generirajućeg polinoma g(x) veći, dimenzija koda je
manja!
Teorija informacije 53 od 88
Generirajuća matrica cikličnog koda
• Primjer : generirajuća matrica cikličnog koda (n = 5)
n=5 x 5 − 1 = ( x + 1)( x 4 + x 3 + x 2 + x + 1)

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 0 1 1 1 0 1 Upišimo g(x) u 3. redak

2. redak dobijemo cikličnim posmakom


0 1 1 1 0 1 0
3. retka za jedno mjesto u lijevo.
0 0 1 1 1 0 1

2. redak i 3. stupac à 1. Potrebno je


dodati 3. redak na 2. redak (aritm. mod.
2).

0 1 0 0 1 1 1

0 0 1 1 1 0 1

1. redak dobijemo cikličnim posmakom


1 0 0 1 1 1 0
2. retka za jedno mjesto u lijevo.
0 1 0 0 1 1 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

Podatkovni dio Ciklička provjera


zalihosti (CRC)

• Rješenje: Cikličku provjeru zalihosti izračunati na osnovu


podatkovnog dijela!
Teorija informacije 60 od 88
Implementacija kodera cikličnog koda
• d(x) – polinom kodirane poruke: [ 1 0 1 1 1 ] → d(x) = x4+x2+x+1
• d(x) se može pomnožiti s xr, gdje je r stupanj generirajućeg polinoma:
d ( x) ⋅ x r = g ( x)q ( x) + r ( x). ostatak nakon
dijeljenja s g(x)
generirajući polinom kvocijent
Svaki polinom pomnožen s g(x) u aritmetici mod xn – 1 je neka kodna
riječ c(x) koda K, pa je i g(x)·q(x) neka kodna riječ. Stoga se bilo koja
kodna riječ može dobiti kao zbroj:
c( x) = g ( x)q ( x) = d ( x) ⋅ x r + r ( x),
r=( x) d ( x) ⋅ x r mo dg ([x)].
Kodna riječ cikličkog koda =
d(x) xr + r(x)

Najznačajniji bit Najmanje značajan


kodne riječi
d3 d2 d1 d0 r2 r1 r0 bit kodne riječi

Podatkovni dio = Zaštitni dio =


Teorija informacije d(x) xr r(x) 61 od 88
Implementacija kodera cikličnog koda
• Primjer: Generiranje CRC-a
• Poruka je: d = [ 1 0 1 0 ], tj. d(x) = x3 + x,
• Generirajući polinom: g(x) = x3 + x + 1 – [ 1 0 1 1 ],
• Umnožak: d(x)·x3 = x6 + x4 – [ 1 0 1 0 0 0 0 ].

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)].

JOŠ VAŽNIJE: Sindrom se određuje na IDENTIČAN način kao i zaštitni


dio kodne riječi. Slijedi da je i sklop za računanje sindroma jednak
onome za izračunavanje CRC-a!

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

Želimo detektirati pogrešku na 4. bitu – e(x)=x3


S[y(x)] = S[e(x)]= x2 + 1

q = R3 ⋅ R2 ⋅ R1

XOR XOR
y6 y5 y4 y3 y2 y1 y0 0 0 0
R3 R2 R1

AND q = R1·R2·R3 (Indikacija


na četvrtom bitu poruke )
pogreške

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

• Sistematski koder daje manju Hammingovu


udaljenost između kodnih riječi jer se
odbacuje jedno ili više binarnih zbrajala.
Teorija informacije 71 od 88
Generirajuća matrica konv. kodova
• Općeniti gledano, gen. matrica G je beskonačna jer ulazni slijed informacijskih bitova
može teoretski u svojoj duljini biti beskonačan.
• U praksi se uvijek kodira informacijski slijed konačne duljine  iz konv. koda nastaje blok
kôd.
• Matrica G se definira preko n vektora (tzv. funkcijski generatori), i to jedan za svaki od n
izlaza kodera.
• Svaki funkcijski generator (oznaka “h”) označava veze između binarnih zbrajala i
stanja posmačnih registara za pojedini izlaz kodera.
• Postojanje “1”/”0” na nekom mjestu unutar vektora (npr. i-to mjesto) pokazuje da
je/nije i-to stanje u posmačnom registru spojeno na promatrano binarno zbrajalo.
• Primjer (3, 1, 3)/ funkc. generatori:

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 ) + 

+ d r hk( ,0j ) + d r −1hk( ,1j ) +  + d r − m hk( ,jm) ,


j = 1,...,n.

• r=0
• Polazno su sva stanja u posmačnom
registru postavljena na “0”.

• r=1

• Izlaz: s=[i 0(1) i 0(2) i 0(3) i 1(1) i 1(2) i 1(3) ...]


Teorija informacije 73 od 88
Generirajuća matrica konv. kodova
• Gen. matrica G je u potpunosti određena s funkcijskim generatorima, dok njena
dimenzija ovisi o promatranoj informacijskoj poruci d.
• Općeniti oblik gen. Matrice, G, je:
G0 G1 G2  Gm   h1,(1)l h1,(2)l  h1,( nl ) 
   (1) (2) (n) 
= G 0 G1  G m −1 G m  s podmatricama G h
 2,l 2,l h  h2,l 
G∞
 G0  Gm − 2 Gm −1 Gm 
l
    
   (1) (2) 
     hk ,l hk ,l  hk ,l 
(n)

l = 0,1,...,m
• Primjer (3, 1, 3)/ gen matrica, G:

Na ulaz kodera dolazi poruka d=[101]


111 001 011 0 0  111 001 011 0 0 
G =  0 111 001 011 0  s= [101] ⋅  0 111 001 011 0  =
dG = [111 001 100 001 011].
 0 0 111 001 011
 0 0 111 001 011

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

• Spajanjem čvorišta, u stablastom dijagramu, koja


imaju isti izlazni slijed i istu oznaku nastaje rešetkasti
dijagram.
Stablasti dijagram za koder sa slajda 73
Teorija informacije 75 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)

000 000 000 000 000 ...


a
izvorna poruka
111 111 111 111
0
011 011 011
111
b ...
100 100 100
001 1
001 001 001
c ...

110 010 110 010 110 010 110

d 101 101 101 ...

Rešetkasti dijagram za koder sa slajda 73.

Dijagram stanja za koder sa slajda 73

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

A B • R - kodna brzina (=k/n)


• t – broj pogrešaka koje kôd može
ispraviti
• d - min. udaljenost koda
Eb/N0 [dB]
Teorija informacije 80 od 88
Dekodiranje konv. kodova:
dekodiranje ML
• Dekodiranje konv. kodova provodi se na principu maksimalne vjerojatnosti (engl.
maximum likelyhood decoding), tzv. dekodiranje ML.
• Neka je c (=[c0c1c2...cj...]) kodirani slijed bitova (kodna riječ) koji se prenosi
preko kanala s pogreškama (e), tada je primljeni slijed (primljena kodna riječ)
c’=c+e (=[c’0c’1c’2...c’j...]) ;
• Vjerojatnost dekodiranja simbola je

• 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):

• Napomenimo da ovo odgovara traženju najmanje Hammingove udaljenosti između c’ i svih


mogućih putanja u rešetkastom dijagramu. Objašnjenje slijedi u sljedećem primjeru!
Teorija informacije 81 od 88
Dekodiranje konv. kodova:
dekodiranje ML
• Primjer: Dan je konv. koder (2,1,3). Pet bitova je kodirano i dobivena je kodna riječ
koja se prenosi preko kanala u kojem je vjerojatnost pogreške bita Pb=0.1. Na
prijemnoj strani pojavljuje se slijed bitova (s pogreškama) c’=[10 01 10 11 00].
Odredite najvjerojatniju poslanu kodnu riječ, c.

• Polazno su sva stanja u posmačnom


registru postavljena na “0”.

Teorija informacije 82 od 88
Dekodiranje konv. kodova:
dekodiranje ML

• Rješenje: Dekodiranje možemo provesti računajući metriku svih osam putova u


rešetkastom dijagramu. Kao rješenje uzimamo put s najvećom metrikom. Također,
dekodiranje se može provesti računajući Hamm. udaljenost između c’ i svih osam
putova u reš. dijagramu. Kao rješenje uzimamo put s najmanjom Hamm. udaljenosti.
Metrike za dani kanal su (za jedan simbol):

 Pogrešan prijenos jednog simbola


• Primjer: Promatrajmo put u reš. dijagramu koji ima sve nule. Dani put se od c’ razlikuje u pet pozicija.
Njegova ukupna metrika je:

Teorija informacije 83 od 88
Dekodiranje konv. kodova:
dekodiranje ML
Odabrani put:

Ukupna metrika puta: -5.48

Put Metrika puta Hamm. udaljenost


00 00 00 00 00 -12.05 5
00 00 11 10 11 -14.24 6
00 11 10 11 00 -5.48 2  Put s najvećom metrikom, odnosno najmanjom Hamm.
00 11 01 01 11 -16.43 7
11 10 11 00 00 -14.24 6 udaljenosti. Najvjerojatnija poslana kodna riječ c=[00 11
11 10 00 10 11 -16.43 7 10 11 00], odnosno poruka d=[0 1 0 0 0]
11 01 01 11 00 -7.67 3
11 01 10 01 11 -9.86 4

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

• Problem dekodiranja ML je što d

mora odrediti sve putove u D2


D

rešetkastom dijagramu kako bi se Xa Xc


D
Xb Xe
D3
dekodiranje provelo. To uključuje a c
D
b
D2
e

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

You might also like