Кодирање, детекција и корекција грешака

82
Кодирање, детекција и корекција грешака Увод Тежински кодови Нетежински кодови Детекција грешака Детекција и корекција грешака

Upload: penelope-adams

Post on 04-Jan-2016

29 views

Category:

Documents


3 download

DESCRIPTION

Кодирање, детекција и корекција грешака. Увод Тежински кодови Нетежински кодови Детекција грешака Детекција и корекција грешака. Увод. Информације у окружењу постоје у различитим облицима. Оне могу бити неелектричног и електричног типа. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Кодирање, детекција и корекција грешака

Кодирање, детекција и корекција грешака

Увод Тежински кодови Нетежински кодови Детекција грешака Детекција и корекција

грешака

Page 2: Кодирање, детекција и корекција грешака

Увод

Информације у окружењу постоје у различитим облицима.

Оне могу бити неелектричног и електричног типа.

Величине електричног типа могу бити аналогне и дигиталне.Притиснут одређени тастер

на тастатури, температура, притисак, напон, струја, ...

Page 3: Кодирање, детекција и корекција грешака

Увод

Све неелектричне величине морају се претворити у електричне помоћу разних врста сензора, давача, и сл.

Аналогне електричне величине морају се претворити у дигиталне.

У крајњој линији, подаци којима барата рачунарски систем су у бинарном облику.

Page 4: Кодирање, детекција и корекција грешака

Увод

Стога је зе коришћење у рачунарским системима најпогоднији бинарни бројни систем.

Људи су навикнути на рад са децималним бројевима.

Компромис између ове две потребе је да се изврши бинарно кодирање децималних бројева.

Page 5: Кодирање, детекција и корекција грешака

Увод

Како постоји десет декадних цифара (0, 1, ..., 9) за кодирање сваке цифре потребна су четири бита.

Са четири бита можемо да направимо 24 комбинација, док нам је потребно свега 10.

Последица: постоји велики број кодова.

Page 6: Кодирање, детекција и корекција грешака

Увод

Бинарни кодови могу бити: Тежински (пондерисани). Нетежински (непондерисани).

Осим наведених разлога, бинарни кодови се користе и у сврху детекције и корекције грешака насталих у преносу података.

Page 7: Кодирање, детекција и корекција грешака

Тежински кодови

Код тежинских кодова свакој цифри се додељује тежина t.

Збир тежина оних цифара које имају вредност 1 еквивалентна је децималном броју који се представља помоћу четири бита.

00112233 tdtdtdtd

Page 8: Кодирање, детекција и корекција грешака

Тежински кодови

У случају када је

t0=20=1, t1=21=2, t2=22=4, t3=23=8

добијамо већ познати BCD код, или ’’8421’’.

Page 9: Кодирање, детекција и корекција грешака

Тежински кодовиДекадна цифра

8421 7421 4221

0 0000 0000 0000 0000

1 0001 0001 0001 0111

2 0010 0010 0010 0110

3 0011 0011 0011 0101

4 0100 0100 1000 0100

5 0101 0101 0111 1011

6 0110 0110 1100 1010

7 0111 1000 1101 1001

8 1000 1001 1110 1000

9 1001 1010 1111 1111

842 1

Page 10: Кодирање, детекција и корекција грешака

Тежински кодови

Неки кодови имају особину да се код деветичног комплемента неке цифре добија као јединични комплемент њене кодне презентације.

То су аутокомплементарни кодови.

Page 11: Кодирање, детекција и корекција грешака

Тежински кодови

Најчешће се користи BCD код. Сабирање бројева је исто као и

код бинарних све док сума не прелази 9.

децимални BCD

5 0101

+ 4 + 0100

9 1001

Page 12: Кодирање, детекција и корекција грешака

Тежински кодови

Када сума прелази 9, врши се децимално подешавање додавањем броја 6.

декадни BCD

8 1000

+ 6 + 0110

14 1110 (14 није легални BCD број)

+ 0110 dodaje se 6

0001 0100

Page 13: Кодирање, детекција и корекција грешака

Тежински кодови

Подешавање се врши и када постоји пренос са једног цифарског места на друго.

0110

децимални BCD

9 1001

