Желі қателерді табу жане дұрыстау алгоритмдері

Автор работы: Пользователь скрыл имя, 24 Ноября 2013 в 19:56, курсовая работа

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

Өзектілігі:Циклдық артық код бойынша таралған қатерлердің келесідей категорияларын табуды оңайлатады. Біріншіден, аппаратураның ақаулығы кейде bit-тердің белгілі бір топтарын зақымдауды тудырады. Мысалы, ақауға ұшыраған символ бойынша кіріс-шығыс құрылғысы әр символдың екі бірінші мәні 0 мәніне теңестіріп тастауы мүмкін. Мұндай қатерлерді кейде тік деп атайды, өйткені олар тік бағанда жол түріндегі символ bit-терінің ауыстыруы кезіңде оңай байқалады. Циклдық артық кодтар тік қатерлерді бақылау сомасына қарағанда жақсы байқайды.

Прикрепленные файлы: 1 файл

Курстық жұмыс Бостанов Бекбосын Аж 442 (Восстановлен).doc

— 1.39 Мб (Скачать документ)

                        

Дәл осы жолмен бес  разрядты Рид-Соломон кодының алфавитін  құрамыз:

p(β)=0

β52+1.

β5=-β2-1                                                      (4.9)

β52+1

Көрініп тұрғандай, β5 барлық төменгі ретті β-мүшелерінің қосындысы ретінде келтірілген. Сондықтан β-ның барлық дәрежелерін көрсетуге болады:

β65β=β3

β76β=β42

β87β=β32+1

β98β=β(β32+1)=β43

β109β=β(β43+β)=β4+1

β1110β=β(β4+1)=β2+β+1

β1211β=β(β2+β+1)=β32

β1312β=β(β32+β)=β432

β1413β=β(β432)=β432+1

β1514β=β(β432+1)=β432+β+1

β1615β=β(β432+β+1)=β43+β+1

β1716β=β(β43+β+1)=β4+β+1

β1817β=β(β4+β+1)=β+1

β1918β=β(β+1)=β2

     β2019β=β(β2+β)=β32                               (5)

β2120β=β(β32)=β43

β2221β=β(β43)=β42+1

β2322β=β(β42+1)=β32+β+1

β2423β=β(β32+β+1)=β432

β2524β=β(β432+β)=β43+1

β2625β=β(β43+1)=β42+β+1

β2726β=β(β42+β+1)=β3+β+1

β2827β=β(β3+β+1)=β42

β2928β=β(β42+β)=β3+1

β3029β=β(β3+1)=β4

β3130β=β(β4+β)=β22+1=1=β0

 

                        3-Кесте  Кодты алфавиттің символдары

 

Топ элементтері

Көпмүшелік түрінде

Вектор түрінде

0

-

00000

1

1

00001

Β

Х

00010

β2

Х2

00100

β3

Х3

01000

β4

Х4

10000

β5

Х2+1

00101

β6

Х3

01010

β7

Х42

10100

β8

Х32+1

01101

β9

Х43

11010

β10

Х4+1

10001

β11

Х2+Х+1

00111

β12

Х32

01110

β13

Х432

11100

β14

Х432+1

11101

β15

Х432+Х+1

11111

β16

Х43+Х+1

11011

β17

Х4+Х+1

10011

β18

Х+1

00011

β19

Х2

00110

β20

Х32

01100

β21

Х43

11000

β22

Х42+1

10101

β23

Х32+Х+1

01111

β24

Х432

11110

β25

Х43+1

11001

β26

Х42+Х+1

10111

β27

Х3+Х+1

01011

β28

Х42

10110

β29

Х3+1

01001

β30

Х4

10010


                          

 

Енді жасаушы көпмүшелікті табайық. Бұл көпмүшелік Рид- Соломон кодын  туғызады:

g(x)=(x+β)(x+β2)(x+β3)(x+β4)(x+β5)(x+β6)=[x2+βx+β2x+β3]ּ[x23x+β4x+β7][x25x+β6x+β11]=x610x59x424x316x224x+β21       (5.1)

 

Жасаушы көпмүшелік 2t=6 дәрежелі болғандықтан, бізде β-ның 2t тізбекті дәрежесі болуы керек. Олар көпмүшеліктің  түбірлері болып табылады.

 

           2.2 Кодтау

 

Рид- Соломон коды айналмалы болғандықтан, жүйелік түрдегі кодерлеу  екілік кодерлеу процедурасы сияқты.

