VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS ZABEZPEČENÍ PŘENOSU DAT OBECNÝMI LINEÁRNÍMI BLOKOVÝMI KÓDY DATA TRANSMITION SECURITY WITH GENERAL LINEAR BLOCK CODES BAKALÁŘSKÁ PRÁCE BACHELOR'S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR PETR DZURENDA doc. Ing. KAREL NĚMEC, CSc. BRNO 2
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Ústav telekomunikací Bakalářská ráce bakalářský studijní obor Teleinformatika Student Petr Dzurenda ID 642 Ročník 3 Akademický rok 29/2 NÁZEV TÉMATU Zabezečení řenosu dat obecnými lineárními blokovými kódy POKYNY PRO VYPRACOVÁNÍ Navrhněte obecný lineární blokový kód, který zabezečí řenos dat roti t = 3 nezávislým chybám, ři informační rychlosti R?,5. Pro tento kód vyracujte odrobný návrh realizace kodeku tohoto kódu. V návrhu realizace využijte skutečnost, že rotichybový kodek bude součástí rotichybového kódového systému. Ověřte funkční schonost tohoto kodeku metodou, kterou ovažujete ro tento návrh za nejvhodnější. DOPORUČENÁ LITERATURA [] LEE,L.H.CH. Error-Control Block Codes for Communications Engineers. Artech House, Boston,London, ISBN -5853-32-X. [2] HOUGHTON,A. Error Coding for Engineers. Kluwer academic Publishers, Boston, Dordrecht, London. 2. [3] ADÁMEK,J. Kódování. Nakladatelství technické literatury, Praha 989. Termín zadání 29..2 Termín odevzdání 2.6.2 Vedoucí ráce doc. Ing. Karel Němec, CSc. rof. Ing. Kamil Vrba, CSc. Předseda oborové rady UPOZORNĚNÍ Autor bakalářské ráce nesmí ři vytváření bakalářské ráce orušit autorská ráva třetích osob, zejména nesmí zasahovat nedovoleným zůsobem do cizích autorských ráv osobnostních a musí si být lně vědom následků orušení ustanovení a následujících autorského zákona č. 2/2 Sb., včetně možných trestněrávních důsledků vylývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č.4/29 Sb.
ANOTACE Práce se v úvodu zabývá roblematikou základních vlastností obecných lineárních blokových kódů, konkrétně ak vytvářením generující a kontrolní matice a zůsoby dekódování obecných lineárních blokových kódů, načež jsou tyto teoretické oznatky ulatněny v další části bakalářské ráce a to návrhu kódu a realizace kodeku. Další část ráce je zaměřena na konkrétní návrh obecného lineárního blokového kódu slňujícího ožadavky kladené zadáním. V této kaitole lze najít zůsob vytváření generující matice kódu schoného oravit tři nezávislé chyby, dále vytváření kontrolní matice ro dekódování a korekční obvod schoný tyto chyby oravit. Součástí je také ois vytvořených rogramů. Na konci kaitoly je uveden říklad kódování a dekódování vytvořeného kódu. Navazující částí je realizace kodeku, kde je odrobně osán zůsob vytvoření kodéru a dekodéru lineárního blokového kódu a v následující navazující části je tento kodek odsymulován v rogramu Matlab Simulink. V oslední části jsou za omoci rogramu Eagle vytvořeny desky lošných sojů ro kodér a dekodér. KLÍČOVÁ SLOVA Lineární blokový kód, zabezečovací kód, zabezečení dat, samooravný kód, kodér, dekodér ABSTRACT This work deals with roblematic basic characteristic common linear block codes, concretely with creation generating and controlling matrix and individual ways decoding common linear block codes and then are theoretic knowledge used in the next art bachelor s thesis. Next art this work is bent on the concrete layout of common liner block code satisfactory secifications by submission. In this art it can by find way haw create generating matrix be able to correcting tree single errors then create control matrix for decoding and correct network for correcting errors. Programs are used in this work are exlained there. In the end this art is examle of coding and decoding. Lastly work is realization codec. In this art is descrition of coder and decoder realizations. This codec is simulating by rogram Matlab Simulink in art five. In last art are create boards of rinted circuits by rogram Eagle for coder and decoder. KEYWORDS Linear block code, reventive code, data security, error-correcting code, coder, decoder
DZURENDA, P. Zabezečení řenosu dat obecnými lineárními blokovými kódy. Brno Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, 2. 52 s. Vedoucí semestrální ráce doc. Ing. Karel Němec, CSc.
PROHLÁŠENÍ Prohlašuji, že svou bakalářskou ráci na téma Zabezečení řenosu dat obecnými lineárními blokovými kódy jsem vyracoval samostatně od vedením vedoucího bakalářské ráce a s oužitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v ráci a uvedeny v seznamu literatury na konci ráce. Jako autor uvedené bakalářské ráce dále rohlašuji, že v souvislosti s vytvořením této bakalářské ráce jsem neorušil autorská ráva třetích osob, zejména jsem nezasáhl nedovoleným zůsobem do cizích autorských ráv osobnostních a jsem si lně vědom následků orušení ustanovení a následujících autorského zákona č. 2/2 Sb., včetně možných trestněrávních důsledků vylývajících z ustanovení 52 trestního zákona č. 4/96 Sb. V Brně dne (odis autora)
PODĚKOVÁNÍ Děkuji vedoucímu ráce doc. Ing. Karlu Němcovi, CSc. za velmi užitečnou metodickou omoc a cenné rady ři zracování bakalářské ráce. V Brně dne (odis autora)
OBSAH Seznam obrázků Seznam tabulek ix x ÚVOD Zabezečovací kódy 2. Rozdělení zabezečovacích kódů. 2.. Blokové kódy. 2..2 Konvoluční kódy.. 4 2 Zabezečení lineárním blokovým kódem 5 2. Pojmy a zůsoby zjišťování jejich vlastností.. 5 2.2 Vytvářecí matice 7 2.3 Kontrolní matice 8 2.4 Detekce chyb. 2.5 Korekce chyb 2.5. Standardní dekódování.. 2 2.5.2 Dekódování omocí syndromu.. 3 3 Návrh obecného lineárního blokového kódu 5 3. Generující matice 5 3.2 Kontrolní matice. 2 3.3 Korekce chyb 2 3.4 Kódování a dekódování.. 22 4 Realizace kodeku 25 4. Kodér 25 4.2 Dekodér 26 4.3 Převodník [S] [E] 28 4.4 Řídící obvod.. 3 5 Ověření funkčnosti 33 6 Návrh lošného soje 36 vii
7 Závěr 4 Literatura 4 Seznam symbolů, veličin a zkratek 42 viii
SEZNAM OBRÁZKŮ Obr.. Základní rozdělení zabezečovacích kódů.. 2 Obr..2 Princi zabezečení blokovým kódem.. 3 Obr..3 Princi zabezečení konvolučním kódem 4 Obr. 2. Standardní ole (Sleianovo standardní rozdělení).. 2 Obr. 3. Vývojový diagram rogramu ro vytvoření generující matice.. 8 Obr. 3.2 Výběr vyhovující generující matice. 9 Obr. 3.3 Výis výsledků z rogramu rog_generujici_matice.c. 9 Obr. 3.4 Některé možné chyby a) jedna chyba, b) dvě chyby, c) tři chyby 22 Obr. 4. Zaojení kodéru obecného lineárního blokového kódu (22;). 26 Obr. 4.2 Zaojení dekodéru obecného lineárního blokového kódu (22;) 27 Obr. 4.3 Vývojový diagram rogramu řevodníku [S] [E]. 29 Obr. 4.4 Komrimace matice vhodná ro mikrokontroler.. 3 Obr. 4.5 Zaojení a růběhy řídícího obvodu a) kodéru, b) dekodéru.. 3 Obr. 5. Zaojení kodéru v rogramu Matlab Simulink.. 33 Obr. 5.2 Zaojení dekodéru v rogramu Matlab Simulink. 34 Obr. 5.3 Blokové zaojení kodeku v rogramu Matlab Simulink 34 Obr. 5.4 Určení chybového slova v rogramu Freescale CodeWarrior 35 Obr. 6. Zaojení kodéru lineárního blokového kódu (22;) část řídící 36 Obr. 6.2 Zaojení kodéru lineárního blokového kódu (22;) kódovací část 37 Obr. 6.3 Zaojení dekodéru lineárního blokového kódu (22;) část řídící.. 38 Obr. 6.4 Zaojení dekodéru lineárního blokového kódu (22;) dekódovací část. 38 Obr. 6.5 Zaojení dekodéru lineárního blokového kódu (22;) korekční část 39 ix
SEZNAM TABULEK Tab. 2. Standardní tabulka ro oravu jedné chyby kódu (5 ; 2).. 3 Tab. 2.2 Dekódovací syndromová tabulka ro kód (7 ; 3).. 3 Tab. 3. Tabulka korekce chybně řijatých slov.. 24 Tab. 4. Tabulka zabezečovacích rvků. 25 Tab. 4.2 Tabulka rvků syndromů 26 x
ÚVOD Koncem 9. a začátkem 2. století se řenos dat stal samozřejmostí, ať už se jedná o řenos informaci řes internet, mobilní či satelitní řenos nebo jiné formy řenosu. Ze strany uživatelů, jsou ak stále více kladeny ožadavky na zkvalitnění oskytovaných služeb. Za tímto účelem vznikla teorie kódování, která se zabývá zakódováním informace za určitým cílem. Jedním z hlavních cílů kódování je rychlost řenosu dat, jehož se dosahuje komrimací sočívající v odstranění nadbytečnosti (redundance) a zbytečnosti (irelevance). Dalším z hlavních cílů kódování je utajení řenášené informace z důvodu odoslechu třetích stran nař. internetové bankovnictví. V neoslední řadě je v řenosu dat vyžadován bezchybný řenos, jelikož u reálných řenosových zařízení dochází k rušení, ať už se jedná o metalické či otické kabely nebo o radiový řenos, kde je toto rušení největší. Působením tohoto rušení dochází k znehodnocení informace, která je tudíž ro uživatele bezcenná. Aby se tomuto jevu ředešlo, vznikly tzv. rotichybové kódy. Teorie kódování vznikla reakcí na Shannonova díla [7] z roku 948, zabývající se touto teorií informačního řenosu. Od té doby vzniklo mnoho různých kódů, jako jsou blokové a konvoluční kódy. Bakalářská ráce se zaobírá rozebráním základních oznatků o lineárních blokových kódech, které jsou obsaženy v kaitole jedna a dvě. Další kaitola řeší již konkrétní návrh obecného lineárního blokového kódů schoného oravit tři nezávislé chyby ři informační rychlosti R,5. Kaitola čtvrtá se zaobírá realizací kodeku navrženého kódu. V áté kaitole je ověřena funkční schonost navrženého kodeku a v oslední kaitole je uvedeno zaojení desek lošných sojů.
ZABEZPEČOVACÍ KÓDY Z hlediska řenosu dat se klade velký důraz na bezchybný řenos, jelikož oškozená informace nemá ro říjemce žádnou hodnotu. Během řenosu informace dochází k vzniku chyb, které jsou zůsobeny šumem. Pro zajištění bezchybného řenosu se oužívají tzv. zabezečovací kódy, jejichž úkolem je detekovat a oravit vzniklé chyby. Zavedením zabezečovacího kódu se zvýší redundance, což není říliš žádoucí, avšak dosáhne se zabezečení řenášené informace, které je ro uživatele mnohem důležitější.. Rozdělení zabezečovacích kódů Zabezečovací kódy se rozdělují do dvou skuin [6], a to na blokové a konvoluční (stromové). Tento zůsob dělení sočívá na zůsobu realizace zabezečovacího rocesu. Jednotlivé skuiny se, dále rozdělují na další odskuiny viz obr... Protože lineární blokové kódy sadají do skuiny blokových kódů, nikoli konvolučních, tak se další dělení konvolučních kódů v této bakalářské ráci neuvádí. Obr.. Základní rozdělení zabezečovacích kódů.. Blokové kódy Blokové kódy jsou secifické tím, že racují s tzv. bloky [5]. Blokem se rozumí úsek oddělený od celkové oslounosti signálových rvků. Jednotlivé úseky se nazývají kódová slova (kódová kombinace) a mají evnou délku. Princi zabezečení blokovým kódem vylývá z obr..2. Na vstu kodéru se řivede olynom nezabezečené zrávy P(x) obsahující k bitů. Tyto bity se v kodéru zabezečí a na výstuu se odesílá olynom zabezečené zrávy F(x). Tato zráva je složena z n bitů, stávající se z ůvodních k bitů a r bitů zabezečovacích. Dále se lze setkat s olynomem řenesené zrávy J (x), což je řenášená zabezečená zráva vstuující do dekodéru. 2
Jelikož kodér blokových kódů neobsahuje aměť zabezečovacího rocesu, tak kódování vstuního úseku je nezávislé na kódování ředchozího úseku. Obr..2 Princi zabezečení blokovým kódem Blokové kódy se rozdělují do dvou následujících skuin [4] Systematické Jak již z názvu vylývá, ulatňuje se zde určitý systém, konkrétně se jedná o rozdělení informačních a zabezečovacích míst. Je-li olynom zabezečené zrávy tvořen n bity, lze jej rozdělit na k informačních bitů a r zabezečovacích, kde r n k. Tento kód se zaisuje ( n ; k). Systematické kódy se dále dělí na - Lineární Základní myšlenkou je odvození libovolné kódové kombinace za omoci lineární kombinace z ostatních kódových kombinací. Je to dáno zavedením algebraických oerací sčítání a násobení. Lineární blokové kódy se dále dělí na další odskuiny, jejichž některé říklady jsou znázorněny na obr.., - Nelineární Jedná se o všechny systematické kódy, které nemají vlastnosti lineárních kódů. Nesystematické Na rozdíl od systematických kódů se zde nerozděluje kódová kombinace na informační a zabezečovací část. Zabezečení sočívá v umístění nul a jedniček v kódové kombinaci. Tyto kódy se dále dělí na - Kódy s vnitřním zákonem Jednotlivé kódové kombinace se sestavují odle různých ředem definovaných ravidel nař. tzv. Izokódy (každá kódová kombinace obsahuje stejný očet nul a jedniček), Bergerův kód (dvojkový kód) či Reed-Müllerův kód (oravující t násobné chyby). - Kódy bez vnitřního zákona Jsou to takové kódy, u kterých lze srávnost kódové kombinace ověřit jen za omoci dekódovací tabulky. 3
..2 Konvoluční kódy Název konvolučních (stromových) kódů [5] je dán zůsobem kódovacího rocesu, ro jehož vyjádření se nejčastěji využívá graf tyu strom. Princi kodéru konvolučních kódů sočívá na řiřazení zabezečených znaků ke k informačním znakům, n řičemž nezáleží jen na konkrétní k -tici rvků na vstuu, ale i na několika k -tic ředchozích. Tento jev je dán tím, že konvoluční kodér na rozdíl od blokového obsahuje aměť zabezečovacího rocesu, která obsahuje m -násobek k bitů. Z této aměti a vstuní aměti se v bloku realizace zabezečení vytvoří zabezečená oslounost, tvořená úseky zabezečené zrávy n, jak lze vidět na obr..3. Další dělení konvolučních kódů zde není uvedeno, jelikož to není ředmětem této bakalářské ráce. Obr..3 Princi zabezečení konvolučním kódem 4
2 ZABEZPEČENÍ LINEÁRNÍM BLOKOVÝM KÓDEM Z oisu a rozboru uvedeném v kaitole jedna, vylývá, že lineární blokové kódy jsou odskuinou systematických kódů, což znamená, že obsahují k informačních a r zabezečovacích bitů a zaisují je jako kódy ( n ; k). V raxi jsou oužívány dva základní zůsoby zadávání lineárních blokových kódů [4] - Pomocí vytvářecí matice [G] Tento zůsob využívají všechny lineární blokové kódy a jimi se také bude zabývat tato kaitola. - Pomocí vytvářecího mnohočlenu G(x) Tento zůsob využívají cyklické kódy, tvořící odskuinu lineárních kódů. 2. Pojmy a zůsoby zjišťování jejich vlastností V této kaitole jsou uvedeny ouze některé ojmy lineárních blokových kódů [8] související s touto bakalářskou rací a ro leší orozumění ojmů jsou uvedeny i zůsoby zjištění jednotlivých vlastností. Hammingova vzdálenost Je celkový očet odlišných znaků dvou a více slov. Hammingova vzdálenost se označuje d. Jsou-li dána dvě slova 2 n a f f2 f n, tak Hammingova vzdálenost je očet odlišných znaků těchto slov. d 3 27 f f 2 f7 Nejmenší Hammingova vzdálenost Je nejmenší Hammningova vzdálenost ze všech Hammnigových vzdáleností mezi jednotlivými kódovými slovy. Nejmenší Hammningovu vzdálenost se označuje d min. g = d 4, d 3 2 2 3 g = d 5 d min{ d} 3 g 3 = 23 min Hammingova váha Je očet nenulových znaků v kódovém slově. Hammingova váha se značí w. w 4 5
Detekční schonost kódu Schonost kódu najít (detekovat) chybu. Je-li dán kód s d, ak je tento kód schoen najít t chyb. Platí, že min min d d d t. (2.) Korekční schonost kódu Schonost kódu oravit chybu. Je-li dán kód s d min, ak je schoen oravit rávě chyb. Platí, že t k d 2 t. (2.2) min k Detekční a korekční schonost kódu Schonost kódu najít (detekovat) a oravit chybu. Je-li dán kód s d min, ak je tento kód schoen detekovat td a oravit tk chyb. Platí, že d t d t. (2.3) min k Plotkinova hranice Používá se k zjištění minimální otřebné délky slova, za otřebné detekční nebo korekční schonosti kódu. Pro lineární blokové kódy latí n k r, (2.4) kde n se vyočte dle vztahu n F d min. (2.5) F Pro binární kód je F 2, tudíž uravený vztah má tvar n 2 d. (2.6) min Počet zabezečovacích znaků je dán rovnicí F d min r ( log F d min ), (2.7) F kde o úravě oět vzniká vztah ro binární kód r d log d 2. (2.8) 2 min 2 min Lze se setkat i s jinými zůsoby určení generující matice s otřebnou detekční či korekční schoností nař. Hammingova hranice nebo Gilbertova hranice [2]. 6
2.2 Vytvářecí matice Na vstu kodéru je řivedena sekvence k znaků tzv. informačních. Tyto znaky jsou označeny vektorem [ P] [ 2 k ]. Kodér zabezečí informační bity omocí redundantních zabezečovacích r bitů a na jeho výstuu je vyslán vektor F] [ f f f ]. [ 2 n U lineárních blokových kódů mohou nastat dva extrémní říady ) Je-li k, ak nedochází k řenášení informace. 2) Je-li k n, ak dochází k tomu, že kódové slovo neobsahuje redundanci a tudíž není možné informaci zabezečit. Jedna chyba je řenesena z jednoho kódového slova na druhé a tudíž ji není možné detekovat. Lineární blokové kódy jsou definovány G G. Pak je výstuní vektor dán rovnicí 2 G k k lineárně nezávislými kódovými slovy F G 2G2 k Gk kgk. (2.9) Naíší-li se tyto kódová slova od sebe, vznikne generující matice [G], stávající se z k řádků a n slouců, řičemž žádný řádek není lineární kombinací ostatních. Generující matice má tvar G g G2 g [ G] Gk g k 2 g g g 2 22 k 2 g n g g 2n kn, (2.) kde g i, gi2 gin jsou q -rozměrné symboly, latí i k. Každá vytvářecí matice musí slňovat následující body [3] - jednotlivé řádky jsou tvořeny kódovými slovy, - kódová slova jsou lineární kombinací řádků, - jednotlivé řádky nejsou lineárně závislé. Je-li dána vytvářecí matice [G], ak lze omocí ní zabezečit říchozí zrávu. Zabezečení se rovádí tak, že z celkové nezabezečené zrávy se vybere k bitů, označených jako vektor nezabezečené zrávy [P]. Tento vektor se vynásobí vytvářecí maticí a tím vznikne vektor zabezečené zrávy [F]. Platí rovnice [ F] [ P] [ G], (2.) 7
které odovída záis g g2 g n g g g 2 22 2n. (2.2) g k g k 2 g kn k 2 f f 2 f n Pro zakódování dat lineárním blokovým kódem je důležité, aby byla generující matice [G] v systematickém tvaru G E B, (2.3) kde E je jednotková matice k -tého řádu. Pokud tak není, může se každý lineární kód, který není systematický na systematický řevést omocí ermutace jednotlivých znaků v kódovém slově [], [3]. [ G ] [ G ] [ G ] [ E B] 2.3 Kontrolní matice Pomocí matice [G] z kaitoly 2.2 jsou data zakódována a tím je získán vektor zabezečené zrávy [F], který byl vyslán na telekomunikační kanál. Na straně říjemce je otřeba zkontrolovat bezchybnost řenosu a rávě za tímto účelem se oužívá tzv. kontrolní matice [H ]. Tato matice obsahuje r řádků a n slouců. Pro transonovanou kontrolní matici latí vztahy T [ G ] [ H ], (2.4) T [ F] [ H ], (2.5) kde H T je transonovaná matice H. Jsou-li tyto dvě odmínky slněny, ak se jedná o kontrolní matici lineárního blokového kódu. Kontrolní matice je odvozena od generující matice a má tvar 8
rn r r n n r h h h h h h h h h H H H H ] [ 2 2 22 2 2 2, (2.6) in i i h h h,,, 2 jsou q -rozměrné symboly, latí r i. Pro vytvoření kontrolní matice, je důležité, aby byla generující matice v systematickém tvaru []. Není-li tomu tak, je otřeba danou matici uravit viz. ředchozí kaitola. Získáním systematické matice vzniká matice skládající se ze dvou odmatic - Podmatice E Jedná se o jednotkovou matici (informační matici), která je dána jedničkami vyskytujícími se ouze v hlavní diagonále. Tato matice má rozměr k k. - Podmatice B Jedná se o tzv. zabezečovací odmatici, která má k řádků a r slouců. Pomocí těchto dvou odmatic se sestaví kontrolní matice, která se bude také skládat ze dvou odmatic. Matice bude ve tvaru [H ] [H ] ] [ ] [ E B H T, (2.7) kde jednotlivé matice jsou - Podmatice T B Jedná se o transonovanou odmatici B, tudíž se stává z r řádků a k slouců. - Podmatice E Jedná se oět o jednotkovou matici, tentokrát má však rozměr r r.[][4] Jeli tedy dána generující matice. ] [ 2 2 22 2 2 nař G kr k k r r, otom má kontrolní matice tvar. ] [ 2 2 22 2 2 nař H kr r r k k. 9
2.4 Detekce chyb Během řenosu informace telekomunikačním kanálem může dojít k vzniku chyby, tj. vyšle-li se zabezečený vektor [F] a řijme-li se vektor [J ], vzniká chybový vektor [E] daný jejich rozdílem. Platí tedy, že okud se řičte k vyslanému slovu chybový vektor, vzniká řijaté slovo. Platí tedy rovnice [ J ] [ F] [ E]. (2.8) Z uvedeného vylývá, že jedničky obsažené v chybovém vektoru znamenají chybu. Pro lineární blokové kódy latí, že minimální Hammingova vzdálenost je rovna minimální Hammningově váze nenulového kódového slova. Pak lineární blokové kódy oravují t -násobné chyby, když všechna kódová slova mají minimální Hammingovu váhu větší než t. K detekci chyb se oužívá tzv. syndrom. Syndrom se označuje jako [S] a je určen omocí kontrolní matice [H ]. Princi sočívá v tom, že se řijaté slovo vynásobí inverzní kontrolní maticí a výsledným součinem je vektor, který se nazývá syndrom. Platí tedy že T [ S] [ J ] [ H ]. (2.9) Je-li syndrom nulový, ak se ředokládá, že došlo k bezchybnému řenosu, viz níže. [ ] [ ] Toto ravidlo ovšem není % -ní! Platí ravidlo, že chybové slovo nesmí být stejné jako slovo kódové. Pokud to nastane, ak chybu nelze najít. Příklad Je vyslané slovo [ F] [ ]. Během řenosu vznikne vlivem šumu chybové slovo [ E] [ ], které je zároveň kódovým slovem. Na vstuu dekodéru se tedy řijme slovo, které je součtem těchto dvou slov. Přijaté slovo není ale, tudíž evidentně došlo k chybě.
[ ] [ ]. Je vidět, že i řesto, že došlo k chybnému řenosu je syndrom nulový a tudíž by se mělo jednat o bezchybný řenos. V říadě, že syndrom není nulový tj. [ S ], dochází k chybě vždy. [ ] [ ]. Z uvedeného vylývá, že došlo k chybě řenosu zrávy. Detekční kódy jsou schony ouze chybu detekovat. Vyjde-li u nich syndrom nenulový, ak nedochází k oravě, ale k žádosti o oětovné vyslání daného slova [3]. 2.5 Korekce chyb Při oravování chyb lze stejně jako v říadě objevování chyb zjistit jaký druh chyby daný dekodér dokáže oravit. Dekódováním se rozumí ředis řiřazující kódové slovo ([F]) řijatému slovu [J ]. Aby došlo k srávnému dekódování musí latit, že dojde-li k ovlivnění vyslaného slova [F] chybovým slovem [E], ak ([ F] [ E]) [ J ]. (2.2) Je-li tato odmínka slněna, ak ři dekódování lineární blokový kód oravuje řijatá slova. Rozlišují se základní dva druhy dekódování [], [3] a to standardní a syndromové.
2.5. Standardní dekódování Standardní dekódování [3] se rovádí omocí tzv. standardního ole lineárního blokového kódu nebo také Sleianovo standardní rozmístění viz. obr. 2.. Obr. 2. Standardní ole (Sleianovo standardní rozdělení) Jedná se o tabulku, kde jednotlivé řádky jsou třídy a na rvní ozici každého řádku je tzv. rerezentant třídy, což je vybrané slovo s nejmenší Hammingovou váhou. Princi n k sočívá ve vytvoření tohoto standardního ole, které má q k řádků a q slouců. U binárních kódů se za q dosazuje dvojka. V dalším kroku se vylní otřebné hodnoty. Rerezentant rvní třídy je vždy jelikož se jedná o slovo s nejnižší váhou. Za tímto slovem následují kódová slova. Na druhém řádku se volí jako rerezentační slovo další slovo s nejmenší Hammingovou vahou, které není obsaženo na ředchozích řádcích. Následující slova jsou dány součtem rerezentanta a kódového slova. Tímto zůsobem se vylní celé standardní ole. Obdrží-li se oté říchozí slovo, které je obsaženo v nějaké třídě, ak oraveným dekódovaným slovem je slovo obsažené v tomtéž slouci a zároveň v rvní třídě. Z uvedeného vylývá, že standardní dekódování oravuje ouze ta chybová slova, která jsou nadefinována jako rerezentanty jednotlivých tříd. Příklad Je-li dán kód [G]. (5 ; 2) oravující jen jednu chybu s generující maticí Kódová slova jsou,, a ( ), což odovídá k 2 2 5 2 q 4. Pole má mít q nk q 8 řádků, tudíž jednotlivými rerezentanty jsou slova,,,,,, a. Jelikož se však jedná 2
o korekci jen jedné chyby, budou tedy srávně oravena jen ty řijatá slova, která obsahují chybové vektory,,,,,. Bylo-li vysláno slovo [ F] [ ] a na tento vektor bude ůsobit chybové slovo [ E ] [ ], ak získané slovo je [ J ] [] a tomuto slovu se vyhledá říslušné oravené slovo [ R] [], jak již vylývá z tab. 2.. Tab. 2. Standardní tabulka ro oravu jedné chyby kódu (5 ; 2) Mezi základní výhodu standardního dekódování atří, že žádný jiný kód neoravuje větší množství chyb. Jeho hlavní nevýhodou je však velmi omalé dekódování. 2.5.2 Dekódování omocí syndromu Standardní dekódování osané v ředcházející kaitole je velmi omalé, jelikož se musí rocházet 2 slov v oli ři každém řijetí nového slova [J ]. Běžně se však oužívají lineární blokové kódy, které mají délku 62 a otom by se muselo rocházet 62 8 2 slov, což je cca 4,6. Tuto nevýhodu odstraňuje dekódování, které využívá kontrolní matici [H ] daného kódu a syndrom. Bylo zjištěno, že slova ležící v jedné třídě mají stejný syndrom. Kvůli tomuto zjištění se mnohonásobně zmenší dekódovací tabulka, rotože stačí znát rerezentanta a syndrom viz. tab. 2.2. Tab. 2.2 Dekódovací syndromová tabulka ro kód (7 ; 3) Chybový vektor Syndrom Je důležité si uvědomit, že řijaté slovo má stejný syndrom jako chybové slovo, jelikož latí 3
] [ ] [ ] [ ] [ ] [ ]) [ ] ([ ] [ ] [ ] [ T T T T H E H F H E F H J S. (2.2) Odsud otom lyne, že T T T H E H J H E S ] [ ] [ ] [ ] [ ] [ ] [ ] [. (2.22) Jednotlivé syndromy se vyočítají dle vztahu 2.22. Přijme-li se slovo, tak se zjistí jeho syndrom a okud bude nenulový, ak se určí z tabulky říslušné chybové slovo. Je-li známo chybové slovo, není již roblém oravit vzniklou chybu dle vztahu 2.2. [J ] [E] Příklad Vyslané slovo je, řijaté je slovo. Kód oravuje ouze jednu chybu a má transonovanou kontrolní matici ve tvaru [ ] ] [ F ] [ ] [ J ] [ T H. Jednotlivé rerezentanty jsou,,,,, a viz. tab. 2.2. Syndrom řijatého slova je ] [ ] [. Z tabulky vylývá, že danému syndromu odovídá chybové slovo. Odečtením chybového slova od řijatého slova se získá oravené slovo stejné hodnoty jako slovo vyslané tj. [ ] ] [ E [ ] ] [ R. 4
3 NÁVRH OBECNÉHO LINEÁRNÍHO BLOKOVÉHO KÓDU Tato kaitola se zabývá vytvořením obecného lineárního blokového kódu (dále jen kódu) tak, aby slňoval úkol obsažený v zadání. Z důvodu náročnosti a zdlouhavosti některých výočtů bylo využito vyššího rogramovacího jazyka C++, konkrétně rogramovacího rostředí C++ Builder 6. Zadání vyžaduje návrh kódu schoného zabezečit řenos digitálních dat roti t 3bity nezávislým chybám ři informační rychlosti R, 5. Z těchto dvou ředokladů se vychází ři návrhu zabezečení. Z ředchozích kaitol je zřejmé, že má-li mít kód určité korekční schonosti, musí slňovat rovnici 2.2. Pro korekční schonost lineárního blokového kódu schoného oravit tři chyby se minimální Hammingova vzdálenost vyočítá dle vztahu 2.2 d 2 t, min k d min 2 3, d min 7. Dále ro Hammingovu váhu latí d min{ w}, min w d min, w 7. 3. Generující matice Pro vytvoření generující matice je otřeba znát očet zabezečovacích r, informačních k nebo maximální délku slova n a dále vlastnosti generované matice k oravení daného množství chyb. V tomto říadě tyto vlastnosti udávají arametry d min a w, které již byly vyočteny. K vytvoření generující matice se zde využije tzv. Plotkinovy hranice. ) Minimální délka tohoto kódu je odle vztahu 2.6 n 2 d, min n 2 7, 5
n 3. 2) Množství minimálního očtu zabezečovacích znaků vychází ze vztahu 2.8 r d log d 2, 2 min 2 min r 7 log 7 2, 2 2 r. Je-li znám očet zabezečovacích znaků r a celková délka kódu n, ak se očet zabezečovaných znaků k vyočte dle rovnice 2.4 následovně k n r 3 3. Nyní jsou vyočteny základní arametry kódu schoného oravit t 3bitů nezávislým chybám jak je ožadováno v zadání. Dalším ožadavkem je, aby toto zabezečení robíhalo ři informační rychlosti R, 5. Informační rychlost je dána odílem informačních bitů k celkové délce kódu a ro tento kód vychází tedy k R, n R 3 3,23. Je vidět, že navržený kód nedisonuje ožadovanou informační rychlostí a roto je otřeba jej ooravit. Aby zde bylo dosaženo ožadované informační rychlosti, je otřeba zvýšit očet informačních bitů na k, čímž se zvýší také celková délka kódu na n 22. Počet zabezečovacích bitů je otřeba zvýšit o jeden tj. r. Výsledná informační rychlost o úravě arametrů vychází R,5, 22 čímž jsou slněný ožadavky kladené zadáním. Nyní lze sestrojit generující matici, která se skládá z jednotkové odmatice a z kontrolní odmatice o rozměru, viz níže. 6
G 2 3 4 5 6 7 8 9 2 22 32 42 52 62 72 82 92 2 2 3 23 33 43 53 63 73 83 93 3 3 4 24 34 44 54 64 74 84 94 4 4 5 25 35 45 55 65 75 85 95 5 5 6 26 36 46 56 66 76 86 96 6 6 7 27 37 47 57 67 77 87 97 7 7 8 28 38 48 58 68 78 88 98 8 8 9 29 39 49 59 69 79 89 99 9 9 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 Z uvedené matice je zřejmé, že se skládá z jednotkové odmatice, ro kterou latí, že minimální Hamminhova vzdálenost je d min 2 a Hammingova váha je w. Z tohoto ředokladu a z dřívějších zjištění minimální Hammingovy vzdálenosti a váhy latících ro celou generující matici lze odvodit, že zabezečovací odmatice je taková matice, která má minimální Hammingovu vzdálenost větší nebo rovno ěti a zároveň je její Hammingova váha větší nebo rovno šesti. Musí se tedy nalézt taková slova délky, která tuto odmínku slňují. Za tímto účelem byl oužit rogram rog_generujici_matice.c narogramovaný v jazyce C++, jehož vývojový diagram je uveden na obr. 3.. Na začátku rogramu se deklarují roměnné otřebné ro běh rogramu mezi něž atří mimo jiné očet zabezečovacích znaků r, celková délka kódu N, minimální Hammingova vzdálenost vzdalenost, Hammingova váha vaha a ředvylněná kontrolní matice kontrol. Dále je zde nadefinována matice chybových slov mate a matice syndromů mats. Po deklaraci roměnných nastává vytvoření logické tabulky obsahující r 2 2 248 řádků, kde rvní řádek je tvořen samými nulami a oslední samými jedničkami. Jakmile je vytvořena logická tabulka, tak dochází k výběru kódových slov odle Hammingovy váhy. V tomto říadě jsou vybrána ta kódová slova, která mají Hammingovu váhu větší nebo rovnu šesti. Další částí rogramu je výběr slov, které mají minimální Hammingovu vzdálenost větší nebo rovnu ěti. Při návrhu kódu bylo zjištěno, že okud byl kód navržen z ůvodních výsledků Plotkynovy hranice tj. kód by měl arametry n 3, k 3 a r, bylo by ro zjištění generující matice dostačující zjistit kódová slova s Hammingovou vzdáleností větší nebo rovno ěti odvozená od rvního kódového slova tj. slovo začínající šesti jedničkami a další kódová slova by se určovala z ředchozího slova stejným zůsobem. 7
Obr. 3. Vývojový diagram rogramu ro vytvoření generující matice Jelikož byl očet informačních znaků zvýšen o osm, došlo k tomu, že výsledná generující matice obsahovala v zabezečovací části kódová slova na jednotlivých řádcích slňující minimální Hammingovu vzdálenost, avšak nebyla slněna ro všechny možné kombinace kódových slov. K vyřešení tohoto roblému je vytvořeno deset cyklů které vybírají jednotlivá kódová slova a ukládají je do omocných tabulek viz obr. 3.2. V tabulce v obr. 3.2 jsou uložena všechna kódová slova s ožadovanou Hammingovou vahou. Následně se vybírají ta kódová slova, která mají ožadovanou min. Hammingovu váhu ke kódovému slovu a ty se ředávají do tabulky 2 v obr. 3.2. Jako oslední následuje údaj o očtu těchto kódových slov, aby bylo možno nastavit cyklus ro výběry slov v následující tabulce. V tabulce 2 v obr. 3.2 se oět vybírají vyhovující slova vzhledem k rvnímu kódovému slovu a oět se ředávají dále. Tento děj se oakuje až do tabulky v obr. 3.2, kde je uloženo jedenácté slovo. Díky tomu, že si rogram amatuje ozice jednotlivých kódových slov, tak vytvoří kontrolní matici ro ověření srávnosti. 8
Obr. 3.2 Výběr vyhovující generující matice Další část rogramu testuje srávnost kontrolní matice tím, že jednotlivá chybová slova násobí s kontrolní maticí a zjišťuje očet stejných syndromů. Předosledním krokem je výis naměřených výsledků, který udává ozice jednotlivých kódových slov v omocných tabulkách a očet stejných syndromů. Výis nulového očtu shodných syndromů a jednotlivé ozice vyhovujících slov je uveden na obr. 3.3. Obr. 3.3 Výis výsledků z rogramu rog_generujici_matice.c Nakonec se vyhodnotí, zda jsou rojita všechna kódová slova ožadované Hammingovy váhy. Pokud ne, ak se rogram vrátí na začátek a testuje kódová slova vzhledem ke kódovému slovu 2. Při nalnění odmínky dojde k ukončení rogramu. Z obr. 3.3 je atrné, že byla nalezena taková kódová slova, u kterých nedocházelo k oakování syndromů ro jednotlivá chybová slova. Po nastavení rogramu (jednotlivých cyklů) dle zjištěných arametrů dojde k vysání generující matice lineárního blokového kódu schoného oravit t 3 nezávislé chyby ři informační 9
rychlosti. Generující matice má tedy tvar R,5 G. 3.2 Kontrolní matice V ředchozí kaitole byla vytvořena generující matice obecného lineárního blokového kódu schoného oravit nezávislé chyby ři informační rychlosti. Za omoci této matice je možno vytvořit kontrolní matici otřebnou ro dekódování zabezečeného toku dat. Při konstrukci kontrolní matice se vychází z oznatků uvedených v kaitole 2.3. Výsledný tvar kontrolní matice je tedy 3 t 5 R, H. Pro samotné dekódování se oužívá transonovaný tvar kontrolní matice. Transonovaná kontrolní matice se zaíše jako 2
T H. 3.3 Korekce chyb Navržený obecný lineární blokový kód je schoen oravit 3 t nezávislé chyby. Tato kaitola se zabývá konkrétním zůsobem oravy vzniklých chyb ři řenosu datového toku. Při dekódování se využívá skutečnosti, že vyjde-li ři součinu vektoru řijatého slova a transonované kontrolní matice syndrom nenulový, ak došlo k chybě. Na základě syndromu se určí chybové slovo, které je následně řičteno k řijatému slovu a tím dojde k oravě chyby vzniklé ři řenosu. Zde navržený kód má celkovou délku 22 n a je schoen oravit nezávislé chyby. Za omoci kombinatoriky lze vyočítat očet všech možných zůsobů vzniku jedné, dvou a tří chyb. Výočet celkového očtu chybových slov je 3 t 793. 3! 2 2 22 2! 2 22! 22 3 22 2 22 22 3 2. n n n chybových slov oč 2
Počet syndromů je shodný s očtem chybových slov tj. obě tabulky obsahují 793 řádků. Příklad některých vybraných chybových slov je znázorněn na obr. 3.4. Obr. 3.4 Některé možné chyby a) jedna chyba, b) dvě chyby, c) tři chyby Jsou-li známa chybová slova, ak je otřeba s jejich omocí zjistit všechny syndromy, aby bylo s jejich omocí možno vzniklé chyby oravovat. Za tímto účelem je vytvořen rogram rog_dekoder.c nasaný v jazyce C++. Na začátku rogramu jsou určený chyby, které mohou ři řenosu ovlivnit řenášenou informaci. Tato slova jsou uložena v matici mate a k těmto slovům v další části vyočítán říslušný syndrom. Syndromy jsou uloženy v matici mats. Jednotlivé řádky matice mate, resektive slova na daných řádcích odovídají syndromům v říslušných řádcích matice mats. Program dále umožňuje oravu chybně řijatého slova, jehož srávný tvar je vysán na obrazovku. Vývojový diagram je uveden v kaitole 4, kde je navržen řevodník [S] [E], který je konciován na základě tohoto rogramu. 3.4 Kódování a dekódování Tato kaitola se zabývá konkrétním zůsobem zabezečení informace, kódováním a dekódováním obecným lineárním kódem vytvořeného v ředchozí kaitole. Dále tato kaitola slouží k ověření srávnosti navrženého kódu ro zadaný očet nezávislých chyb. Přijme-li se na vstuu oslounost P se k jejímu zakódování využije vztah 2.., ak 22
P F F. Výsledné zabezečené slovo je tedy. Dojde-li k bezchybnému řenosu, ak je syndrom nulový a řijaté slovo odovídá zabezečenému slovu. V říadě, že ři řenosu došlo k chybě, je syndrom nenulový a musí se s jeho omocí určit chybové slovo J F E. Výočet syndromu, následné určení chybového slova a orava řijatého slova je rovedena v rogramu rog_dekoder.c. S S. 23
Z tabulky syndromů se zjistí, že danému syndromu odovídá chybové slovo E. Toto chybové slovo je řičteno ke slovu řijatému a tím se získá oravené slovo R. Jelikož rvních bitů je informačních, tak za ředokladu max. tří chyb bylo kódovým slovem P. Další ověření funkčnosti ro jiné druhy chyb je uvedeno v tab. 3., řičemž átý řádek odovídá ředchozím výočtům. Tab. 3. Tabulka korekce chybně řijatých slov vstuní slovo [F] syndrom [S] chybové slovo [E] oravené slovo [R] 24
4 REALIZACE KODEKU Při zabezečování zrávy a kontrole srávnosti se využívá součinu vektoru a matice. Bylo zjištěno, že tento roces je realizovatelný i omocí zabezečovacích součtů u kódování a kontrolních součtů u kontroly srávnosti řenosu. Při realizaci kodéru se zde vychází z již vytvořeného obecného lineárního blokového kódu vytvořeného v kaitole 3. a 3.2. 4. Kodér Kodér se využívá k zakódování zrávy. V tomto říadě zabezečuje řenášenou zrávu vůči výskytu maximálně tří chyb. Zaojení kodéru vychází z generující matice [4]. Konkrétně se jedná o zůsob vytvoření zabezečovacích rvků. Ty se vytváří omocí součtů mod 2 jednotlivých řádků zabezečovací odmatice, obsahující jedničky. Jednotlivé zabezečovací rvky jsou ak dány 9 8 7 6 5 4 3 2 G Výsledné součty mod 2 jednotlivých řádků zabezečovací odmatice (ravá olovina) udávající zabezečovací rvky jsou uvedeny v tab. 4.. Tab. 4. Tabulka zabezečovacích rvků Zabezeč. rvek součet mod 2 Zabezeč. rvek součet mod 2 r 6 + 7 + 8 + 9 + + r 7 + 3 + 5 + 7 + 8 + 9 r 2 3 + 4 + 5 + 9 + + r 8 + 3 + 4 + 6 + 8 + 9 + r 3 2 + 4 + 5 + 7 + 8 + r 9 + 2 + 5 + 8 + 9 + + r 4 2 + 3 + 5 + 6 + 8 + r + 2 + 4 + 6 + + r 5 2 + 3 + 4 + 6 + 7 + 9 r + 2 + 3 + 6 + 7 + 8 + r 6 + 4 + 5 + 6 + 7 + 9 + 25
Jsou-li známy zabezečovací rvky, ak lze odvodit zaojení kodéru, které je znázorněno na obr. 4.. Obr. 4. Zaojení kodéru obecného lineárního blokového kódu (22;) 4.2 Dekodér Základní funkcí dekodéru je dekódovat říchozí zrávu. V tomto říadě se jedná o kontrolu srávnosti řenosu, oříadě nastane-li chyba, jedná-li se tedy o maximálně tři chyby, je úkolem dekodéru tyto chyby oravit a na výstu oslat oravené slovo. Zůsob zaojení dekodéru vychází z kontrolní matice [4]. Zde se vychází ze zůsobu určení rvků syndromů. Prvek syndrom je dán součtem mod 2 rvků řenesené kódové kombinace, které mají v říslušném řádku kontrolní matice hodnotu jedna. Odvozené rvky syndromu jsou uvedeny níže, oět se zde vychází z kontrolní matice vytvořené v ředchozí kaitole. Tab. 4.2 Tabulka rvků syndromů rvek syndromu součet mod 2 rvek syndromu součet mod 2 s 6 + 7 + 8 + 9 + + +r s 7 + 3 + 5 + 7 + 8 + 9 +r8 s 2 3 + 4 + 5 + 9 + + +r 2 s8 + 3 + 4 + 6 + 8 + 9 + +r 8 s 3 2 + 4 + 5 + 7 + 8 + +r 3 s9 + 2 + 5 + 8 + 9 + + +r 9 s 4 2 + 3 + 5 + 6 + 8 + +r 4 s + 2 + 4 + 6 + + + r s 5 2 + 3 + 4 + 6 + 7 + 9 + 5 s + 2 + 3 + 6 + 7 + 8 + +r s 6 + 4 + 5 + 6 + 7 + 9 + +r 6 26
H Pomocí součtů z tab. 4.2 se sestaví obvod ro určení syndromu. Za omoci syndromu se následně odvodí chybové slovo, které součtem mod 2 s řijatým slovem dává oravenou kombinaci. Příklad odvozeného zaojení je uvedeno na obr. 4.2. Obr. 4.2 Zaojení dekodéru obecného lineárního blokového kódu (22;) 27
Z obr. 4.2 je atrné, že oblast, řiřazující chybové slovo k syndromu je realizována blokem blok řevodu syndromu [S] na chybové slovo [E], na jehož vstu je řivedeno hodnot rerezentujících syndrom a na jeho výstuu je zjištěné chybové slovo jehož délka je 22 bitů. Z důvodu složitosti tohoto bloku je mu věnována další kaitola. 4.3 Převodník [S] [E] Převodník [S] [E] byl již zmíněn v ředchozí kaitole. Jedná se o blok obsažený v dekodéru, jehož úkolem je řevést syndrom na chybové slovo, které umožní oravit chybně řijaté slovo. Předokladem je výskyt maximálně tří nezávislých chyb. U jednoduchých dekodéru tj. dekodér schoný oravit jen jednu chybu stačí tento blok realizovat omocí obvodu logického součinu. Při větším množství chyb je tato varianta nevyhovující a roto je otřeba k tomuto účelu využít jiný ostu. Při návrhu řevodníku byl využit ostu využívající mikrokontroler. Současné mikrokontrolery lze rogramovat v jazyce assembler, C a C++. V této ráci byl zvolen rogramovací jazyk C z důvodu ) Již hotový rogram v kaitole 3.3 byl vytvořen rogram rog_dekoder.c, který je již nasán v jazyce C++ a tudíž není nutné jej řeisovat do assembleru (za omoci malých úrav je možné tento rogram oužit v mikrokontroleru). 2) Přehlednost rogramy sané v jazyce C jsou řehlednější a vystihující ravou odstatu rogramu. 3) Přenositelnost rogramy jsou řenositelné mezi různými tyy mikrokontrolerů. Vytvořený rogram, který je oužit v mikrokontroleru se nazývá rog_mikrokontroler. Program a tím i činnost mikrokontroleru lze rozdělit do dvou částí a to inicializační a výočetní viz vývojový diagram na obr. 4.3. Úkolem inicializační části je deklarovat všechny roměnné, ale hlavně vyočítat kombinaci všech možných chyb ro maximálně tři současně se vyskytující. Tyto chyby následně zaisuje do tabulky mate a dále výočet říslušných syndromů, které jsou ukládány do mats. Celý cyklus se rovede ouze jednou a to ři suštění mikrokotroléru (řivedením naájecího naětí). Další výočetní část se stará ouze o to, že zjišťuje hodnoty na vstuních ortech [9] (v tomto říadě se jedná o orty PORTA(PINA7 až PINA) a PORTB(PINB7 až PINB5)), tyto hodnoty udávají hodnotu syndromu. Zjištěný syndrom je ak vyhledáván v matici mats a o shodě je na výstu osláno chybové slovo odovídající stejnému řádku v matici mate. Výstu je zde realizován třemi orty, konkrétně se jedná o ort PORTC (PINC7 až PINC), PORTD (PIND7 až PIND) a PORTE (PINE7 až PINE2). Hodnoty těchto ortů udávají chybové slovo, které je výstuem z mikrokontroleru a následně slouží ro korekci vzniklých chyb v řijatém slově. Uvedený cyklus se cyklicky oakuje. 28
Obr. 4.3 Vývojový diagram rogramu řevodníku [S] [E] Jak již bylo zmíněno, jádro rogramu oužitého v mikrokontroleru vychází z rogramu rog_dekoder.c využitého v kaitole 3.3. Aby bylo možno tento rogram využít i ro raktické účely, je otřeba rovést následující změny ) Změna deklarace jedná se o rvní a základní změnu oroti ředchozímu rogramu. Jelikož jsou součástí rogramu tabulky (matice), které obsahují chybová slova a syndromy, které mají očet hodnot (řádků) 793 a jsou deklarovány jako int, vychází-li se z toho, že velikost int ro většinu 8 bitových komilátorů je 6 bitů, ak jen jejich velikost činí cca 5,56 kb 6 793 22 6 793 ( kb kb ). Takováto velikost je ro 824 8 24 mikrokontroler neředstavitelná a roto je otřeba ji redukovat. Docílilo se toho oužitím deklarace char, jenž má velikost 8 bitů, a tím vznikne matice charů, která má 225 řádků a celková velikost obou matic vychází na cca 7,22 kb. 2) Přístu k rvkům z důvodu změny struktury matic chybových slov a syndromů, je otřeba změnit i řístu k jednotlivým hodnotám, jelikož jedna buňka matice neobsahuje bit daného slova, ale osmici bitů slov sousedních na dané ozici viz obr. 4.4. 29
Obr. 4.4 Komrimace matice vhodná ro mikrokontroler Z obrázků je atrné, že k jednotlivým chybovým slovům se musí řistuovat o bitech. Tento řístu je zabezečen omocí logického součtu, kdy se zaisuje na ožadovaný bit omocí řičtení k danému znaku binární hodnotu dané ozice tj. na rvní bit je řičteno d, na druhý 2d, na třetí 4d až osmý 28d. Při čtení otřebných bitů je ostu stejný, rozdíl je jen v oužití logického součinu oroti logickému součtu. 3) Zrušení výisů je otřeba zrušit výisy na obrazovku, jelikož nejsou odorovány mikrokontrolerem. 4) Nastavení I/O je otřeba nastavit vstuně výstuní orty. Jako vstuní orty jsou nastaveny PORTA a PORTB, kde nastavení výstuního charakteru je dáno DDRA= a DDRB=. Výstuními orty jsou PORTC, PORTD a PORTE nastaveny omocí DDRC=255, DDRD=255 a DDRE=255. Výsledný modifikovaný rogram je oužit v mikrokontroléru, který slňuje ožadované vlastnosti ro výskyt maximálně tří nezávislých chyb. Pokud se vyskytne jejich syndrom, ak je bezchybně určeno chybové slovo. 3
4.4 Řídící obvod Jedná se o obvod, rovádějící komunikaci mezi zde navrženým kodekem a vnějším systémem. Řídící obvod dává systému najevo, že může osílat data řivedením log na vodič Ř-in a naoak řivedením log ro zákaz osílání dat. Obdobný zůsob je na výstuu obvodu. Systému sdělí obvod log nečinnost a log vysílání informací. Zaojení řídícího obvodu kodéru je na obr. 4.5 a). Na obrázku jsou dále vidět jednotlivé růběhy, kde modře je vyjádřen očáteční stav a červeně změna stavu. Čítač má v obvodu za úkol naočítat bitů odle synchronizovaného clk (clock) signálu. Po tuto dobu je systému ovoleno osílat data tzn. signalizace log. Při naočítání jedenácti imulzů, dochází ke změně stavu na log, systém ozastaví osílání dat a data, která jsou uložena v amětech s/ řevodníku kodéru jsou řevedena na výstu omocí náběžné hrany >stb. Dále je suštěn čítač do 22 a ředáno hlášení o vysílání systému. Signály >clk a /s slouží k záisu dat do osuvných registrů a na výstu /s řevodníku. Po naočítání hodnoty 22, je na výstuu Q 7 čítače 3 hodnota log, která má za následek resetování celého obvodu a tudíž návrat do výchozího stavu. Obr. 4.5 Zaojení a růběhy řídícího obvodu a) kodéru, b) dekodéru Struktura řídícího obvodu dekodéru je jednodušší, jelikož odadají čítače, což je dáno výskytem mikrokontroleru v obvodu dekodéru. Zaojení řídícího obvodu je na obr. 4.5 b) a oět jsou zde uvedeny hodnoty v jednotlivých bodech. Aby obvod srávně fungoval, je zaotřebí, aby zdrojový kód vněm vložený obsahoval říkazy níže. DDRK=222; PORTK=255; Pomocí rvního říkazu se nastaví in 5 jako vstuní a tudíž je na něj možno osílat signál clk, in 6 a in 7 jsou nastaveny jako výstuní. Druhý říkaz ošle na iny 6 a 7 hodnotu log. Tyto dva říkazy jsou umístěny na začátku celého rogramu. 3
Dále je otřeba zadat níže uvedenou zdrojovou část. PORTK=; for(i=;i<;i++) { x=; y=; while (x== y==) { ozicebit=portk&32; if(ozicebit==32) x=; else y=; } } PORTK+=64; ozicebit=; Tato část rogramu nahrazuje rvní čítač a je umístěna v rogramu za inicializační částí tj. o skončení výočtů syndromů. Poslední částí je nahrazující čítače na výstuů dekodéru, rogram má stejnou strukturu jako ředchozí zdrojový kód, jen s tím rozdílem, že se zde čítá do hodnoty 22 a signalizační log hodnoty se osílá na in 6. PORTK+=28; for(i=;i<22;i++) { x=; y=; while (x== y==) { ozicebit=portk&32; if(ozicebit==32) x=; else y=; } } PORTK+=28; ozicebit=; 32
5 OVĚŘENÍ FUNKČNOSTI V ředchozích kaitolách byly rozebrány ostuy vytvoření obecného blokového kódu a vy tvoření zaojení kodéru a dekodéru. Tato kaitola se zabývá dalším úkolem obsaženém v zadání a to ověření funkční schonosti tohoto kodeku. Pro simulaci byl zvolen rogram Matlab Simulink v7.5.. Zaojení kodéru v rogramu Matlab je uvedeno na obr. 5.. Princi zaojení tohoto obvodu je odvozen z obr. 4.. Na vstu kodéru je řivedena nezabezečená zráva, jejíž délk a činí bitů (P ), tyto bity jsou zadány jako konstanta a jsou omocí bloku demux rozděleny do jedenácti větví. Pomocí logických obvodů XOR reali zujících součet mod 2 a obvodů AND sloužící jako sínače dochází k zabezečení zrávy a jejímu ředání řes blok mux na výstu, kde je vyslána zabezečená oslounost P na řenosový kanál. Obr. 5. Zaojení kodéru v rogramu Matlab Simulink Mezi blokem kodéru a dekodéru je nasimulována chyba řičtením chybového slova k slovu vyslanému kodérem. Zaojení dekodéru v Matlabu je znázorněno na obr. 5.2 a) vychází se zde z návrhu dekodéru viz obr. 4.2. Na vstu dekodéru je řivedeno řijaté slovo, na jehož základě je zjištěn syndrom. Hodnota syndromu je řivedena do řevodníku [S] [E], který je zde zobrazen ouze jako blok a musí se zde zadat chybové slovo manuálně, jelikož je tento blok simulován samostatně v jiném rogramu. Z bloku řevodníku [S] [E] je na 33
výstuu vysláno chybové slovo, které je řičtené k řijatému a tím dochází k oravě vzniklých chyb ři řenosu. Obr. 5.2 Zaojení dekodéru v rogramu Matlab Simulink Uvedený růběh je z důvodu řehlednosti vyjádřen blokově na obr. 5.3, kde jsou zobrazeny i konkrétní hodnoty bitových oslouností v důležitých bodech. Obr. 5.3 Blokové zaojení kodeku v rogramu Matlab Simulink 34
Při ověřování funkčnosti kodeku v rogramu Matlab, bylo řečeno, že do bloku řevodníku [S] [E] se zadává hodnota chybového slova manuálně. Jelikož se jedná o odstatnou část obvodu dekodéru, je otřeba odsymulovat i tuto část. Za tímto účelem byl oužit rogram ro saní a ověřování funkčnosti kódu ro mikrokontrolery. Jedná se o rogram Freescale CodeWarrior develoment Studio for S2(X) V5.. Tento rogram umožňuje simulaci Freescale mikrokontrolerů řady 2. Po zuštění rogramu byl vybrán mikrokontroler MC9S2XET256, který byl zvolen na základě velikosti aměti RAM dostačující ro zde vytvořený rogram rog_mikrokontroler. Zdrojový kód byl vložen do mikrokontroleru, kde byl zuštěn. Jelikož během činnosti rogramu nelze zadávat vstuní arametry, tak byly nastaveny řed zuštěním (tj. PORTA a PORTB jsou nastaveny jako výstuní!!!). Samotné ověření lze realizovat omocí LED diod řiojených na říslušné výstuní iny, které by signalizovaly logickou jedničku rozsvícením. Tento zůsob simulace však nebyl možný z důvodu oužití demoverze rogramu. Z tohoto důvodu byla oužita metoda čtení registrů, které odovídají výstuním ortům PORTC, PODTD a PORTE. K registrům je možný řístu řes Comonent Oen Insect, kde se vybere IO Register MC9S2XET256. Zde je již možno řistuovat k jednotlivým registrům ortů. Hodnota ortu je udávána v hexadecimálním tvaru, tudíž je nutno ji řevést na binární tvar, jak je znázorněno na obr. 5.4. Obr. 5.4 Určení chybového slova v rogramu Freescale CodeWarrior 35
6 NÁVRH PLOŠNÉHO SPOJE Při návrhu lošného soje se vychází z navrženého kodeku. Z důvodu složitosti obvodu, kdy je oužito velké množství integrovaných obvodů a za oužití freewarového rogramu, který řináší značná omezení, jako je maximální velikost navrhované desky lošného soje a maximální očet zaojených součástech na desce, bylo nutno jednotlivé části kodeku tj. kodér a také dekodér rozdělit na více desek. Při návrhu byl využit freewarový rogram ro tvorbu lošných sojů EAGLE 5.9.. Část dekodéru rerezentující řídící obvod a obvod rozdělení sériového toku na aralelní je umístěna na desce lošného soje na obr 6.. Jsou zde vstuy ro sériový tok dat D_IN, synchronizační hodiny CLK a restart celého kodéru Rest. Dále jsou zde výstuy ro sériový výstu zakódovaných dat D_OUT a řídící výstu Cont. Obvod má dále vstu na naájení, které je vyžadováno 5V. Obvodové řešení je odvozeno z obr 4.5 a), kde jednotlivé čítače jsou realizovány integrovanými obvody 42D, na logický součin jsou oužity obvody 48D, investory rerezentuje obvod 469D. In tygrovaný obvod 494 rerezentuje sériově-aralelní řevodník a 42 aralelně-sériový řevodník. Obr. 6. Zaojení kodéru lineárního blokového kódu (22;) část řídící 36
Druhá část obvodů realizující samotné kódování je uvedena na obr. 6.2. Tato část rovádí oerace exklusivního součtu omocí hradel 47D. Jedná se o realizaci obr 4.. Tento obvod vrací řídícímu obvodu zabezečovací rvky a ten ak k těmto rvkům řidá informační rvky a solečně je ošle na výstu. Řízení řesunu zabezečené informace na výstu, je zde zabezečeno aralelně sériovým řevodníkem. Obr. 6.2 Zaojení kodéru lineárního blokového kódu (22;) kódovací část Návrh desky dekodéru je obdobný jako u kodéru. I v tomto říadě je deska rozdělena na části. Na obr. 6.3 je znázorněna řídící část zabezečující oět řízení a řevody. Jsou zde obsaženy vstuy ro sériový vstu D_IN, synchronizační hodiny CLK a možný restart dekodéu Rest. Výstuními hodnotami jsou ak řízení Cont, sdělující systému osílání dat na výstuu nebo možnost říjmu dat a ještě výstu >CLK. Tento výstu souvisí s řízením a je určen dekodéru, konkrétně části s aralelněsériovým řevodníkem osílající data na výstu. Obvod vyžaduje naájení 5V a vychází ze zaojení obrázku 4.5 b). Jako mikrokontrolér rerezentující řevod syndromu na chybové slovo a řídící část obvodu, byl zvolen ty MC9S2XF-44 a to zvláště kvůli velikosti aměti RAM 6 kb, která lně ostačuje zde vytvořenému rogramu 8 kb. Integrované obvody logického součinu a investorů jsou oět obvody 48D a 469D. Z důvodu otřeby dalšího naájení mikrokontroléru byl oužit stabilizátor M37LD, který vytváří za omoci rezistorů R=24Ω a R2=Ω naětí,8v. Poslední částí jsou integrované obvody 494D realizující řevod na aralelní řenos. 37