Kodiranje, detekcija i korekcija grešaka

Download Report

Transcript Kodiranje, detekcija i korekcija grešaka

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

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

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

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

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

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

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

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

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

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

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

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

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

Последица: кодова.

постоји велики број

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

Нетежински (непондерисани).

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

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

t

.

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

d

3

t

3 

d

2

t

2 

d

1

t

1 

d

0

t

0

Тежински кодови  У случају када је

t

0 =2 0 =1 ,

t

1 =2 1 =2 ,

t

2 =2 2 =4 ,

t

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

Тежински кодови Декадна цифра 0 1 2 3 4 5 6 7 8 9 8421 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 7421 0000 0001 0010 0011 0100 0101 0110 1000 1001 1010 4221 0000 0001 0010 0011 1000 0111 1100 1101 1110 1111 842 1 0000 0111 0110 0101 0100 1011 1010 1001 1000 1111

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

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

Тежински кодови   Најчешће се користи BCD код.

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

децимални + 5 4 9 BCD 0101 + 0100 1001

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

додавањем декадни BCD + 8 6 14 1000 + 0110 1110 (14 није легални BCD број) + 0110 dodaje se 6 0001 0100

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

децимални 9 + 7 16 BCD 1001 + 0111 0001 0000 0110 0001 0110

Тежински кодови  Када је у питању одузимања, подешавање се врши одузимањем броја 6.

операција

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

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

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

Нетежински кодови децимални 0 1 2 3 4 5 6 7 8 9 вишак 3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

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

+ Децимални 8 6 14 Вишак 3 1011 1 0011 1001 0100 0011 0100 0111

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

децимални Вишак 3 + 5 3 8 + 1000 0110 1110 0011 одузима се 3 1011

Нетежински кодови  Код одузимања се подешавање врши додавањем броја три.

децимално 17 11 6 Вишак 3 0100 1010 0100 0100 0000 0110 + 0011 додаје се 3 1001

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

Нетежински кодови децимални 0 1 2 8 9 3 4 5 6 7 циклични 0000 0001 0011 0010 0110 0100 1100 1110 1010 1000

Нетежински кодови  Грејов код Још један тип цикличног кода је рефлективни код или Грејов код .

Једна од особина овог кода је да су, осим MS средњу тачку.

цифре све колоне рефлективне (симетричне) у односу на

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

Дек .

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Бин.

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Грејов 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000

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

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

Нетежински кодови  Ако је бинарна презентација децималног броја дата у облику

b

3

b

2

b

1

b

0 , тада се одговарајућа кодна реч из Грејовог кода, G 3 G 2 G 1 G 0 , одређује као G 3 =

b

3 G 2 =

b

3 G 1 =

b

2 G 0 =

b

1   

b b b

0 2 1

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

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

G 3 =

b

3 = 1; G 2 =

b

3 

b

2 = 1  0 = 1; G 1 =

b

2 

b

1 = 0  1 = 1; G 0 =

b

1 

b

0 = 1  1 = 0; Одговарајући Грејов код је 1110.

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

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

Одговор:

b

3 = G 3 = 1; G 2 =

b

3 

b

2 = 1 

b

2 еквивалент = 1 

b

2 = 0; G 1 =

b

2 

b

1 = 0 

b

1 G 0 =

b

1 

b

0 = 1 

b

0 = 1  = 0 

b b

0 1 = 1; = 1;

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

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

n

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

2

n

чворова при чему

n

-

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

n

-коцке потегом акко је између једнака 1.

су повезана Хемингова дистанца одговарајућих низова

Детекција грешака 0 10 1 11 1-коцка 2-коцка 00 01

Детекција грешака 100 101 110 111 3-коцка 000 001 010 011

Детекција грешака 1110 1010 1011 1111 1101 1100 1000 1001 4-коцка 0010 0110 0011 0111 0000 0100 0001 0101

Детекција грешака   У оквиру субкоцки

n

-коцке постоји више са по 2

m

чворова.

m

Код сваке од

m

-субкоцки

n

-

m

битова једног чвора има исту вредност, док осталих

m

битова представља једну од 2

m

бинарних комбинација.

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

n

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

Детекција грешака    Било који посматрати могућих

n

-тобитни код може се као подскуп

n

-тобитних низова.

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

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

не-

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

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

Детекција грешака  То значи да избор кодних речи из одговарајуће одговарају

n

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

Детекција грешака 100 000 101 001 110 010 111 011 Ако изаберемо да тробитни код чине кодне речи 000, 011, 100, 111, онда грешка на једној бит позицији може да промени кодну реч 100 у 000 или 110 па овај код не може детектовати све грешке.

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

100 Детекција грешака 101 111 110 Код парне парности 001 011 000 010

100 Детекција грешака 101 111 110 Код непарне парности 001 011 000 010

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

n

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

Тако добијамо (

n+

1) битни код за проверу парности:  Код парне парности.

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

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

Детекција грешака  Кодови

m

од

n

.

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

Овде све важеће кодне речи имају од којих је

m

увек постављено на 1.

n

битова

Детекција грешака  За представљање декадних цифара погодан је код 2 од 5 (C 5 2 ), јер има тачно 10 комбинација.

Детекција грешака децималн и 2 од 5 7 8 9 4 5 6 0 1 2 3 тежина 63210 01001 00011 00101 00110 01010 01100 10001 10010 10100 11000

Детекција грешака  Дводелни (

biquinary

) кодови.

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

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

1 од 2 , а други

