You are on page 1of 36

ELEKTRONSKI FAKULTET

KATEDRA ZA ELEKTRONIKU
MIKROPROCESORSKI SISTEMI

PRENOS PODATAKA I
KORIGOVANJE GREKE
PRIMENOM HAMINGOVOG
KODA

Duan ivkovi 9622


UVOD

Svaki put kada se informacija prenosi kroz neki kanal, moe


doi do greke u prenosu usled uma. I kada je informacija
smetena u memoriji, moe se otetiti, jer nijedan hardver nije
apsolutno siguran. Ovo se ne odnosi samo na kompjuterske
informacije.
Zato vrlo je znaajna mogunost otkrivanja i korekcije greaka
unutar jednog sistema.

Postoje dva pristupa:

1. Kontrola greke unapred, u kome svaki karakter ili blok


podataka koji se alje sadri dodatne informacije. Na osnovu ovih
informacija primalac moe da otkrije postojanje greke, i da
odredi koji su bitovi u primljenom podatku pogreni i da greku
ukloni negacijom pogrenih bitova.

Duan ivkovi 9622


UVOD

2. Kontrola greke unazad - kontrola sa povratnom


spregom. Svaki karakter ili blok podataka koji se alje sadri samo
neophodne dodatne informacije koje omogucuju primaocu da
otkrije prisustvo greke, ali ne i mesto na kome se ona nalazi.
Jedini nacin za dobijanje korektnih podataka je ponavljanje
prenosa svih karaktera ili blokova podataka koji imaju greku
1. Metod sa kontrolom greke unazad je najcee koristi u
telekomunikaconom prenosu podataka.
2. Metod sa kontrolom greke unapred se ee koristi pri uvanju
podataka na memorijskim medijumima u raunarskom sistemu.
Izbor metode zavisi od:
1. Broja bitova sa grekom (eng. bit error rate, BER) na
komunikacionoj liniji. BER predstavlja verovatnou u definisanom
vremenskom intervalu da jedan bit ima greku.
2. Tipa greke, tj. da li se greka javila na pojedinanom bitu ili
na grupi uzastopnih bitova. U poslednjem sluaju re je o
proirenoj (eksplozivnoj) greci (eng. burst error).

Duan ivkovi 9622


Hamingovo kodiranje

Hamingov kod je linearni kod za korekciju gresaka. On moze


detektovati i korigovati jednobitnu gresku i moze detektovati ali
ne i korigovati dvobitnu gresku, odnosno Hamingova distanca
izmedju poslatog i primljenog kodnog zapisa mora biti nula ili
jedan za pouzdanu komunikaciju.

ISTORIJA

Haming je etrdesetih godina proslog veka radio u Bell laboratoriji


na problemu otklanjanja gresaka, razvijajuci mocan niz
algoritama. 1950 je obelodanio ono sto je danas poznato kao
Hamingov kod.
Odredjeni broj jednostavnih kodova za detekciju gresaka je bio u
upotrebi i pre Hamingovog, ali nijedan nije bi tako efikasan.

Duan ivkovi 9622


Hamingovo kodiranje

U upotrebi su bili sledei kodovi:

Parity bit:
Pokazuje da li je broj bitova vrednosti jedan paran ili neparan. Ako
je neki bit promenjen tokom prenosa, greska se detektuje u toj
tacki (parity bit moe biti i sam promenjen). Vrednost parity bita 1
pokazuje da je neparan broj jedinica u zapisu, a vrednost 0 da je
paran broj jedinica u zapisu. Parity ne prijavljuje na kom bitu je
greska iako moze da otkrije.
Dva iz pet kod:
m od n kod poznat kao dva iz pet kod garantuje da svaki niz od 5
bitova ima tano dve jedinice. Prijavljuje greku ako blok od pet
bitova nema tano dve jedinice, ali ako neki bit u nizu od pet se
promeni u jedinicu a drugi u nulu, kod ne prijavljuje greku.
Ponavljanje:
Ponavlja svaki bit vie puta da bi osigurao da je proao. Ako je bit
koji se alje 1, n=3 ponavljanje kod alje"111", Ako tri primljena
bita nisu identina, javlja se greka.

