You are on page 1of 11

FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I

INFORMACIJSKIH TEHNOLOGIJA
Stručni studij, 4. semestar

Informacijski sustavi i računalne mreže SAR401-17

Ime i prezime studenta: Broj indeksa: Datum: Pregledao:

Laboratorijska vježba broj 3:

Zaštitno kodiranje

UVOD
Na slici 1 prikazana je blok-shema jednostavnog komunikacijskog sustava. Njega čine izvor
informacija, predajnik, komunikacijski kanal (prijenosni medij), prijemnik i odredište
informacija.

Izvor informacija generira ograničeni skup simbola. Niz takvih simbola predstavlja
informaciju. Postupkom kodiranja nastoji se izvornu informaciju pretvoriti u oblik pogodan za
obradu i prijenos preko komunikacijskog kanala. Također, kodiranjem se nastoji u što većoj
mjeri neutralizirati djelovanje smetnji na komunikacijskom kanalu. Zadaća pretvarača je
pripremiti izlaz iz kodera za prijenos medijem, tj. pretvoriti primljene kodne riječi u niz
analognih ili digitalnih simbola.

Kodiranje se (prema mjestu provođenja) može podijeliti na dva osnovna tipa. To su:
• kodiranje izvora: provodi se na izvoru informacije s ciljem smanjivanja količine
podataka koji će se prenositi komunikacijskim kanalom (tj. izdvajanjem redundancije
provodi se sažimanje podataka);
• kodiranje kanala: provodi se prije prijenosa informacije preko komunikacijskog
kanala i služi za zaštitu informacija od utjecaja smetnji koje se neizostavno javljaju u
svakom realnom komunikacijskom kanalu.
Postoji više različitih vrsta zaštitnih kodova. Izbor određene vrste zaštitnog koda uvelike
ovisi o vrsti komunikacijskog kanala. Općenito, zaštitni kodovi mogu se svrstati u dvije
skupine. Prvu skupinu čine zaštitni kodovi za otkrivanje pogrešaka, dok u drugu spadaju kodovi
za otkrivanje i ispravljanje pogrešaka.

U praksi se ulazne informacije uvijek grupiraju u okvire nad kojima se potom provodi
postupak zaštitnog kodiranja. Postupak upravljanja pogreškama (error control) obuhvaća
mehanizme za otkrivanje i ispravljanje pogrešaka koje nastaju tijekom prijenosa podatkovnih
okvira preko komunikacijskog kanala. Kao rezultat djelovanja smetnji prilikom prijenosa mogu
nastati dva karakteristična tipa pogreške:
• izgubljeni okvir (lost frame) – podatkovni okvir uopće ne stiže na odredište budući
da se pod utjecajem smetnji toliko izobličio da ga prijemnik na odredištu nije u
stanju prepoznati kao ispravan podatkovni okvir;
• oštećeni okvir (damaged frame) – podatkovni okvir raspoznatljiv dolazi na
odredište ali je na nekim njegovim bitovima došlo do pogreške.

Postoje dvije osnovne skupine metoda za otkrivanje i ispravljanje pogrešaka:


• BEC (Backward Error Correction) – otkrivanje pogrešaka u prijemniku nakon čega
slijedi retransmisija pogrešno primljenog podatkovnog okvira;
• FEC (Forward Error Control) – ispravljanje pogrešaka u prijemniku.

FEC metoda podrazumijeva korištenje zaštitnih kodova koji osim detekcije omogućavaju i
ispravljanje pogrešaka. Iako FEC metoda bitno smanjuje broj retransmisija, BEC metoda se i
dalje vrlo često koristi zbog jednostavnije i jeftinije implementacije.

Na slici 2 prikazano je osnovno načelo djelovanja metoda za otkrivanje pogrešaka. Za svaki


