PŘEDNÁŠKA PS 6 Přenos dat v počítačových sítích Část 2
Osnova • • • • • •
Metody detekce chybovosti Pravděpodobnost chyby ve zprávě Parita Kontrolní blokový součet (pseudosoučet) Redundantní cyklické kódy Jiný způsob reprezentace cyklického zabezpečení
3.4 Metody detekce chybovosti Při přenosu dat mezi dvěma DTE reálnými přenosovými médii počítačových sítí dochází k chybám vlivem různých rušivých vlivů To znamená , že signálové prvky reprezentující 1 bity budou přijímačem interpretovány jako 0 bity a 0 bity zase opačně jako bity 1. Proto musí mít přijímač možnost zjistit s vysokou pravděpodobností, že došlo k chybám. A nejen to, přijímač musí mít při detekci chyb k dispozici mechanizmus, jak získat věrohodnou kopii správné informace. Pro potlačení vlivu chyb existují dvě metody: (1) Metoda korekce chyb s jednosměrným přenosem dat k přijímači (forvard error control), při které každý vyslaný znak nebo rámec musí obsahovat nadbytečnou informaci umožňující přijímači nejenom detekovat přítomnost chyb, ale také určit jejich umístění v přijaté bitové posloupnosti. Správný informační obsah se pak určí invertováním chybných bitů.
1
(2) Metoda detekce chyb s obousměrným přenosem (feedback error kontrol), při které každý vyslaný znak nebo rámec obsahuje jen nezbytné množství nadbytečné informace, která přijímači umožní detekovat přítomnost chyb, ale ne jejich umístění. Zpětný přenos žádosti o opakování původní zprávy potom zjedná nápravu. V praxi počet přídavných bitů nutných k dosažení spolehlivé korekce chyb s jednosměrným přenosem rychle vzrůstá s počtem bitů užitečné informace. Proto bude v popisu datové komunikace a počítačových sítí věnována především pozornost zpětnovazebním metodám detekce chyb. Popis způsobů jednosměrné korekce chyb leží mimo rámec tohoto kurzu. Zpětnovazební metody detekce chyb lze rozdělit na: (1) techniky sloužící pro spolehlivou detekci chyb a (2) na algoritmy realizující vhodný způsob opakování. V tomto výkladu popíšeme nejběžnější techniky detekce chyb používané v současnosti. Výběr způsobu detekce ovlivňují dva faktory: bitová chybovost přenosového média a statistika rozložení chybzda náhodné chyby vnikají jednotlivě (BER – bit error rate) nebo ve shlucích (burst errors). Bitová chybovost představuje pravděpodobnost PB vzniku chybných bitů v určitém časovém intervalu. Takže bitová chybovost 10-3 znamená, že v průměru během doby přenosu se vyskytne v 1000 bitech 1 byt chybný. Budou-li při asynchronním přenosu vysílány jednotlivé 8 bitové znaky s jedním spouštěcím (start) bitem a dvěma závěrnými (stop) bity, pak při hodnotě PB = 10-3 bude pravděpodobnost PM narušení znaku 1− − (1− −PB)10 a tedy přibližně 10−2. Jestliže ale půjde o synchronní přenos bloků se 125 osmibitovými znaky, pak pravděpodobnost výskytu chybného bloku (rámce) bude přibližně rovna 1. 2
Takže v průměru bude každý blok chybný a bude nutné jej opakovat. Je jasné, že pro takový typ přenosového média je zvolená délka bloku příliš velká a s ohledem na přijatelnou průchodnost bude třeba ji zkrátit.
Pravděpodobnost chyby ve zprávě Předpokládejme, že bitová chybovost přenosu je PB, že celkový počet bitů zprávy je n a pravděpodobnost chybné zprávy PM. Pravděpodobnost bezchybné zprávy bude rovna pravděpodobnosti toho, že všechny bity budou správné: (1 − PB)n Pravděpodobnost chybné zprávy bude tedy rovna hodnotě PM = 1 − (1 − PB)n Hodnota n bývá často velká a i když vyčíslení výrazu pro PM počítačem je prakticky okamžité, tak přesto bude užitečné zapamatovat si pro rychlý odhad PM aproximaci, která vychází z binomického rozvoje. Binomický rozvoj platný pro všechna x a y: n n n ( x + y)n = xn + xn−1y + xn−2y2 +...+ xyn−1 + yn n−1 n−2 1 Výraz (1 − PB)n proto můžeme zapsat následovně:
(1− PB )n = 1− nPB + n(n −1) PB2 − ... 2
Protože v tomto výrazu je hodnota PB velmi malá, lze členy 3 s mocninou PB a s mocninami PB vyšších řádů zanedbat. Pravděpodobnost chybné zprávy bude potom
PM ≅ nPB − 3
n(n−1) 2 PB 2
Tato aproximace musí být používána opatrně, protože pro velká n bude čtvrtý a možná i pátý člen binomického rozvoje nezanedbatelný. Volba detekční metody závisí na způsobu rozložení chyb ve zprávě. Počet bitů použitý k detekci je určen délkou shluků. K nejpoužívanějším metodám patří parita, kontrolní blokové součty (pseudosoučty) a redundantní cyklické kódy. Tyto metody samostatně popíšeme.
3.4.1 Parita Nejběžnější metoda používaná u asynchronního a znakově orientovaného synchronního přenosu je parita. U této metody vloží vysílač do přenášeného znaku jeden přídavný paritní bit. Použitý paritní bit je funkcí bitů tvořících znak určený k přenosu. Přijímač aplikuje na každý přenesený znak stejnou funkci a získaný výsledek porovná s přijatou paritou. Při kladném výsledku je přenos v pořádku. V opačném případě je přenos chybný. Při výpočtu paritního bitu se počet jedničkových bitů kódu pro vyjádření znaku sečte ve sčítačce mod 2 a paritní bit se potom vybere tak, aby celkový počet jedniček včetně vlastního paritního bitu byl buď sudý (sudá parita), nebo lichý (lichá parita). Princip metody znázorňuje obr.3.14. Dva příklady z obr.3.14(d) naznačují, že metoda s použitím paritního bitu detekuje pouze jediný (nebo lichý) chybný bit a že dva (nebo sudý počet) chybné bity tato metoda detekovat nebude. Použitý obvod pro výpočet paritního bitu každého znaku obsahuje hradla XOR (vylučovací nebo)‚ která jsou zapojena podle obr.3.14(c). Hradlo XOR má stejnou funkci, jako sčítačka modulo-2, protože její pravdivostní tabulka znázorněná v obr.3.14(b) říká, že zpracování dvou stejných bitů dává stejný výsledek, jako součet dvou binárních míst bez přenosu. 4
Obr.3.14 Nejméně významný pár bitů je nejprve zpracován hradlem XOR a výstup tohoto hradla je potom zpracován s dalším (méně významným) bitem druhým hradlem XOR, atd. Výstup posledního hradla představuje požadovaný paritní bit, který je před odesláním znaku vložen do posuvného registru PISO. Podobně i v místě příjmu je paritní bit znovu vypočítán a porovnán s přijatým paritním bitem. Při nesouhlasu obou paritních bitů je detekována chyba přenosu. 5
V souladu s teorii kódování se kombinaci jednotkové zprávy (znaku) zahrnující užitečné informační bity a přídavné bity pro detekování chyb říká kódové slovo. Minimální počet bitových pozic, ve kterých se dvě platná kódová slova liší, je Hammíngova vzdálenost daného kódu. Jako příklad uvažujme kód, jehož kódová slova tvoří sedm informačních bitů a jeden bit paritní. Jestliže budeme předpokládat použití sudé parity, pak platná kódová slova budou vypadat takto: 0000000 0 0000001 1 0000010 1 0000011 0 Z uvedeného příkladu se dá usoudit, že Hammingova vzdálenost je 2, protože každé platné kódové slovo se od jiného platného kódového slova liší minimálně ve dvou pozicích. To tedy znamená, že takové schéma nebude schopné detekovat dva chybné bity, protože výsledné (narušené) kódové slovo bude sice odlišné, ale zase platným slovem uvažovaného kódu. I když tento způsob bude detekovat všechna kódová slova s jedním chybným bitem, tak přesto budou vznikat chybná kódová slova.
3.4.2 Kontrolní blokový součet (pseudosoučet) Při přenosu bloků znaků roste pravděpodobnost výskytu chybných bloků. Pravděpodobnost výskytu bloku s chybou je označována jako bloková chybovost. Při přenosu bloků (rámců) znaků můžeme schopnost detekce chyb paritními bity každého znaku zvýšit přidáním množiny paritních bitů vypočtených z celého bloku znaků (bytů) rámce. U této metody je každému znaku (byte) rámce přiřazen stejně jako v předchozím případě paritní bit (příčná nebo sloupcová parita). 6
Kromě toho se další bit vypočte pro každou bitovou pozici celého rámce (podélná nebo sloupcová parita). Výsledné množině paritních bitů všech sloupců se říká kontrolní blokový součet (pseudosoučet či křížová parita), protože každý bit kontrolního blokového součtu je součtem modulo – 2 všech bitů odpovídajícího sloupce. V příkladu na obr.3.15 je pro řádky použita lichá parita a pro sloupce sudá parita, přičemž se předpokládá, že rámec obsahuje pouze znaky určené k otisku. Z příkladu můžeme usoudit, že i když dva chybné bity jednoho znaku řádková parita nezachytí, tak takové bity budou detekovány odpovídající sloupcovou paritní kontrolou. To bude ovšem platit pouze tehdy, jestli-že se ve stejné době neobjeví v tomtéž sloupci dva další chybné bity. Je jasné, že pravděpodobnost vzniku takové situace bude mnohem menší, než pravděpodobnost výskytu dvou chybných bitů v jednom znaku. Použití kontrolního blokového součtu (křížové parity) významně zlepší detekční schopnosti této metody. Varianta této metody používá místo blokového součtu modulo-2 jedničkový komplementární součet. Princip této metody je uveden v obr.3.15(b). U této varianty jsou znaky (byty) bloku určené k přenosu chápány jako binární čísla bez znaménka. Tato čísla se nejprve sečtou v 1-kové komplementární aritmetice. Všechny bity výsledného součtu se potom invertují a výsledek použije jako kontrolní znak bloku (BCC). V přijímači se 1-kový doplňkový součet všech znaků bloku včetně kontrolního znaku bloku spočítá a v případě přenosu bez chyb má být výsledek nulový.
7
Poznamenejme, že v jedničkové komplementární aritmetice se používá přenos, takže každý přenos vznikající součtem nejvýznamnějších bitů se přičítá k výsledku. A kromě toho nulu v komplementární 1-kové aritmetice reprezentují buď samé binárními nuly, nebo samé binárními jedničky.
Obr.3.15 Z obr. 3.15(b) se dá usoudit, že detekční schopnost této metody je lepší, než metody založené na součtu modulo-2. Protože 1-kový komplementární součet se dá snadno spočítat, tak se tato metoda detekce používá u řady aplikací, které vyžadují pro realizaci pouze SW přístup. 8
3.4.3 Redundantní cyklické kódy Předchozí dvě metody se lépe hodí pro aplikace, ve kterých dochází k ojedinělým chybám. Při výskytu chyb ve shlucích se musí použít dokonalejší metody. Shluk chyb začíná a končí chybou, i když bity uvnitř shluku mohou, ale také nemusí být zatíženy chybami. Takže shluk chyb je vymezen bity ležícími mezi dvěma chybnými bity včetně vymezující dvojice chybných bitů. A dále když se určuje délka shluku, musíme vzít v úvahu skutečnost, zda je poslední chybný bit shluku oddělen od následujících chybného bitu počtem B dobrých bitů, nebo počtem větším, kde B představuje délku shluku. Jako příklad dvou rozdílných délek shluku může sloužit obr.3.16. Poznamenejme, že prvý a třetí chybný bit nemůže být použit pro definici jediného 11-bitového shluku chyb, protože v intervalu dalších 11 bitů se vyskytuje chyba.
. Obr 3.16 Parita, nebo z ní odvozený kontrolní blokový součet nepředstavuje bezpečný prostředek pro detekci shluků chyb. V takových případech představují nejbezpečnější alternativu pro detekci chyb polynomické kódy. Polynomické kódy se používají k zabezpečení přenosu rámců (nebo bloků).
9
Z obsahu každého přenášeného rámce se vypočte a vygeneruje jedna skupina kontrolních bitů, která se připojí na konec rámce. Přijímač potom podobným způsobem vypočte pro přijatý rámec kontrolní součet. Jestliže vypočtený kontrolní součet bude souhlasit s kontrolním součtem připojeným ke konci odeslaného rámce, pak se nedetekuje žádná chyba. V opačném případě byl přenesen rámec s chybami. Počet kontrolních bitů pro zabezpečení rámce se volí podle typu předpokládané chybovosti, i když nejběžnější počet zabezpečovacích bitů je 16 nebo 32. Vypočtená kontrolní místa představují kontrolní posloupnost rámce (FCS –frame check sequence) nebo také místa cyklické redundantní kontroly (CRC-cyclic redundancy check). Příslušná matematická teorie polynomických kódů vybočuje mimo rámec tohoto výkladu, ale protože tato metoda využívá vlastnosti aritmetiky binárních čísel modulo-2, tak ji stručně popíšeme. Nechť: M(x) je k-bitové číslo (zpráva určená k přenosu) G(x) je (n + 1)-bitové číslo (dělitel nebo generátor) R(x) je n-bitové číslo takové, že k > n (zbytek dělení) Potom za předpokladu platnosti aritmetiky mod-2 platí: M ( x) × 2n R( x ) = Q(x ) + , kde Q ( x ) je kvocient G( x) G(x)
M( x) × 2n + R( x) = Q( x). G( x)
10
O platnosti druhé rovnice se snadno přesvědčíme tak, že k oběma stranám prvé rovnice přičteme výraz R( x )/G ( x ) , a tím dostaneme následující výsledek:
M( x) × 2n + R( x) R( x) R( x) = Q( x) + + ( ) ( ) Gx G x G( x) Pravá strana takto upravené rovnice se vlastně rovná pouze kvocientu Q( x ) , protože v aritmetice modulo -2 je součet stejných čísel vždycky roven nule, takže zbytek je nulový. Z prvé rovnice plyne, že celý obsah rámce M(x) rozšířený násobkem 2n o počet nul v délce generované kontrolní posloupnosti FCS je dělen v modulo -2 druhým binárním číslem - generačním polynomem G(x), který je o jeden bit delší, než FCS. Operace dělení je ekvivalentní s operací XOR, která se realizuje bit po bitu paralelně při zpracování jednotlivých bitů rámce. Zbytek dělení R(x) se potom stává kontrolní posloupností FCS, která se odešle jako závěr za posloupností informačních bitů. Na přijímací straně se posloupnost přijatých bitů spolu s FCS bity znovu vydělí stejným generačním polynomem – tedy (M(x) × 2n + R(x))/G(x) – a bude-li zbytek nulový, pak přijatá zpráva bude bez chyb. Nicméně nenulový zbytek prokáže přítomnost chyby.
Příklad 3.3 Posloupnost 8-bitových bloků (rámců) se má přenést datovým spojem s CRC zabezpečením pro detekci chyb. Jako generační polynom je použita posloupnost 11001. Jako příklad pro ilustraci se má realizovat proces pro (a) generování FCS (b) kontrolu FCS
11
Generování FCS pro zprávu 11100110 uvádí obr.3.17.
Obr.3.17 Nejprve se ke zprávě připojí čtyři nuly vyjadřující násobení hodnotou 24, protože FCS bude obsahovat 4 bity. Výsledný produkt se potom vydělí (modulo 2) generačním polynomem (binárním číslem). Operace modulo-2 je ekvivalentní s operací vylučovací-NEBO, realizovaná paralelně bit po bitu při zpracování každého bitu podílu. 12
V aritmetice modulo-2 můžeme také realizovat dělení v každém dílčím zbytku ovšem za předpokladu, že obě čísla budou mít stejnou délku, tedy že oba nejvýznamnější bity budou mít hodnotu 1. Přitom neuvažujeme relativní velikost obou čísel. Výsledný 4-bitový zbytek (0110) je potom FCS, který se v závěru připojí jako zakončení originálu zprávy při jejím vysílání. Kvocient se nepoužije. V přijímači se kompletní přijatá bitová posloupnost vydělí stejným generačním polynomem, jaký byl použit ve vysílači. Dva příklady uvádí obr.3.17(b). V prvém se předpokládá přenos bez chyb, takže zbytek je nulovýkvocient se zase nepoužívá. Ale ve druhém se vyskytl shluk chyb o čtyřech bitech v připojeném zakončení přenesené předpokládané bitové posloupnosti. Z toho tedy plyne, že zbytek dělení různý od nuly indikuje chybu v přenosu. ………………………………………………………………… Výběr generačního polynomu je důležitý proto, že určuje typ chyb, který lze detekovat. Uvažujeme přenášený rámec T(x) 110101100110 a chybovou posloupnost E(x) 000000001001 ve které bit 1 udává polohu zjištěné chyby. Takže v aritmetice modulo-2 bude: Přijatý rámec = T(x) + E(x) Tedy: T (x) + E x T (x) E(x) = + G( x ) G( x) G( x) ale T ( x )/G ( x ) nezanechává žádný zbytek. Takže chyba se detekuje pouze tehdy, když E ( x )/G ( x ) vytvoří zbytek.
13
Například všechny generační polynomy budou obsahovat alespoň tři prvky s bitem 1 a E ( x )/G ( x ) bude vytvářet zbytek pro detekci všech jednotlivých chyb a všech dvojnásobných chyb s aritmetikou modulo-2. Naopak shluk chyb o stejné délce jako G(x) může být násobkem G(x) a tudíž nezanechá žádný zbytek, takže chyby detekovány nebudou. Souhrnně řečeno, generační polynom o R bitech bude detekovat • Všechny jednotlivé chyby • Všechny dvojnásobné chyby • Lichý počet chyb • Všechny shluky chyb < R • Většinu shluků chyb ≥ R Běžný způsob zobrazování generačních polynomů nespočívá v binárním vyjádření, ale v takovém zápisu, ve kterém poloha jedničky na k-tém místě binárního zápisu se vyjádří jako Xk. Takže zápisy generačních polynomů CRC používané v běžné praxi budou vypadat takto: CRC – 16 = X16 + X15 + X2 + 1 CRC – CCITT = X16 + X12 + X5 + 1 CRC – 3 = X32 + X26 + X23 + X16 + X12 + X11 + X10 + + X8 + X7 + X5 + X4 + X2 + X + 1 Binárním vyjádřením polynomu CRC-16 bude tedy: 1 1000 0000 0000 0101 Před vygenerováním FCS pomocí tohoto generačního polynomu bude třeba připojit k obsahu rámce 16 nul. FCS bude tedy reprezentován 16-ti bitovým zbytkem. CSC-16 bude detekovat všechny shluky chyb kratší než 16 bitů a většinu shluků chyb delších nebo stejných. CRC-16 a CRC-CCITT jsou extenzivně využívány u WAN, zatím co CRC-32 u většiny LAN. 14
I když požadavek na realizaci opakovaného dělení modulo-2 se zdá velmi komplikovaný, tak v praxi jej lze obejít jednoduchým HW nebo SW. Pro ilustraci je v obr.3.18(a) uveden HW pro implementaci situace z obr.3.17.
Obr.3.18 15
Z příkladu vyplývá, že pro generování čtyř míst FCS bude nutný jen 4-bitový registr pro reprezentaci x3, x2, x1 a x0 bitu v generačním polynomu. Tato čtveřice představuje aktivní bity generačního polynomu. U tohoto generačního polynomu jsou místa x3 a x0 obsazena binární jedničkou (1), zatím co místa x2 a x1 binární nulou (0). Nové stavy prvků x1 a x2 posuvného registru přímo závisí pouze na stavech x0 a x1; nové stavy prvků x0 a x3 jsou determinovány stavem zpětné vazby s hradlem XOR a předchozím bitem. Obvod pracuje následovně. Posuvný registr FCS je vyprázdněn a prvých 8-bitů rámce je paralelně zavedeno do PISO vysílacího posuvného registru. Obsah tohoto registru je potom vyslán do vedení rychlostí vysílacích hodin T×C, přičemž nejvýznamnější bit se vyšle jako první. Synchronně s tímto procesem je stejná bitová posloupnost XORována s x3 a předána prostřednictvím zpětné vazby na vybrané vstupy FCS posuvného registru. S každým dalším 8-bitovým bytem zavedeným do vysílacího posuvného registru a jeho sériovým přenosem do vedení se procedura opakuje. Po odeslání posledního bytu rámce se nakonec posuvný registr zaplní nulami a zpětnovazební řídicí signál se změní z jedničky (1) na nulu (0), takže stávající obsah FCS posuvného registruvypočtený zbytek- bude odeslán do vedení za obsahem rámce. V obr.3.18(a) odpovídají obsahy vysílacího a FCS posuvného registru zpracovávání rámce s jedním bytem (N = 1), takže je to v souladu s dříve uvedeným příkladem obr.3.17. Obr.3.18(a) zachycuje obsah vysílacího a FCS registru po každém taktovacím impulzu vysílacích hodin. Vysílanou posloupnost bitů zobrazují čárkovaná políčka.
16
HW přijímače se podobá HW vysílače (obr.3.18(b)).
Obr.3.18(b) Přijímaná data (R×D) jsou vzorkována (a posouvána) v přijímacím posuvném registru SIPO uprostřed (nebo se zpožděním při kódování Manchester) bitového intervalu. Bitová posloupnost je v synchronizmu XORována s x3 a zaváděna do posuvného registru FCS stejně jako v předchozím případě. Každý přijatý byte je přečten tímto HW. Obsahy přijímacího a FCS registru odpovídají jedinému datovému bytu rámce jako u vysílacího CRC. 17
HW uvedený v obr.3.18 bývá při bitově orientovaném přenosu běžně součástí vysílacího detekčního zařízení. Ale v některých systémech se znakově orientovaným přenosem slouží CRC především pro kontrolu blokových součtů. V takových případech musí být CRC generován SW kontrolního zařízení a ne HW. Z obr.3.19 je zřejmé, že SW řešení pseudokódem je jednodušší. Kód předpokládá 8-bitový generační polynom (dělitel) a že přeformátovaný rámec -STX,ETX, atd- je ukládán do prostoru bytové vyrovnávací paměti. Stejný kód může sloužit pro generování CRC a kontrolu chybovosti; pro generování má vyrovnávací paměť obsahovat byte/znak tvořený samými nulami.
Obr.3.19
18
Jiný způsob reprezentace cyklického zabezpečení Uvažujme posloupnost dat 1010001101, kterou reprezentuje polynom x9 + x7 + x3 + x2 + 1. Bit který odpovídá členu nejvyššího stupně je vysílán jako první. Zacházení s těmito mnohočleny podlého zákonům normální algebry s výjimkou sčítání, které má charakter sčítání modulo-2. Sčítání v aritmetice mod 2 probíhá bez přenosu následovně: x7 + x6 + x5 + x2 + 1 11100101+ x7 + x5 + x4 + x3 + x2 1 0111100= -------------------------------------------------------6 4 3 x + x +x +1 01011001 Násobení v aritmetice mod 2 se provádí tímto způsobem: (x7 + x6 + x5 + x2 + 1) (x + 1) =1110010×11= 8 7 6 3 x + x + x +x + x 111001010 + 7 6 5 2 x + x + x +x +1 = 011100101 = --------------------------------------------------------------8 5 3 2 x + x +x +x +x +1 100101111 K přenosu uvažované posloupnosti dat (zprávy)
M(x) = x9 + x7 + x3 + x2 + 1 použijeme generační mnohočlen
G(x) = x5 + x4 + x2 + 1 Kroky nutné pro přenos jsou: Krok 1: Zpráva M(x) se vynásobí xr, čímž vznikne na místech nižšího řádu r nul. Krok 2: Výsledek se vydělí mnohočlenem G(x). Tím vznikne podíl Q(x) a zbytek (syndrom) R(x) →
xr× M(x)/G(x) = Q(x) ⊕ R(x)/G(x)
19
Krok 3: Zbytek (syndrom) se přičte ke zprávě, čímž se na r místech nejnižšího řádu objeví r členů. Teprve tato zpráva T(x) = xrM(x) ⊕ R(x) se vyšle. Příklad: Mějme G(x)=x5+x4+x2+1, pro který platí r=5. Zpráva M(x) k odeslání dvojkový tvar 1 0 1 0 0 0 1 1 0 1. Krok 1: xrM(x) = x5(x9+x7+x3+x2+1) = x14 + x12 + x8 + x7 + x5 což je ekvivalentní 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0. Krok 2: Tento mnohočlen se vydělí mnohočlenem G(x) = x5+x4 +x2+1, vznikne podíl x9+x8+x6+x4+x2+x a zbytek x3+x2+x je ekvivalentní s 01110. Data určená k vyslání: 1 0 1 0 0 0 1 1 0 1 Generační mnohočlen: 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 ← podíl Dělení mnohočlenem: -----------------------------G(x) → 1 1 0 1 0 1 101000110100000 110101 ------------111011 110101 ------------111010 110101 ------------111110 110101 ------------101100 110101 ------------110010 110101 ------------1 1 1 0 ←zbytek 20
Bitový sled který se vysílá: původní bity → 101000110101110 ← zabezpečovací bity Původní sled bitů je tedy vysílán s pěti dalšími bity, které slouží k detekci chyb. Tyto bity se vysílají zleva doprava, pět zabezpečovacích bitů nakonec. Pro dělení platí rovnice
xr× M(x)/G(x) = Q(x) ⊕ R(x)/G(x) Proto xr× M(x) = Q(x)×G(x)⊕ R(x) Odečítání v aritmetice mod 2 je stejné jako sečítání (žádné přenosy), proto
xr× M(x) ⊕ R(x) = Q(x)×G(x) Pro vysílanou zprávu bude tedy platit
T(x) = xr× M(x) ⊕ R(x) = Q(x)×G(x) Vysílaná zpráva je proto beze zbytku dělitelná generačním mnohočlenem G(x). Právě této vlastnosti se využívá ke zjištění případné chyby. Přijímač ve skutečnosti dělí mnohočlen přijaté zprávy mnohočlenem G(x). Při zbytku různém od nuly muselo dojít k chybě. Při nulovém zbytku chyba buď nevznikla, nebo je nedetekovatelná.
21