+ 7 + 0111

16 0001 0000

0001 0110

Page 14: Кодирање, детекција и корекција грешака

Тежински кодови

Када је у питању операција одузимања, подешавање се врши одузимањем броја 6.

Page 15: Кодирање, детекција и корекција грешака

Нетежински кодови

Код нетежинских кодова не постоји одговарајућа тежина придружена појединим битовима у кодној речи.

Page 16: Кодирање, детекција и корекција грешака

Нетежински кодови

Код ’’вишак 3’’Добија се додавањем броја три децималном броју.

Добијени код је аутокомплементаран.

Page 17: Кодирање, детекција и корекција грешака

Нетежински кодови

децимални вишак 3

0 0011

1 0100

2 0101

3 0110

4 0111

5 1000

6 1001

7 1010

8 1011

9 1100

Page 18: Кодирање, детекција и корекција грешака

Нетежински кодови

Подешавање за случај појаве преноса се врши додавањем броја три на оба цифарска места.

Децимални Вишак 3

8 1011

+ 6 1001

14 1 0100

0011 0011

0100 0111

Page 19: Кодирање, детекција и корекција грешака

Нетежински кодови

Када збир не прелази 9 подешавање вршимо одузимањем броја три.

децимални Вишак 3

5 1000

+ 3 + 0110

8 1110

0011 одузима се 3

1011

Page 20: Кодирање, детекција и корекција грешака

Нетежински кодови

Код одузимања се подешавање врши додавањем броја три.

децимално Вишак 3

17 0100 1010

- 11 - 0100 0100

6 0000 0110

+ 0011 додаје се 3

1001

Page 21: Кодирање, детекција и корекција грешака

Нетежински кодови

Циклични кодУзастопне кодне речи разликују се само на једној бит-позицији.

Page 22: Кодирање, детекција и корекција грешака

Нетежински кодови

децимални циклични

0 0000

1 0001

2 0011

3 0010

4 0110

5 0100

6 1100

7 1110

8 1010

9 1000

Page 23: Кодирање, детекција и корекција грешака

Нетежински кодови

Грејов кодЈош један тип цикличног кода је рефлективни код или Грејов код.Једна од особина овог кода је да су, осим MS цифре све колоне рефлективне (симетричне) у односу на средњу тачку.

Page 24: Кодирање, детекција и корекција грешака

Нетежински кодови

Дек. Бин. Грејов

0 0000 0000

1 0001 0001

2 0010 0011

3 0011 0010

4 0100 0110

5 0101 0111

6 0110 0101

7 0111 0100

8 1000 1100

9 1001 1101

10 1010 1111

11 1011 1110

12 1100 1010

13 1101 1011

14 1110 1001

15 1111 1000

• На MS позицији у горњој половини су нуле а у доњој јединице.

Page 25: Кодирање, детекција и корекција грешака

Нетежински кодови

Децимални број се конвертује у Грејов код најпре конверзијом у бинарни.

Бинарни број се конвертује у Грејов код формирањем суме по модулу 2 између текуће цифре (почевши од LS цифре) и суседне цифре веће тежине.

Page 26: Кодирање, детекција и корекција грешака

Нетежински кодови Ако је бинарна презентација

децималног броја дата у облику

b3b2b1b0,

тада се одговарајућа кодна реч из Грејовог кода, G3G2G1G0, одређује као

G3= b3

G2= b3 b2

G1= b2 b1

G0= b1 b0

Page 27: Кодирање, детекција и корекција грешака

Нетежински кодови

Пример:Наћи Грејов код децималног броја 11.

Одговор:Бинарна презентација броја 11 је 1011.

G3= b3 = 1; G2= b3b2 = 10 = 1;

G1= b2b1 = 01 = 1; G0= b1b0 = 11 = 0;

Одговарајући Грејов код је 1110.

Page 28: Кодирање, детекција и корекција грешака

Нетежински кодови

Конверзија Грејовог кода у децимални еквивалент такође се изводи најпре конверзијом у бинарни.

Page 29: Кодирање, детекција и корекција грешака

Нетежински кодови

Пример:Одредимо децимални еквивалент Грејове кодне речи 1110.