Duan ivkovi 9622


Hamingovo kodiranje
101
Pojam Hamingove
distance
Hamingova distanca (HD)
001
- broj bitova u kojima se dve
100
digitalne rei razlikuju
111
HD( 101, 100 ) = 1
HD( 111, 000 ) = 3
Kdna distanca (Dmin) 000
- minimalna Hamingova 011
110
distanca izmeu dve bilo koje
rei
Ilustracija kdne distance:

010

Duan ivkovi 9622


Hamingovo kodiranje

Detekcija greke
Kd moe detektovati do d bitova greke ako je minimalna
distanca kda

Dmin d + 1
Korekcija greke
Kd moe korektovati do c bitova greke ako je minimalna
distanca kda
Dmin 2c + 1

Duan ivkovi 9622


Hamingovo kodiranje

Kodovi parnosti
parna parnost
ukupan broj jedinica u kodnoj rei je paran:
- 0110110 1
- 0001011 0
neparna parnost
ukupan broj jedinica u kodnoj rei je neparan:
- 0110110 0
- 0001011 1

Duan ivkovi 9622


Hamingovo kodiranje

Pojam sindrom re
Dobija se poreenjem dve K-bitne vrednosti bit po bit uzimanjem
eksluzivne disjunkcije. To je neoznaen ceo broj duine K koji ima
vrednost K izmedju 0 i 2K-1.
Vrednost 0 oznaava da nema greaka u zapisu, dok ostalih 2K-1
vrednosti odreuju mesto greke ako postoji. Kako greka moe
da se javi na bilo kom od M bitova podatka i K bitova koji se
koriste u proveri, mora da vai 2K-1 M+K.

Duan ivkovi 9622


Hamingovo kodiranje

Generisana sindrom rec ima sledece karakteristike:


Ako su svi bitovi u njoj 0 tada nije otkrivena nikakva greka.
Ako u rei postoji tano jedna 1, tada greka postoji u jednom
od 4 bita za proveru, dok je zapis podatka.
Ako sindrom sadri vie od jednog bita koji ima vrednost 1, tada
vrednost sindrom rei posmatrane kao ceo neoznaen broj
odreuje poziciju na kojoj se nalazi greka.

Duan ivkovi 9622


Hamingovo kodiranje

Hamingov kd
Ako moe vie error correcting bita da bude ukljnueno u poruku,
i ako oni mogu da budu uredjeni tako da razliiti pogreni bitovi
prouzrokuju razliite greke, onda pogreni bitovi mogu biti
identifikovani. U 7-bitnom zapisu, mogue je sedam pojedinanih
greaka, pa tri bita za kontrolu greaka mogu javiti ne samo da
postoji greka, ve i na kom bitu se ona javila

Duan ivkovi 9622


Hamingovo kodiranje

opti algoritam:

1. sve pozicije bitova koje su stepen broja dva su parity bitovi


(pozicije 1,2,4,8,16,32...)
2. Sve ostale pozicije bitova su za ifrovanje podataka
3. svaki parity bit rauna parnost za neke od bitova u zapisu.
Pozicija parity bita odredjuje sekvencu bitova koji se proveravaju i
preskau

Opte pravilo za poziciju n: preskae n-1 bitova, proverava n


bitova, preskae n bitova, proverava n bitova...

Duan ivkovi 9622


Hamingovo kodiranje

Kodovi za korekciju greaka koriste viestruke parity bitove