podatkovni okvir predajnik pomoću funkcije zaštitnog kodiranja f izračunava zaštitni slijed bita
E koji se pridodaje podatkovnom okviru. Prijemnik na odredišnoj strani razdvaja primljene
podatke od zaštitnog niza E. Prijemnik potom pomoću funkcije f (funkcija je ista kao i na
predajnoj strani) na osnovu primljenih podataka izračunava zaštitni slijed Z i vrši usporedbu s
primljenim zaštitnim slijedom E. Ukoliko se ispostavi da je Z=E prijemnik pretpostavlja da
prilikom prijenosa nisu nastale pogreške (iako je moguće da nastane određena kombinacija
pogrešaka pri kojoj će biti Z=E). Ukoliko je Z≠E prijemnik sa sigurnošću zaključuje da je došlo
do pogreške. Ukoliko je prilikom kodiranja korišten zaštitni kod koji omogućava i ispravljanje
pogrešaka dekoder prema određenom algoritmu (karakterističnom za svaki pojedini tip
zaštitnog koda) pronalazi mjesto pogreške i vrši ispravku. Dekoder potom iz kodne riječi
odstranjuje zaštitne bitove i predaje niz informacijskih bitova odredištu.

Ciklička provjera zalihosti (Cyclic Redundancy Check – CRC)

Ciklička provjera zalihosti (CRC, Cyclic Redundancy Check) predstavlja jednu od najčešćih
metoda za detekciju pogrešaka kod prijenosa podataka. Ova metoda postala je vrlo popularna
zbog vrlo dobre sposobnosti detekcije pogreške, jednostavne implementacije i relativno kratke
zaštitne sekvence koja se dodaje informacijskim bitovima.

Kod primjene CRC zaštitne metode svi nizovi bitova tretiraju se kao binarni polinomi. To su
polinomi čiji koeficijenti mogu biti 0 ili 1. Ukoliko niz bitova ima duljinu k, pripadajući
polinom bit će stupnja k-1. Pri tome će krajnji desni bit iz niza predstavljati najniži stupanj u
polinomu (nulti stupanj).
Primjer:
Niz bitova „101011“ bit će pomoću binarnog polinoma prikazan na sljedeći način:
101011≡1⋅ x5 + 0⋅ x4 +1⋅ x3 + 0⋅ x2 +1⋅ x1 +1⋅ x0 = x5 + x3 + x +1

Pomoću binarnog polinoma dobivenog iz niza informacijskih bitova P(x) i zadanog


generatorskog polinoma G(x) dobije se zaštitni niz bitova (CRC) koji se pridružuje izvornom
nizu informacijskih bitova na predajnoj strani. Na prijemnoj strani se ponovno izračunava CRC
koji mora odgovarati primljenoj vrijednosti ukoliko nije došlo do pogreške. Postupak se odvija
kroz nekoliko koraka:
1. Iz niza informacijskih bitova formira se binarni polinom P(x) koji reprezentira podatke.
2. Polinom P(x) množi se sa vrijednošću xp gdje p predstavlja stupanj generatorskog
polinoma.
3. Dobiveni umnožak P(x)*xp dijeli se sa generatorskim polinomom G(x) pri čemu se
dobije količnik Q(x) i ostatak R(x).
4. Dobiveni polinom ostatka R(x) predstavlja CRC, pa se onda polinom T(x) koji
predstavlja podatak za slanje dobije na sljedeći način: T(x) = P(x)*xp + R(x)

Napomena: sve operacije s polinomima provode se po modulo-2 aritmetici!


Primjer:
Izračunati CRC za sljedeći niz informacijskih bitova: „1010010111“ uz zadani generatorski
polinom G(x) = x4 + x2 + x + 1.

1. P(x) = x9 + x7 + x4 + x2 + x + 1
2. P(x) * x4 = x13 + x11 + x8 + x6 + x5 + x4
3. ( P(x) * x4 ) : G(x)=
(x13 + x11 + x8 + x6 + x5 + x4) ÷(x4 + x2 + x +1) = x9 + x6 + x5 + x2
x13 + x11 + x10 + x9
x10 + x9 + x8 + x6 + x5 + x4
x10 + x8 + x7 + x6
x9 + x7 + x5 + x4
x9 + x7 + x6 + x5
x6 + x4
x6 + x4 + x3 + x2
x3 + x2

Q(x) = x9 + x6 + x5 + x2
R(x) = x3 + x2 CRC

