Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Vežba 10

Zaštitno kodovanje - Hemingov kod

Cilj vežbe
Cilj ove vežbe je upoznavanje studenata sa zaštitnim kodovanjem i različitim vrstama
zaštitnog kodovanja. Kroz primere i zadatke predstavljen je Hemingov kod i njegova
uloga i značaj u telekomunikacionom sistemu.

1. Uvod
Za smanjenje greške u telekomunikacionim sisitemima koristi se zaštitno kodovanje. U
stranoj literaturi zaštitno kodovanje se često označava kao Error Control Coding, ECC.
Da bi se greške nastale u prenosu informacija otkrile i ispravile, moraju se u prenošene
poruke uvesti dodatni biti (redundantni biti). Ovi redundantni biti se mogu uvesti na
različite načine, pa se kodovi mogu i podeliti prema načinu njihovog unošenja.
Elementarna podela zaštitnih kodova po ovom kriterijumu je podela na blok kodove i na
konvolucione kodove.
Blok kodovi su dobili svoje ime po tome što se posmatra prenošenje podataka u
blokovima. Prema tome, zadatak blok kodera je da prihvati izvestan broj ( k ) bita i da ih
predstavi odgovarajućom kodnom reči od n bita. Pošto otkrivanje i eventualno
ispravljanje grešaka zahtevaju unošenje redundantnih bita, to n mora biti veće od k .
Blok kodovi se označavaju se ( n, k ) , dok se veličina R = k n naziva kodni količnik
(code rate). Jedan od najpoznatijih blok kodova je Hemingov kod o kome će više reči biti
u nastavku teksta.
Konvolucioni kodovi su se pojavili kasnije od blok kodova. Kada se na ulaz
konvolucionog kodera dovede k bita, na njegovom izlazu se pojavi n bita koji zavise od
k ulaznih bita i „stanja“ kodera, tj. od m × k informacionih bita koji su u m prethodnih
koraka ušli u koder. Zbog ove činjenice konvolucioni koderi se označavaju i kao „kodovi
sa memorijom“. Najčešći postupak dekodovanja konvolucionog kodera je Vitrbijev
algoritam, o kome će biti više reči u nastavku teksta.
Položaj koder i dekodera zaštitnog kodovanja u telekomunikacionom sistemu dat je na
sledećoj slici.

2. Blok kodovi
Blok kodovi su zaštitni kodovi koji na reč dužine k bita dodaju zaštitne bite i formiraju
kodnu reču dužine n bita. Pravila po kojima se formiraju i dodaju zaštitni biti zavisi od
vrste blok koda. U blok kodove spadaju: kodovi sa jednostavnim proverama na parnost,
Hemingovi kodovi, Golejevi kodovi, perfektni kodovi i drugi. Prvi praktično upotrebljen
zaštitni kod bio je upravo Hemingov kod.

89
3. Hemingov kod ( n, k )

Hemingov kod se obeležava sa ( n, k ) , pri čemu je k broj informacionih bita, a n


ukupan broj bita u kodovanoj reči, tj. n = m + k , gde je m broj zaštitnih bita. Ukoliko je
potrebno ispraviti jednostruke greške broj zaštitnih bita se odreñuje po formuli:
2m ≥ k + m + 1 .
Za ispravljanje više od jedne greške broj zaštitnih bita raste.
Sada će biti razmotren primer Hemingovog koda ( 7, 4 ) . Broj zaštitnih bita, m , je 3.
Ukoliko se proveri navedena nejednakost 2 ≥ 4 + 3 + 1 , vidi se da je ispunjen uslov za
3

ispravljanje jedne greške.