smetene sa bitovima podataka. Svaki bit provere je parity bit
grupe bitova u poruci. Prilikom itanja primnjene poruke
proveravaju se svi parity bitovi i ako su svi u redu, znai da nije
dolo do greke u prenetoj poruci. Ako je jedan ili vie parity
bitova neispravno utvrdjuje se koji je od bitova pogrean.
Jednostruka greka nastaje kada je vrednost jednog bita u poruci
promenjena sa 1 na 0 ili sa 0 na 1. Pogrean bit moe biti lako
korigovan komplementiranjem njegove vrednosti

Duan ivkovi 9622


Hamingov kod

- Detekcija greke je jednostavna (dodavanjem parity bitova)


- Korekcija greke je kompleksna i zahteva Hamingov kd sa vie
parity bitova
Hamingovom kod, p - parity bitova je dodato na m - bitova u
poruci, tako da imamo novonastalu kodnu re on m+p - bitova.
Bitske pozicije su numerisane u sekvenci od 1 do m+p. Sve
pozicije u rei, iji je broj stepena 2 (pozicije 1,2,4,8,...) koriste se
za parity bitove. Ostale pozicije su namenjene za bitove originalne
poruke.

Duan ivkovi 9622


Hamingov kod

Prilikom izbora broja parity bitova mora biti zadovoljena sledea


relacija:
2m m+p+1
primer: za 8-bitnu poruku potrebna su nam 4 parity bita, tako da
e podatak koji prenosimo sadrati ukupno 12 bitova.
- parity bitovi su 1,2,4,8, ... (P1,P2,P3,P4)
3 = 1+2
5 = 1+4
6 = 2+4 P1 proverava bitove 3, 5, 7, 9, 11
7 = 1+2+4 P2 proverava bitove 3,6,7,10,11
9 = 1+8 P4 proverava bitove 5,6,7,12
10 =2+8 P8 proverava bitove 9,10,11,12
11 = 1+2+8
12 = 4+8

Duan ivkovi 9622


Hamingov kod

Hamingov kod se moe koristiti za kodnu re proizvoljne


duine. Generalno za p - parity bitova i originalnu re od m -
bitova imamo ukupno p+m bitova koji mogu biti kodovani sa 2k-
1 bitova. Grupe bitova za generisanje parity bitova i bitova
provere na prijemu odreuju se iz liste binarnih brojeva iz liste od
1 do 2k-1. Svaka grupa bitova poinje sa brojem koji je stepena
2, na primer 1,2,4,8,16 itd. Ovi brojevi su takoe i pozicije parity
bitova.
Osnovni Haming kod moe detektovati i korigovati greke u
samo jednom bitu. Upotrebom dodatnih parity bitova mogu se
korigovati jednostruke greke i detektovati dvostruke.

Duan ivkovi 9622


Hamingov kod

Hamingov kod sa dodatnim parity bitom


Hamingov kod ima minimalnu Hamingovu distasncu 3, to znai
da kod moe detektovati i otkloniti pojedinanu greku.
Ukljuivanjem dodatnog parity bita mogue je poveati distancu
na 4. Ovo omoguava kodu da moe da detektuje i otkloni
pojedinanu greku, i istovremeno da detektuje ali ne i da otkloni
dvostruku greku. Takoe se moe koristiti i za detektovanje 3
greke ali ne moe da koriguje nijednu.
Znai, ako je minimalna distanca bilo kog koda za korekciju
greaka data sa W, onda W*(W/2) greaka je mogue
detektovati, od kojih je ((W-1)/2) mogue korigovati.

Duan ivkovi 9622


Hamingov kod

Haming (7,4) kod


1950 Haming je predstavio
(7,4) kod. On ifruje 4 bita
zapisa u 7 bitova dodavanjem
3 parity bita. On moe da
detektuje i otkloni
pojedinanu greku, i da
detektuje dvostruku greku.
Na primer 1011 se ifruje u
0110011 gde su crvene cifre
parity bitovi.
grafiki prikaz 4 bita informacije i 3 parity bita i koji parity
bit dodeljuje kom bitu podatka