4. T(x) = P(x) * xp + R(x) = x13 + x11 + x8 + x6 + x5 + x4 + x3 + x2

Dakle, niz bitova za slanje je: „1 0 1 0 0 1 0 1 1 1 1 1 0 0“


Od koliko bita se sastoji CRC zaštitni kod?

Hammingov kod

Jedan od najčešće korištenih zaštitnih kodova za otkrivanje i ispravljanje pogrešaka je


Hammingov kod. Od izvora informacije uzima se k informacijskih bitova i dodaje im se m
zaštitnih (paritetnih) bitova. Komunikacijskim kanalom prenose se blokovi od n=k+m simbola.
Hammingovim kodom (n,k) nazivaju se kodovi za koje vrijedi n=2m-1, k=2m-1-m (m=3,4,5,…).
Tako niz Hammingovih kodova čine kodovi (7,4), (15,11), (31,26)… Unutar bloka duljine n
bita Hammingov kod može ispraviti jednostruku pogrešku.

Kod Hammingovog (7,4) koda na 4 informacijska bita dolaze 3 zaštitna (paritetna) bita.
Paritetni bitovi u kodnim riječima Hammingovog koda dolaze na mjesta koja su potencije broja
2 (dakle na 1., 2.
4., 8. itd.) Prema tome, u 7-bitnoj kodnoj riječi kod Hammingovog (7,4) koda prvi, drugi i
četvrti bit su zaštitni bitovi (označimo ih sa C1, C2 i C4), dok su preostali bitovi informacijski
(I3, I5, I6 i I7). Dakle, 7-bitna kodna riječ izgleda ovako: C1 C2 I3 C4 I5 I6 I7.
Paritetni bitovi određuju se na sljedeći način:
C1 = I3 ⊕ I5 ⊕ I7
C2 = I3 ⊕ I6 ⊕ I7
C4 = I5 ⊕ I6 ⊕ I7

gdje operacija ⊕ predstavlja logičku operaciju XOR (isključivo ILI). Paritet je paran, to znači
da u nizu koji tvore paritetni bit i informacijski bitovi koje on štiti mora biti paran broj
jedinica.

Primjer: Odrediti kodnu riječ Hammingovog (7,4) koda za niz informacijskih bitova „1 0 1 0“

I3 =1 I5 = 0 I6 =1 I7 = 0
C1 = I3 ⊕ I5 ⊕ I7 =1⊕ 0⊕ 0 = 1
C2 = I3 ⊕ I6 ⊕ I7 =1⊕ 1⊕ 0 = 0
C4 = I5 ⊕ I6 ⊕ I7 = 0⊕ 1⊕ 0 = 1

Prema tome, Hammingova kodna riječ glasi: „1 0 1 1 0 1 0“.

Na prijemnoj strani vrši se provjera pariteta. Ukoliko je za neke od kontrolnih bitova paritet
narušen znači da je došlo do pogreške prilikom prijenosa. Kod Hammingovog koda (7,4)
moguće je ispravljanje jednostruke pogreške. Potrebno je odrediti za koje od kontrolnih suma
(C1, C2, C4) je narušen paritet i na temelju sljedeće tablice moguće je odrediti lokaciju
neispravnog bita:

C4 C2 C1 Neispravan bit
X C1
X C2
X X I3
X C4
X X I5
X X I6
X X X I7

Primjer: Na prijemnoj strani primljena je sljedeća kodna riječ: „1 0 1 1 0 1 1“. Provjeriti


ispravnost primljene riječi. Ukoliko je došlo do pogreške potrebno je ispraviti pogrešku ako je
to moguće.
Lako je utvrditi da je parni paritet narušen za sva tri kontrolna (paritetna) bita C1, C2, C4. Iz
tablice vidimo da to znači da je pogreška nastala na bitu I7. Dakle, poslana kodna riječ glasila
je: „1 0 1 1 0 1 0“.

Ovaj isti primjer može se riješiti i na drugi način:


Ako je:
C1 = I3 ⊕ I5 ⊕ I7
C2 = I3 ⊕ I6 ⊕ I7
C4 = I5 ⊕ I6 ⊕ I7

