Kódy pro detekci a opravu chyb INP 2008 FIT VUT v Brně 1
Princip kódování 0 1 0 vstupní data kodér Tady potřebujeme informaci zabezpečit, utajit apod. Zakódovaná data: 000 111 000 Může dojít k poruše, např.: 001 110 000 dekodér 0 1 0 chceme získat původní data Předpokládejme kódovací předpis např.: 0 000, 1 111 Uvedené kódování může být použito buď pro přenos dat mezi jednotkami nebo pro celý systém (například počítač). Zabezpečení informace je založeno na vhodném využití 2 redundance.
Základní kódy pro detekci a opravu chyb Parita Ztrojení Hammingův kód (7,4) Rozšířený Hammingův kód 3
Parita a Hammingova vzdálenost Nejjednodušší kód detekující jednu chybu (SED) dostaneme doplněním paritního bitu, např. na sudou paritu (nebo lichou důvody, proč zvolit sudou, nebo lichou paritu jsou podmíněny použitou obvodovou technologií). 0110 1010 0 1000 0000 1 1111 1111 0... Popsané uspořádání se nazývá paritní kód. Kombinace se zvolenou sudou, tedy správnou paritou se označují jako kódov dové, kombinace s chybnou (lichou) paritou jako nekódov dové. Kontrola správnosti dat se zjišťuje kontrolou parity. Hammingova vzdálenost kódových složek je definovaná jako nejmenší počet bitů, v nichž se dvojice kódových kombinací liší, zjištěný pro všechny dvojice. U tohoto kódu je Hammingova vzdálenost rovna 2. Příklad sudého paritního kódu: x 2 x 1 x 0 p 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 Minimální vzdálenost, zjištěná u každé dvojice kódových slov je Hammingova vzdálenost kódu d H. U paritního kódu je to d H = 2. 4
Ztrojení (kód typu SEC - Single-Error Correction ) Ztrojením jednoho bitu dostaneme dvě kódové kombinace, a to 000, 111, a 6 nekódových kombinací. kódov dové kombinace nekódov dové kombinace 0 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 Za předpokladu jediné chyby (jednobitové) je možno určit, ze které kódové kombinace daná nekódová kombinace vznikla. Dostali jsme tak kód opravující jednoduché chyby (Single-Error Correction - SEC). Jeho Hammingova vzdálenost je 3. 5
Hammingova vzdálenost: demonstrace Richard Wesley Hamming, +Jan. 6, 1998 Pro opravu l násobn sobné chyby musí být Hammingova vzdálenost d 2l +1. Obrázek: Kroužky nakreslené plnou čarou představují kódové kombinace, tečkované kroužky znamenají nekódové kombinace. Mezi sousedními kroužky v jednom řádku je Hammingova vzdálenost rovna jedné. Je zřejmé, že pro kód s Hammingovou vzdáleností d = 2 nemůžeme rozhodnout, ze které kódové kombinace vzniklo vlivem jednobitové chyby nekódové slovo, a nedokážeme tedy chybu opravit. Opravu jednobitové chyby můžeme provést až u kódu se vzdáleností d = 3. d = 1 SED SEC SEC - DED DEC 2 3 4 5 6
Hammingův kód (n, k) n délka kódového slova (v bitech) k počet informačních bitů m počet kontrolních bitů n = 2 m 1 n = m + k Př. HK(7, 4), HK(15, 11), Nejznámější SEC je HK(7, 4) 7
Hammingův kód (7,4) Podle hodnoty zavedeného indexu i se rozhodne o funkci příslušného bitu: je-li i mocnina dvojky, je bit kontrolní (C), v ostatních případech je bit informační (I). Rozmístění symbolů x v generující matici je popsáno generujícími rovnicemi. Je tak definován způsob doplňování hodnot kontrolních bitů, tedy jistým způsobem vypočítávaných paritních bitů. 8
Hammingův kód (7,4) Přičteme-li operací XOR k oběma stranám generujících rovnic pořadě C 1, C 2, C 4, dostaneme tzv. kontrolní rovnice C 1 I 3 I 5 I 7 = 0 = S 1 C 2 I 3 I 6 I 7 = 0 = S 2 C 4 I 5 I 6 I 7 = 0 = S 4 Výpočtem kontrolních rovnic pro kódová (správná) slova dostaneme nuly. Pro nekódová slova, která vzniknou jednobitovou chybou z kódových slov vyjdou výpočtem kontrolních rovnic nenulové hodnoty S 4, S 2, S 1, zvané syndrom chyby. Syndrom jednoduché chyby udává binárně hodnotu indexu i bitu s chybou. Chybu pak můžeme opravit změnou hodnoty takto zjištěného bitu na hodnotu opačnou. Pro dvojnásobnou chybu však mechanizmus selhává a syndrom chyby udává nesprávnou polohu chyby. Je to způsobeno tím, že takto definovaný kód je SEC, nikoli však DED. Proto je nutno doplnit definici kódu tak, aby kód získal vlastnost DED, získáme rozšířený Hammingův kód. 9
Rozšířený Hammingův kód Do kódu se doplní kontrolní bit C 0 (normální paritní bit), popsaný generující rovnicí C 0 = C 1 C 2 I 3 C 4 I 5 I 6 I 7 a kontrolní rovnicí S 0 = C 0 C 1 C 2 I 3 C 4 I 5 I 6 I 7 10
Příklad: Rozšířený Hammingův kód d = 4 na čtyřech informačních bitech, jsou přidány čtyři kontrolní bity. Linearita kódu: součet modulo 2 dvou kódových slov vytvoří opět platné kódové slovo. I 7 I 6 I 5 C 4 I 3 C 2 C 1 C 0 X X X X X X X X X X X X X X X X X X X X 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 11
Rozšířený Hammingův kód - syndrom Dále definujeme syndrom chyby S = S 1 + S 2 + S 4 Pomocí hodnot S, S 0 dostaneme klasifikaci chyb: Základní typ jednoduché chyby se projeví nenulovým syndromem a chybou parity. V takovém případě se provede oprava. Stejně se však projeví i trojnásobná chyba a další chyby s lichou násobností. Dvojitá chyba (a další chyby se sudou násobností) se projeví nenulovým syndromem a správnou paritou. Oprava není možná. Zvláštním případem je hlášení s nulovým syndromem a chybnou paritou. Jde buďto o případ vícenásobné chyby, nebo o poruchu hlídače parity. V obou případech se oprava chyby nedá provést. 12
Generování a kontrola parity x0 x1 x2 x3 x4 x5 x6 x7 p x0 x1 x2 x3 x4 x5 x6 x7 p 1 = error 0 = OK p = x0 + x1 + x2 + x3 + x4 + x5 + x6 + x7 zde je + operátor XOR errror = x0 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + p 13
Oprava chyb pomocí syndromu Hammingova kódu S 0 S S1 S2 S4 & DC bin na 1 z 8 Enable 0 1 2 3 4 5 6 7 C1 1 C2 2 I3 3 C4 4 C1 C2 I3 C4 I5 5 I5 I6 6 I6 I7 7 I7 Dekodér syndromu Korektor 14
Zobecněný Hammingův kód Uvážíme-li obvodovou realizaci generujících a kontrolních rovnic, zjistíme, že obvod podle nejdelší rovnice pro C 0 resp. S 0 má největší zpoždění, tedy že zdržuje. Je tedy žádoucí optimalizovat rovnice tak, aby všechny obvody měly shodné zpoždění. Soustavu rovnic lze upravovat přičítáním rovnic jedné k druhé resp. náhradou jedné rovnice lineární kombinací dalších rovnic. Dospějeme tak k definici zobecněného Hammingova kódu du, který je definován generující maticí stejných rozměrů jako rozšířený Hammingův kód, pro jehož sloupce platí: - všechny sloupce jsou nenulové - žádné dva sloupce nejsou shodné Je zřejmé, že jedinou nevýhodou, která z použití zobecněného Hammingova kódu vyplývá je to, že syndrom chyby nedává index chybného bitu přímo, ale až po překódování, které se realizuje pomocí překódovací tabulky. 15
Redundance kódu a CNC Redundance kódu R je procentuální vyjádření počtu přidaných (kontrolních) bitů C k původnímu počtu informačních (datových) bitů I R = C / I Redundance 8-bitového kódu s přidaným paritním bitem je R parity8 = 1/8 = 0,125 = 12,5% Redundance ztrojeného kódu je 200%. Dále se můžeme setkat s parametrem, označeným zkratkou CNC Code to Noncode ratio. Je to poměr počtu kódových a nekódových slov, tedy kódových a nekódových binárních kombinací z celkového množství binárních kombinací dané délky. Pro paritní kód je poměr CNC 1:1, tedy 1, pro ztrojený kód je poměr CNC 2:6, tedy 0,33. Otázka zka: Jaká je hodnota redundance a CNC pro jednoduchý a rozšířený Hammingův kód s délkou n informačních bitů? 16