Сонымен, хабар векторын полиноминалды  түрде келесідей жазуға болады:

J(x)=m0+m1x+m2x2+…+mk-1xk-1

Жүйелік түрде хабар символдары кодты сөздің бөлшегі ретінде  пайдаланылады. Біз хабар полиномын  кодты сөздің k шеткі оң разрядына  ығыстыра аламыз, содан кейін жұп биттерді n-k шеткі сол разрядтарына орналастырып қоса аламыз. Сондықтан біз J(x)-ны xn-k көбейткен кезде J(x)  оңға n-k позицияға ығысады. Ары қарай біз J(x)xn-k жасаушы көпмүшелікке g(x) бөлеміз:

                                                                                                        (5.2)

мұндағы q(x)- көпмүшелікті бөлудің  бүтін бөлігі,

      r(x)- көпмүшелікті  бөлудің қалдығы, қалдық жұп  болады.

r(x)- ті (2.3) теңдеудің екі жағына  да қосқан кезде және модуль  екі бойынша қосқанда:

U(x)=q(x)g(x)=r(x)+xk-1J(x)

Кодты сөздің нәтижелік полиномын  келесі түрде жазуға болады:

U(x)=r(x)+xn-kJ(x)

Осы айтылғандарды ескеріп, кез-келген хабар көпмүшелігін кодтайық.

Хабар келесі көпмүшелік түрінде берілсін

J(x)=β3х37х220x+β17.

Оны х6- ке көбейту арқылы комбинациямызды n-k=6 оңға ығыстырамыз.

Х6J(x)=β3x97x820x717x6.

Шыққан нәтижені g(x) модулі бойынша  бөлеміз. Қосу және көбейту амалдары 2.2- ші кесте мен 2.3- ші кесте көмегімен  орындалады.

 

b7х163х157х148х1320х1211x1120x10+b8х9+b2х7+b30х6

b7х1617х1516х1410х1323х120x1128x10

       β16х1523х1420х1318х1219x119x10+b8х9+b2х7+b30х6                                           b16х1526х1425х139х12+βх119x106x9

β21х1422х1325х122x11+0+b11х9+b2х7+b30х6                                                                                                 β21х140х1330х1214х116x1014x911x8

        β7х1327х1225x11+b6х10+b9х9+b11х8+b2х7+b30х6                                                  β7х1317х1216х110х1023x90x828х7

                   β21х12+βx11+b27х10+b22х9+b19х8+b30х7+b30х6                                                            β21х120х1130х1014x96x814х7+b11х6

β18 x11+b25х10+b3х9+b20х8+b23х7+b22х6                         β18х1128х1027x911x83х7+b11х6+b8х5

b23х10+b18х9+b27х8+b11х7+b30х6+b8х5              β23х102х91x816x78х6+b16х5+b15х4

                              b11х9+b29х8+b13х7+b15х6+b28х5+b15х4     

β11х921х820x74x627х5+b4х4+b1х3

b10х8+b4х7+b23х6+b14х5+b23х4+b1х3

 β10х820х719x63x526х4+b3х3+b0х2

           b13х7+b29х6+b22х5+b21х4+b6х3+b0х2                                                                   (5.3)

         β13х723х622x56x429х3+b6х2+b3х

              

Нәтижеде көпмүшелікті бөлу- келесідей  қалдық береді:

r(x)= β29х52x48x316х2+b19х+b9

Осыдан код сөзінің  көпмүшелігін келесідей жазуға болады:

U(x)= b7х163х157х148х1320х1211x1120x10+b8х9+b2х7+b30х629х52x4                     +β8x316х2 +b19х+b9

Жасаушы көпмүшелік g(x) түбірлері- g(x) өндіретін код сөзінің де түбірлері  болуы керек. Өйткені:

U(β)=J(x)g(x)

Осыдан, жасаушы көпмүшеліктің  түбірлері арқылы өрнектелетін код  сөзі нәтижеде нуль болуы тиіс. Яғни:

U(β)=U(β2)=U(β3)=U(β4)=0

Осыны есептеп көрсек:

U(β)= β737820112082+ β30292816199=0

U(β2)= β14614169229164+ β29294161718=0  

U(β3)= β21921242922924+β6+ β2827624172627=0

U(β4)= β28122811813181+β8+ β2729812145=0

                                                                                                                            (5.4)

 

Яғни жоғарыда айтылғандай жасаушы  көпмүшеліктің кез- келген түбірі арқылы өрнектелген код сөзі нуль болады.

 

2.3 Декодтау

 