Onda, u slučaju ispravnog prijenosa mora biti:

C1 ⊕I3 ⊕ I5 ⊕ I7 = 0
C2 ⊕I3 ⊕ I6 ⊕ I7 = 0
C4 ⊕I5 ⊕ I6 ⊕ I7 = 0

Primjerice, ako smo primili kodnu riječ „0 1 1 1 0 1 1“, računamo:

C1 ⊕I3 ⊕ I5 ⊕ I7 = 0
C2 ⊕I3 ⊕ I6 ⊕ I7 = 0
C4 ⊕I5 ⊕ I6 ⊕ I7 = 1

Dobili smo binarno 1 0 0, u dekadskom brojevnom sustavu 4, što znači da je pogreška nastala na 4.
bitu, a to je C4.
PRIPREMA ZA VJEŽBU

• Proučiti primjenu zaštitnih kodova u komunikacijama, s naglaskom na CRC i


Hammingov kod.
• Zadan je generatorski polinom G(x) = x4 + x2 + x + 1. Izračunati CRC za
sljedeće nizove bitova:
a) „1101000110“
b) „1011101101“

 Hammingovim kodom (7,4) kodirati sljedeće nizove bitova:

a) „1110“
b) „1001“

 Dekodirati sljedeći niz bita kodiran Hammingovim kodom (7,4):


c) „0110111“
5
IZRADA VJEŽBE

NAPOMENA:
1. U MATLAB-u postaviti radni direktorij - mjesto gdje su kopirane datoteke
iz priloga.
2. Format unosa podataka je, primjerice: [1 0 1 1 1 1]

1. CIKLIČKA PROVJERA ZALIHOSTI (CRC – Cyclic Redundancy Check)


Pomoću programa „CRCgen“ u Matlab-u provjeriti ispravnost izračunatih CRC
vrijednosti u zadatku iz pripreme.
• Pomoću programa „CRCgen“ u Matlab-u generirati CRC za sljedeće nizove
informacijskih bitova (generatorski polinom je G(x) = x4 + x2 + x + 1):
a) „1 0 1 0 1 1 1 1 0 1“
b) „1 1 0 1 0 0 1 0 1 0“
c) „1 0 0 1 1 0 0 0 1 1“
d) „1 1 1 0 0 0 1 1 0 1“
2. HAMMINGOV KOD (7,4)

• Pomoću programa „hammenc“ u Matlab-u provjeriti ispravnost dobivenih kodnih


riječi Hammingovog (7,4) koda iz zadatka za pripremu.
• Kodirati vlastito ime i prezime 7-bitnim ASCII kodom (tablica 7-bitnog ASCII
koda nalazi se u prilogu).
• Dobiveni niz bitova kodirati Hammingovim (7,4) kodom pomoću programa
„hammenc“ u Matlab-u.
Napomona: Za svako slovo imena i prezimena naći 7-bitni ASCII kod i poredati ga (s
L na D). Sada, s D na L odvajati niz od 4 bita, te kad se dođe na L stranu, ukoliko fali
do 4 bita, dodati potreban br. nula. Dalje se, opet, gleda s L na D: upisivati pojedine
4-bitne riječi u Matlab (pojedinačno) i kodirati svaku Hammingovim kodom.
Kao rješenje ispisati u jednom redu cijeli niz koje je dao program.

 Hammenc (za zadatke iz pripreme):

 7-bitni ASCII (za ime i prezime):

• Hammenc za prethodni ASCII niz (krajnje rješenje):


• Pomoću programa „hammdec“ u Matlab-u dekodirati sljedeće kodne riječi
Hammingovog (7,4) koda:
a) „0 0 1 1 0 0 1“
b) „0 1 1 0 0 0 1“
c) „0 1 0 1 0 1 0“
d) „0 0 1 1 0 0 0“
Na kojim bitovima je došlo do pogreške (ovo se može provjeriti računski)? Je li
dekoder uspio ispraviti pogrešku?

U čemu je bitna razlika između CRC-a i Hammingovog koda?

ZAKLJUČAK:

You might also like