Одговор:b3 = G3= 1; G2= b3b2 = 1b2 = 1 b2 = 0;

G1= b2b1 = 0b1 = 1 b1 = 1;

G0= b1b0 = 1b0 = 0 b0 = 1;

Page 30: Кодирање, детекција и корекција грешака

Нетежински кодови

Бинарни еквивалент је 1011 што одговара декадном броју 11.

Page 31: Кодирање, детекција и корекција грешака

Детекција грешака

Број позиција на којима се два низа разликују назива се Хемингово растојање.

n-коцка има 2n чворова при чему сваки чвор одговара једном n-тобитном низу.

Page 32: Кодирање, детекција и корекција грешака

Детекција грешака

Два чвора n-коцке су повезана потегом акко је Хемингова дистанца између одговарајућих низова једнака 1.

Page 33: Кодирање, детекција и корекција грешака

Детекција грешака

0 11-коцка

10

11 2-коцка

00

01

Page 34: Кодирање, детекција и корекција грешака

Детекција грешака

100 110 3-коцка

000 010

101 111

001

011

Page 35: Кодирање, детекција и корекција грешака

Детекција грешака

4-коцка

1000

1100

0000

0100

1010

1110

0010

0110

1001

1101

0001

0101

1011

1111

0011

0111

Page 36: Кодирање, детекција и корекција грешака

Детекција грешака

У оквиру n-коцке постоји више m-субкоцки са по 2m чворова.

Код сваке од m-субкоцки n-m битова једног чвора има исту вредност, док осталих m битова представља једну од 2m бинарних комбинација.

Page 37: Кодирање, детекција и корекција грешака

Детекција грешака

n-коцка представља геометријску интерпретацију појма Хемингове дистанце.

Page 38: Кодирање, детекција и корекција грешака

Детекција грешака

Било који n-тобитни код може се посматрати као подскуп свих могућих n-тобитних низова.

Они низови који припадају том подскупу зову се кодне речи.

Остале низове ћемо звати не-кодним речима.

Page 39: Кодирање, детекција и корекција грешака

Детекција грешака

Ако, приликом преноса података, примимо не-кодну реч, то је знак да је дошло до грешке.

Да би се успешно детектовала грешка на једној бит позицији, кодне речи морају да имају растојање не мање од 2.

Page 40: Кодирање, детекција и корекција грешака

Детекција грешака

То значи да избор кодних речи из одговарајуће n-коцке мора да буде такав да се бирају кодне речи које одговарају несуседним чворовима.

Page 41: Кодирање, детекција и корекција грешака

Детекција грешака

Ако изаберемо да тробитни код чине кодне речи

000, 011, 100, 111,

онда грешка на једној бит позицији може да промени кодну реч 100 у 000 или 110 па овај код не може детектовати све грешке.

100 110

000 010

101 111

001

011

Page 42: Кодирање, детекција и корекција грешака

Детекција грешака

Ако би из кода изоставили кодну реч 100, и уместо ње узмемо кодну реч 101 добијамо код који може да детектује све грешке на једној бит позицији.

Page 43: Кодирање, детекција и корекција грешака

Детекција грешака

100 110

000 010

101 111

001

011

Код парне парности

Page 44: Кодирање, детекција и корекција грешака

Детекција грешака

100 110

000 010

101 111

001

011

Код непарне парности

Page 45: Кодирање, детекција и корекција грешака

Детекција грешака

Кодови за проверу парности Да би се у произвољном коду

очувало растојање 2, на n информационих битова додаје се 1 редудантни бит.

Тако добијамо (n+1)-битни код за проверу парности:

Код парне парности. Код непарне парности.

Page 46: Кодирање, детекција и корекција грешака

Детекција грешака

На претходним сликама кодови имају 2 MS бита информације и LS бит парности.

Page 47: Кодирање, детекција и корекција грешака

Детекција грешака

Кодови m од n.Ово је још једна класа кодова који могу да детектују једноструку грешку.

Овде све важеће кодне речи имају n битова од којих је m увек постављено на 1.

Page 48: Кодирање, детекција и корекција грешака

Детекција грешака

За представљање декадних цифара погодан је код 2 од 5 (C5

2), јер има тачно 10 комбинација.