Рид- Соломон кодын декодерлеу айналмалы  кодтарды декодерлеу сияқты жүргізіледі.

Жоғарыда біз хабарды жүйелік  түрде кодерлеп, нәтижесінде U(x) код  сөзі көпмүшелігін алғанбыз. Енді кодерлеу кезінде бұл хабар бұрмаланып, үш символ қате болып қабылданды делік. Қате комбинацияны келесі түрде жазуға болады:

                          (5.5)

 

Үш символды қате мына түрде берілсін:

 

e(x)=0+β7x+βx2+0x311 x4+0x5+0x6+0x7+0x8+0x9+0х10+0х11+0х12

+0х13+0х14+0х15+0х16==(00000)+(10100)х+(00010)х2+(00000)х3+(00111)х4

+(00000)х5+(00000)х6+(00000)x7+ (00000)x8+(00000)x9

Бұл жағдайда бұрмаланған  код сөзінің қабылданған көпмүшелігі r(x)- жіберілген код сөзі көпмүшелігі U(x) және қате комбинация көпмүшелігінің  e(x) қосындысы түрінде беріледі:

                              r(x)=U(x)+e(x).

       яғни қабылданған комбинация келесідей болады:

r(x)= b7х163х157х148х1320х1211x1120x10+b8х9+b2х7+b30х629х518x4

                +β8x325х2 +b30х+b9                                                      (5.6)

Екілік емес декодтау мен екілік декодтаудың арасындағы ерекшелікті айтып кетейік: екілік декодтау кезінде декодер тек  қана қатенің орналасқан жерін ғана білуі керек. Сосын, 1-ді 0-ге, 0-ді 1-ге ауыстырып қояды. Ал, екілік емес декодтауда қатенің орнын ғана емес, сондай-ақ осы позицияда орналасқан символдың дұрыс мәнін табу керек.

2.4 Программа интерфейсі

 

Delphi 7 ортасында құрылған  программанының жұмыс істеу принципі  келесідей. Программада көрсетілгендей  берілген бір мәтіннің бір блогының шифрлауын қарастырайық. Берілген блок 16 символдан тұрады. Олар төрт-төрттен әр сублокқа бөлінеді. Әр субблок бір сөзге w тең.

«Devide» батырмасын басып, алгоритмде қарастырылатын амалдардың барлығы дерлік екілік санау жүейсінде орындалатын болғандықтан, біз берілген блокты екілік санау жүйесіндегі субблоктарға бөлеміз.  Келесі әрекет «KEYS» батырмасымен жүзеге асады. Бұл батырма RC6 алгоритмінде қолданылатын барлық 43 ішкікілттердің мәнін есептеп шығарады. 3-суретте программаның интерфейсі көрсетілген.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                   3-сурет Программаның интерфейсі

 

«Қадам 1» батырмасы  бастапқы субблоктардың мәнін кіріс  әрекеттерін орындап өзгертеді. Олар төмендегі тұрған жолдарға жазылады. Кіріс әрекеттеріне B = B + K0 mod 232, D = D + K1 mod 232 формулалары жатады.

Одан кейін, кіріс әрекеттері орындалып болғаннан кейін 1- раундта орындалатын амалдардың жүзеге асырылуы басталады. Бұны біз «Қадам 2» батырмасын басу арқылы орындаймыз. Бұл батырма бірден 20 раундтың әрекеттерін орындап, сублоктардың мәндерін есептейді де одан төмен тұрған жолдарға түсіреді. 

«Қадам 3» батырмасы 20 раундтың нәтижесінде шыққан субблокттардың мәндеріне шығыс әрекеттерін  орындайды. Шығыс әрекеттеріне A = A + K42 mod 232, C = C + K43 mod 232 формулалары жатады. 4-суретте программадағы субблоктардың ағымды мәндері көрсетілген.

 


 

 

 

 

 

 

4-сурет Программадағы субблоктардың ағымды мәндері

 

Программаның орындалуының соңғы қадамы «Нәтижесі» батырмасымен аяқталады. Шығыс әрекеттерімен  орындалған қадамның нәтижесінде шыққан 4 субблок соңғы нәтиже болып табылады. «Нәтижесі» батырмасын басу арқылы біз осы мәндердің екілік санау жүйесіндегі өлшемдерін ASCII кодасына ауыстыру арқылы шифрланған блоктың символдар тізбегін немесе сөздерін аламыз.

 

 

 

Информация о работе Желі қателерді табу жане дұрыстау алгоритмдері