Dakle, Hemingov kod ( 7, 4 ) , na reč dužine 4 bita, dodaje 3 bita i formira kodnu reč
dužine 7 bita. Zaštitna tri bita će prilikom dekodovanja odrediti položaj jednostruke
greške, na taj način dekoder Hemingovog koda ispravlja grešku i odreñuje poslatu
sekvencu.
Sledeći kod u Matlab-u koduje 4-bitnu sekvencu, dodaje grešku i dekoduje poslatu
sekvencu. Za Hemingovo kodovanje se koristi ugrañena funkcija:
encode(poruka,n,k,'hamming/binary') , gde je poruka binarni niz koji se
šalje dužine k , n ukupan broj bita u kodovanoj reči, a k broj informacionih bita. Oznaka
'hamming/binary' je obavezan deo funkcije kod Hemingovog kodovanja.
Za dekodovanje se koristi ugrañena funkcija:
decode(kod,n,k,'hamming/binary'). Parametar kod je kodna reč dobijena
kodovanjem, na koju je eventualno dodata i jednostruka greška. Ostali parametri imaju
isto značenje kao u funkciju encode.
Za dodavanje greške na jednom bitu biće korišćena funkcija
bitxor(kodnarec(i),1). Ova funkcija obavlja operaciju ekskluzivno ili. Tako,
ukoliko je i-ti bit kodne reči bio 1 posle izvršenja operacije postaje 0, i obrnuto ukoliko je
i-ti bit bio 0 dodavanjem greške postaje 1.

PRIMER 1.
n=7;%duzina kodovane reci
k=4;%broj informacionih bita

i=3; %polozaj greske

poruka=[0 1 1 0]'

%kodovanje
kodnarec = encode(poruka,n,k,'hamming/binary')

%dodavanje jednostruke greske


if (i>=1)&(i<=7)
kodnarec(i)=bitxor(kodnarec(i),1);
end
kod=kodnarec

%dekodovanje
dekodovanaPoruka = decode(kod,n,k,'hamming/binary')

ZADATAK 1.

90
1. Simulirati prethodni kod. Da li je dekodovana poruka ispravna? Uočiti razliku
izmeñu kodne reči dobijene kodovanjem (kodnarec) i koda posle dodavanja greške
(kod).
2. Promeniti položaj greške, menjanjem promenljive i. Utvrditi da li je poruka
ispravno dekodovana za različite položaje jednostruke greške.
3. Promeniti poruku koja se šalje (poruka) upisivanje bilo kog drugog 4-bitnog niza
nula i jedinica. Da li se poruka pravilno dekoduje?

REŠENJE

1.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
2.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
3.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

Kao što je već rečeno dekoder Hemingovog koda na osnovu zaštitnih bita utvrñuje gde se
desila greška, a zatim je ispravlja. Prilikom utrñivanja položaja greške dekoder formira
takozvani sindrom. Sindrom, u slučaju Hemingovog ( 7, 4 ) koda čine tri bita, s1 , s2 i
s3 . Biti sindroma se računaju na osnovu pristiglih 7 bita u dekoder i to na sledeći način:
s1 = c (1) ⊕ c ( 4 ) ⊕ c ( 6 ) ⊕ c ( 7 ) ,
s2 = c ( 2 ) ⊕ c ( 4 ) ⊕ c ( 5 ) ⊕ c ( 6 ) i
s3 = c ( 3) ⊕ c ( 5) ⊕ c ( 6 ) ⊕ c ( 7 ) .
U prethodnim izrazima sa c su označeni biti reči pristigle na dekoder (kodovana reč na
koju je dodata greška). Sa znakom ⊕ obeležena je operacija ekskluzivno ili.
Po izračunavanju bita sindroma dekoder odreñuje položaj greške na osnovu sledeće
tabele.

Sindrom Uzorak greške


000 0000000
100 1000000
010 0100000
001 0010000
110 0001000
011 0000100
111 0000010
101 0000001

91
Kod kojim se računa sindrom i odreñuje položaj greške dat je u nastavku teksta. Kod
predstavlja nastavak na prethodno dat kod.

PRIMER 2.
%racunanje sindroma
s1=bitxor(bitxor(kod(1),kod(4)),bitxor(kod(7),kod(6)))
s2=bitxor(bitxor(kod(2),kod(4)),bitxor(kod(5),kod(6)))
s3=bitxor(bitxor(kod(3),kod(6)),bitxor(kod(7),kod(5)))

s=[s1 s2 s3]

%prikazivanje obavestenja o polozaju greske


if (s(1)==0 & s(2)==0 & s(3)==1)
disp('Greska je bila na 3. bitu!')
elseif (s(1)==0 & s(2)==1 & s(3)==0)
disp('Greska je bila na 2. bitu!')
elseif (s(1)==1 & s(2)==0 & s(3)==0)
disp('Greska je bila na 1. bitu!')
elseif (s(1)==0 & s(2)==1 & s(3)==1)
disp('Greska je bila na 5. bitu!')
elseif (s(1)==1 & s(2)==1 & s(3)==0)
disp('Greska je bila na 4. bitu!')
elseif (s(1)==1 & s(2)==1 & s(3)==1)
disp('Greska je bila na 6. bitu!')
elseif (s(1)==1 & s(2)==0 & s(3)==1)
disp('Greska je bila na 7. bitu!')
elseif (s(1)==0 & s(2)==0 & s(3)==0)
disp('Greske nije ni bilo!')
end