Page 49: Кодирање, детекција и корекција грешака

Детекција грешакадецимални 2 од 5

тежина 63210

0 01001

1 00011

2 00101

3 00110

4 01010

5 01100

6 10001

7 10010

8 10100

9 11000

Page 50: Кодирање, детекција и корекција грешака

Детекција грешака

Дводелни (biquinary) кодови.Ради се о 7-битном коду који се састоји из два дела.

Први део је тежински код 1 од 2, а други је такође тежински 1 од 5.

Page 51: Кодирање, детекција и корекција грешака

Детекција грешакадецималн

и50 43210

0 01 00001

1 01 00010

2 01 00100

3 01 01000

4 01 10000

5 10 00001

6 10 00010

7 10 00100

8 10 01000

9 10 10000

Page 52: Кодирање, детекција и корекција грешака

Детекција грешака

Кодови са остаткомЗаснивају се на аритметици по модулу. Остатак при дељењу броја N бројем p је

R = N mod p

Остаци броја могу се искористити за његову идентификацију тј. презентацију.

Page 53: Кодирање, детекција и корекција грешака

Детекција грешакаN Остатак по модулу

2 3 5 7

0 0 0 0 0

1 1 1 1 1

2 0 2 2 2

3 1 0 3 3

4 0 1 4 4

5 1 2 0 5

6 0 0 1 6

7 1 1 2 0

8 0 2 3 1

9 1 0 4 2

10 0 1 0 3

N Остатак по модулу

2 3 5 7

11 1 2 1 4

12 0 0 2 5

13 1 1 3 6

14 0 2 4 0

15 1 0 0 1

16 0 1 1 2

17 1 2 2 3

18 0 0 3 4

19 1 1 4 5

20 0 2 0 6

Page 54: Кодирање, детекција и корекција грешака

Детекција грешака

Над бројевима са остатком могуће је вршити операције.

Код сабирања врши се само сабирање одговарајућих остатака при чему се игноришу преноси.

Page 55: Кодирање, детекција и корекција грешака

Детекција грешака

2 3 5 7 модуо

13 1 1 3 6

7 1 1 2 0 остаци по модулу

13 + 7 = 20 0 2 0 6

Page 56: Кодирање, детекција и корекција грешака

Детекција грешака

2 3 5 7 модуо

9 1 0 4 2

8 0 2 3 1 остаци по модулу

9 + 8 = 17 1 2 2 3

Page 57: Кодирање, детекција и корекција грешака

Детекција грешака

Множење се обавља тако што се по модулу множе одговарајући остаци игноришући преносе.

Page 58: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Бергерови кодови – користе се за пројектовање логичких кола која могу да детектују сопствене грешке (self-cheking circuits).

Page 59: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Формирају се на следећи начин:1. Формира се бинарни број који је

једнак броју јединица у податку.2. Формира се комплемент сваког

бита у овом броју.3. Резултујући бинарни број се састоји

од битова провере који се придружују битовима податка и тако формирају кодну реч.

Page 60: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Ако је у податку n битова, потребно је K = log2(n+1) битова провере.

Такође, ако имамо K битова провере, онда број битова податка може највише бити једнак

n = 2K – 1.

Page 61: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Ако n = 2K – 1, онда се битови провере могу добити и као бинарни еквивалент броја 0 битова у податку.

Page 62: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Помоћу Бергерових кодова могуће је детектовати све једносмерне грешке, тј. промене нула у јединице или промене јединица у нуле.

Page 63: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Пример:Нека је N=101011, тада је

K = log2(6+1) = 3,

па одговарајућа Бергерова кодна реч има 6+3=9 битова.

Page 64: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Пример:Три бита провере одређују се на следећи начин:

Број јединица у битовима податка = 4

Бинарни еквивалент од 4 = 100

Комплемент од 100 је 011Кодна реч = 101011 011

Битови податк

а

Битови провер

е

Page 65: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Ако у податку имамо 7 битоваN = 1000110

три бита провере могу се добити и као бинарни еквивалент броја нула.

1000110 100Битови податка

Битови провер

е

Page 66: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Нека су два бита погрешна у оквиру податка