Duan ivkovi 9622


Hamingov kod

Haming (8,4) kod


Hamingov (7,4) se lako moe
proiriti u (8,4) dodavanjem
extra parity bita na vrh (7,4)
ifrovane rei.
Na primer 1011 se ifruje u
01100110 gde su crvene cifre
parity iz koda (7,4), a zelena
cifra je Parity dodat
Hamingovim (8,4) kodom.
Zelena cifra uzrokuje da (7,4)
kod bude paran.
primer sa prethodne slike sa dodatnim parity bitom

Duan ivkovi 9622


Hamingov kod

Haming (11,7) kod


Posmatramo re od 7 bitova
0110101. Da bi pokazali kako
se Hamingov kod koristi da bi
detektovao greku,
pogledaemo tabele.

- d oznaava podatak i p
parity bit
Prvo se podaci ubacuju na
odgovarajua mesta, a parity
bitovi se raunaju za svaki
pojedinano koristei parnost
(da budu deljivi sa dva)
prikaz 7 bitova podataka i 4 parity bita i koji parity bit se
dodeljuje kom bitu iz zapisa

Duan ivkovi 9622


p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7

Data word
(bez
0 1 1 0 1 0 1
parity
bitova):

p1 1 0 1 0 1 1

p2 0 0 1 0 0 1

p3 0 1 1 0

p4 0 1 0 1

Data word
(sa parity 1 0 0 0 1 1 0 0 1 0
bitovima):

raunanje parity bitova


Hamingovog koda

Duan ivkovi 9622


Hamingov kod

Nova re, sa parity bitovima, je sada 10001100101. Sada


uzimamo da je zadnji bit "pokvaren" i promenjen iz 1 u 0. Nova
re je 10001100100 i sada kada anliziramo kako je Hamingov kod
napravljen obojiemo svaki parity bit koji je 1 (kada je provera
parnosti negativna).

Duan ivkovi 9622


p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 Parity Parity
provera bit

Primlojena
1 0 0 0 1 1 0 0 1 0 0
data word:

p1 1 0 1 0 1 0 Fail 1

p2 0 0 1 0 0 0 Fail 1

p3 0 1 1 0 Pass 0

p4 0 1 0 0 Fail 1

provera parity bitova

Duan ivkovi 9622


Hamingov kod

promenjena pozicija zapisa i parity bitova

Duan ivkovi 9622


Hamingov kod

Odredjivanje vrednosti parity


bitova (imati u vidu da je bit
sa najmanjim indexom
odreuje vrednost jedinica i p4 p3 p2 p1

ide skroz desno). Celobrojna


vrednost parity bita je 11, to Binary 1 0 1 1
znai da jedanaesti bit u rei
(ukljuujui i parity bitove) je Decimal 8 2 1 = 11
pogrean i mora biti
zamenjen. Zamenom
jedanaestog bita promenjena
re 10001100100 postaje
opet 10001100101.
Uklanjanjem Hamingovog
koda dobija se originalna re
0110101.

Duan ivkovi 9622


Hamingov kod

vrednost zapisa iz primera. Vrednost u crvenom, utom, zelenom i plavom krugu je parna

Duan ivkovi 9622


Hamingov kod

Parity bitovi ne proveravaju


jedni druge i ako provera
nekog parity bita ne uspe, a
ostali uspeju, onda je greka
u parity bitu a ne u nekom
bitu iz zapisa.

Greka na jedanaestom bitu uzorkuje pogrenu parnost u crvenom,


utom i zelenom krugu

Duan ivkovi 9622


Zadatak

Mikrokontroler dobija podatke iz PC-a i prenosi ih


do drugog mikrokontrolera koristei Hamingov
kod

Korieni procesori AT89C2051

Duan ivkovi 9622


Zadatak

ema

Duan ivkovi 9622


Zadatak

1. pin - za reset, vezan