Obratiti pažnju na činjenicu da se formiranje sindroma i odreñivanje položaja greške vrši


samo na osnovu bita pristiglih u dekoder (ovde označenih sa kod).

ZADATAK 2.

1. Promeniti položaj greške menjanjem parametra i u kodu. Proveriti da li prethodni


kod uspeva da otkrije položaj greške, na osnovu teksta koji kod ispisuje na ekranu.
Probati nekoliko različitih vrednosti za položaj greške.
2. Uočiti vezu dela koda %prikazivanje obavestenja o polozaju
greske i tabele u tekstu (sindrom i uzorak greške).

REŠENJE

1.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
2.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

92
Ukoliko se koriste Hemingov koder i dekoder u telekomunikacionom sistemu, očekuje se
smanjenje verovatnoće greške. Primer modela jednog telekomunikacionog sistema sa
Hemingovim kodovanjem dat je na sledećoj slici.

Model se sastoji od predajne i prijemne strane, kanala i blokova za računanje i


prikazivanje verovatnoće greške.
Predajna strana sadrži Generator slučajnih brojeva, Hemingov koder i BPSK modulator.
Generator slučajnih brojeva je podešen da generiše 4 slučajna bita. Hemingov koder je
koder ( 7, 4 ) , koji pristiglim bitima dodaje 3 zaštitna bita i formira 7-mo bitnu kodnu reč.
Binarni signal se dalje moduliše BPSK modulatorom.
Kanal u telekomunikacionom sistemu sadži AWGN blok sa promenljivim odnosom
Eb N 0 ( dB ) . Promena odnosa S/N se omogućava posle dvostrukog klika na blok.
Prijemna strana sadrži BPSK demodulator i Hemingov dekoder ( 7, 4 ) , koji pronalazi i
ispravlja jednostruke greške.
Računanje verovatnoće greške se vrši poreñenjem signala na predaji sa signalom na
prijemu. Ukupan broj pronañenih grešaka se deli sa ukupnim brojem poslatih bita i na taj
način se odreñuje verovatnoća greške po bitu (BER).

ZADATAK 3.

Otvoriti model bpskberHK. Model je detaljno opisan u prethodnom tekstu.


Za utvrñivanje poboljšanja BER korišćenjem Hemingovog koda biće korišćena teorijska
funkcija verovatnoće greške BPSK modulacionog postupka. Uporedićemo izgled
verovatnoće greške u slučaju Hemingovog kodovanja i bez njega, koristeći sledeći kod.
%teorijski BER BPSK modulaciong postupka
EbNo=0:1:14; %opseg vrednosti odnosa S/N u dB
semilogy(EbNo, berawgn(EbNo,'psk',2,'nondiff'),'c')
hold on,
%******OVDE UPISATI REZULTATE DOBIJENE SIMULACIJOM*******
semilogy([EbNo1 EbNo2 EbNo3 EbNo4],[BER1 BER2 BER3 BER4],'m-*')

93
Potrebno je izvršti 4 simulacije sa različitim vrednostima odnosa Eb N 0 ( dB ) u kanalu.
Vrednosti se menjaju upisivanjem u odgovarajuće polje po dvostrukom kliku na blok
AWGN kanal. Uzeti vrednosti 3, 6, 9 i 12, respektivno. Umesto oznaka EbNo1 EbNo2
EbNo3 EbNo4 upisati 3 6 9 12, a na mestu BER1 BER2 BER3 BER4 odgovarajuće
vrednosti BER dobijene simulacijama. Oznake na osama, ime i legenda grafika se mogu
postići sledećim kodom.
legend('Teorijski','Simulacija sa Hemingovim kodovanjem',...
'Location','SouthEast');
xlabel('Eb/No (dB)');
ylabel('BER');
title('Verovatnoca greske po bitu BPSK signala');

Nacrtati grafik dobijen prethodnim kodom.

REŠENJE

94

You might also like