1011110 100

Битови податка

Битови провер

е

Page 67: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Тада ће битови провере бити 010 што се разликује од 100 и грешка ће бити детектована.

Очигледно је да на овај начин не могу бити детектоване грешке двосмерног типа.

Page 68: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Кодови за корекцијуСа једним редудантним битом (битом парности) може се само детектовати грешка на једној бит позицији.Да би могли да утврдимо где је грешка потребни су додатни битови.

Page 69: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

100 110

000 010

101 111

001

011

Пример кода који има 1 информациони бита и два редудантна бита.

Кодно растојање је 3.

Ако се појави грешка, некодна реч је на растојању 2 од друге кодне речи.

Page 70: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

На овај начин могу се детектовати и кориговати једноструке грешке или само детектовати двоструке.

Да би кориговали x грешака код мора да има растојање 2x+1.

Page 71: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Хемингови кодови.Ово је најчешћи тип кода за корекцију грешака код RAM-а.

Кодна реч се формира тако што се n-тобитном податку додаје k битова парности (2k ≥ n + k + 1).

Битови парности налазе се на позицијама које су степен броја 2 а остали битови чине податак.

Page 72: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Опште правило за бит на позицији n: прескочи n−1 битова, провери n битова, прескочи n битова, провери n битова итд.

Другим речима, бит парности на позицији 2p проверава битове на оним позицијама које имају постављен бит p у њиховој бинарној презентацији.

Page 73: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Примера ради, бит 13, тј. 11012, проверавају битови 10002 = 8, 01002 = 4 и 00012 = 1.

Page 74: Кодирање, детекција и корекција грешака

Детекција и корекција грешакаОпште правило се може приказати на следећи начин:

Бит позиција 1 2 3 4 5 6 7 8 9 10 11 12

Битови кодираног податка p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 d8

Покривање битова

парности

p1 X X X X X X

p2 X X X X X X

p3 X X X X X

p4 X X X X X

Page 75: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Пример:Одредити Хемингов код за 8-битну реч

1100 0100Одговор:

Сваки од битова парности рачуна се на следећи начин:

Page 76: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

P1=ExOR(3, 5, 7, 9, 11) = 1 1 0 0 0 = 0

P2=ExOR(3, 6, 7, 10, 11) = 1 0 0 1 0 = 0

P4=ExOR(5, 6, 7, 12) = 1 0 0 0 = 1

P8=ExOR(9, 10, 11, 12) = 0 1 0 0 = 1

Page 77: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Заменом вредности за P1, P2, P4 и P8 добијамо следећу 12-тобитну информацију.

Бит позиција

1 2 3 4 5 6 7 8 9 10 11 12

0 0 1 1 1 0 0 1 0 1 0 0

Page 78: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Оваква 12-битна информација би се уписала у меморију а када се врши њено читање поново се врши провера ради детекције грешака.

Проверава се парност речи над истом групом битова укључујући и бит парности.

Page 79: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Сва четири бита проверавају се на следећи начин:

C1 = ExOR(1, 3, 5, 7, 9, 11)

C2 = ExOR(2, 3, 6, 7, 10, 11)

C4 = ExOR(4, 5, 6, 7, 12)

C8 = ExOR(8, 9, 10, 11, 12)

Page 80: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Како су битови уписани са парном парношћу, резултат C1C2C4C8 = 0000 указује да до грешке није дошло.

Ако се деси да се приликом провере установи да је C1C2C4C8 ≠ 0000 тада се на основу четворобитног бинарног броја који формирају битови провере може установити где је грешка.

Page 81: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

Бит позиција

1 2 3 4 5 6 7 8 9 10 11 12

0 0 1 1 1 0 0 1 0 1 0 0 Нема грешке

1 0 1 1 1 0 0 1 0 1 0 0 Грешка у биту 1

0 0 1 1 0 0 0 1 0 1 0 0 Грешка у биту 5

Page 82: Кодирање, детекција и корекција грешака

Детекција и корекција грешака

C8 C4 C2 C1 коментар

0 0 0 0 Грешка не постоји

0 0 0 1 Грешка на бит позицији 1

0 1 0 1 Грешка на бит позицији 5