kondenzator ako blokira da se
resetuje
2. pin - RX slui za
komunikaciju sa RS232
portom
3. pin - TX slui za
komunikaciju sa RS232
portom
4. pin - za njega i za 5. pin je
vezan kristal koji daje takt
procesoru

Duan ivkovi 9622


Zadatak

10. pin - za masu (logika 0)


20. pin - za napajanje - 5V(na njega ide logika jedinica = 5V) i
vezuje se kondenzator koji otklanja smetnje u jednosmernom
reimu
Od 12. do 19. pina je port 1 (kada se prime podaci iz PC-a
postave ih na port i poalju drugom procesoru)
6. pin - javi drugom procesoru da su spremni podaci za slanje
11. - pin - slui da drugi procesor javi prvom da je preuzeo
podatke i da moe da alje dalje

Duan ivkovi 9622


Zadatak

Radnje koje obavljaju esti i jedanaesti pin su poznate kao


handshakeing tehnika prenosa
komponenta A postavlja vaee podatke na linije za podatke i
aktivira liniju Spreman (ready) ije stanje ukazuje da su podaci
na linijama za podatke vaei
prijemna komponenta B testira stanje na liniji Spreman. Kada
ustanovi da su podaci vaei prihvata podatke i nakon toga
aktivira signal Potvrda pomou koga obavetava predajnik da e
prihvatiti podatke
prijeminik kada prihvati podatke deaktivira signal Potvrda, tj.
Obavetava predajnik da je primio podatke
predajnik testira stanje na liniji Potvrda i kada ono postane
neaktivno, to znai da su podaci od strane prijemnika
prihvaeni, deaktvira liniju Spreman i ukida podatke na linijama
za podatke. Nakon ovog trenutka predajnik moe da aktivira
novi ciklus prenosa podataka

Duan ivkovi 9622


Zadatak

Izmeu dva procesora se


stavljaju pull up otpornici
prema 5V, na otpornoj letvici
da neutraliu smetnje i da
definiu logiku jedinicu (uvek
je dre na 5V)
dve ploice su povezane 10-
pinskim flat konektorom (na
svakoj ploici je po jedan
procesor)

Duan ivkovi 9622


Zadatak

Podaci iz PC-a preko 9-


pinskog (subD-9) konektora
dolaze na prvu ploicu
izmeu PC-a i procesora ide
MAX232 koji slui za
konverziju logike 0 u 1 (kod
procesora 0 je 0V a 1 je 5V, a
kod PC-a 0 je 12V a 1 je 12V
ili 0V)
MAX232 se uvek vezuje sa 5
kondenzatora za komunikaciju

Duan ivkovi 9622


Zadatak

Opis procesa
Prvi mikrokontroler (predajnik) dobija odreenu poruku iz PC-a
duine 4 bajta. Ukoliko dobije duu poruku, podelie je na vie
poruka duine 4 bajta. Ako ostane neki bajt vika, ili sama uneta
poruka sadri manje od 4 bajta, eka se dalji unos.
Prva dva bajta unete poruke su podaci, trei odreuje koji od njih
ima simuliranu greku (vrednosti su od 0 do 3), dok etvrti bajt
oznaava bit na kome e se simulirati greka (vrednosti od 0 do
7).
Predajnik od prva dva bajta pravi etiri i onda simulira greku
(promeni bit u bajtu kako mu je zadato). Tako formiranu poruku
prenosi do drugog mikrokontrolera (prijemnik).
Kada prijemnik dobije poruku, proverava sva etiri primnljena
bajta i ako postoji greka koriguje je. Nakon toga, etiri bajta
vrati na dva bajta podataka. Tako obraenu poruku alje PC-u.
Pored toga alje i poruku u obliku u kome je primio (sa grekom)

Duan ivkovi 9622


Zadatak

na konektoru se koriste
pinovi:
2 - RX (ide na TX procesora)
3 - TX
5 - 0V

Duan ivkovi 9622

You might also like