Детекција грешака децимални 0 1 2 3 8 9 4 5 6 7 50 01 01 01 01 01 10 10 10 10 10 43210 00001 00010 00100 01000 10000 00001 00010 00100 01000 10000

Детекција грешака  Кодови са остатком Заснивају се на аритметици по модулу.

Остатак при дељењу броја

N

бројем

p

је

R

=

N

mod

p

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

N

0 1 2 3 4 5 6 7 8 9 10 Детекција грешака 2 0 1 0 1 0 1 0 1 0 1 0 Остатак по модулу 3 5 0 1 2 0 1 0 1 2 3 4 2 0 1 2 0 1 0 1 2 3 4 0 7 0 1 2 3 4 5 6 0 1 2 3

N

11 12 13 14 15 16 17 18 19 20 0 1 0 1 0 2 1 0 1 0 1 Остатак по модулу 3 5 2 0 1 2 0 1 2 3 4 0 1 2 0 1 2 1 2 3 4 0 2 3 4 5 6 7 4 5 6 0 1

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

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

се само

Детекција грешака 13 7 13 + 7 = 20    2 1 1 0 3 1 1 2 5 3 2 0 7 6 0 6 модуо остаци по модулу

Детекција грешака 9 8 9 + 8 = 17    2 1 0 1 3 0 2 2 5 4 3 2 7 2 модуо 1 остаци по модулу 3

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

Детекција и корекција грешака  Бергерови кодови – користе се за пројектовање логичких кола која могу да детектују сопствене грешке (

self-cheking circuits

).

Детекција и корекција грешака  Формирају се на следећи начин: 1.

2.

3.

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

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

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

Детекција и корекција грешака   Ако је у податку је

K

=  log 2 (

n

+1) 

n

битова, потребно битова провере.

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

K

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

n =

2

K

– 1.

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

n =

2

K

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

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

Детекција и корекција грешака Пример: Нека је

N

=101011 , тада је

K

=  log 2 (6+1)  = 3, па одговарајућа Бергерова кодна реч има 6+3=9 битова.

Детекција и корекција грешака Пример: Три бита провере одређују се на следећи начин: Број јединица у битовима податка = 4 Бинарни еквивалент од 4 Комплемент од 100 је 011 = 100 Кодна реч = 101011 011 Битови податка Битови провере

Детекција и корекција грешака  Ако у податку имамо 7 битова

N

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

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

Детекција и корекција грешака  Нека су два бита погрешна у оквиру податка 1011110 100 Битови податка Битови провере

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

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

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

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

100 Детекција и корекција грешака 101 111 110 Пример кода који има 1 информациони бита и два редудантна бита.

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

Ако се некодна речи.

појави реч грешка, је на растојању 2 од друге кодне 000 001 010 011

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

Да би кориговали да има растојање

x

грешака код мора 2

x

+1 .

Детекција и корекција грешака  Хемингови кодови .

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

Кодна реч се формира тако што се тобитном парности ( 2

k

податку ≥

n

+

k

додаје + 1 ).

k n

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

Детекција и корекција грешака   Опште правило за бит на позицији прескочи прескочи итд.

n n

−1 битова, провери битова, провери

n n n

: битова, битова Другим позицији речима, 2

p

бит парности проверава битове на оним позицијама које имају постављен бит у њиховој бинарној презентацији.

на

p

Детекција и корекција грешака  Примера ради, бит 13, тј. 1101 2 , проверавају битови 1000 2 = 8, 0100 2 = 4 и 0001 2 = 1.

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

Бит позиција Битови кодираног податка Покривање битова парности p1 p2 p3 p4 1 p1

X

2 p2

X

3 d1

X X

4 p3

X

5 d2

X

6 d3

X X X

7 d4

X X X

8 p4 9 d5

X X X

10 d6

X

11 d7

X X

12 d8

X X X X

Детекција и корекција грешака Пример: Одредити Хемингов код за 8-битну реч 1100 0100 Одговор: Сваки од битова парности рачуна се на следећи начин:

Детекција и корекција грешака P 1 =ExOR(3, 5, 7, 9, 11) = 1  1  0  0  0 = 0 P 2 =ExOR(3, 6, 7, 10, 11) = 1  0  0  1  0 = 0 P 4 =ExOR(5, 6, 7, 12) = 1  0  0  0 = 1 P 8 =ExOR(9, 10, 11, 12) = 0  1  0  0 = 1

Детекција и корекција грешака  Заменом вредности за P P 8 1 , P 2 , P 4 и добијамо следећу 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

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

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

Детекција и корекција грешака  Сва четири бита проверавају се на следећи начин: C C 2 C 4 C 8 1 = ExOR(1, 3, 5, 7, 9, 11) = ExOR(2, 3, 6, 7, 10, 11) = ExOR(4, 5, 6, 7, 12) = ExOR(8, 9, 10, 11, 12)

Детекција и корекција грешака   Како су битови уписани са парном парношћу, резултат C 1 C 2 C 4 C 8 = 0000 указује да до грешке није дошло.

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

Детекција и корекција грешака Бит позиција 1 0 1 0 2 3 0 0 0 1 1 1 4 5 6 1 1 1 1 1 0 0 0 0 7 8 9 10 11 12 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 Нема грешке Грешка у биту 1 Грешка у биту 5

Детекција и корекција грешака C 8 0 0 0 C 4 0 0 1 C 2 0 0 0 C 1 0 1 1 коментар Грешка не постоји Грешка на бит позицији 1 Грешка на бит позицији 5