Obsah
Hammingove kódy sa používajú na vkladanie informácií o oprave chýb do dátových tokov. Kódy sú navrhnuté tak, aby sa chyba nielen zistila, ale aj opravila. Pridanie informácií o oprave chyby zvyšuje množstvo dát, ale tiež zvyšuje spoľahlivosť komunikácie cez médiá s vysokou chybovosťou.
Hammingovo kódovanie môže byť komplikované pri implementácii, ale dá sa to urobiť veľmi rýchlo pomocou aritmetických trikov na bitovej úrovni. To umožňuje vytvorenie užitočného a vysokorýchlostného systému korekcie chýb, ktorý sa bude používať vo vstavaných aplikáciách.
Krok 1
Vytvorte údajové slovo. Akýkoľvek bit s pozíciou, ktorá je silou dvoch (prvý, druhý, štvrtý atď.), Musí byť vyhradený pre paritné informácie. Používajte tak dlho, ako je to potrebné na to, aby slovo malo pôvodné údaje a paritné bity.
Príklad:
1 1 0 1 0 0 1 0 sa stáva _ _ 1 _ 1 0 1 _ 0 0 1 0
Pôvodné bity zostávajú v rovnakom poradí, ale boli rozložené na vloženie paritných bitov.
Krok 2
Vypočítajte prvý paritný bit. Počnúc prvým bitom sa bit trochu načíta, potom sa bit trochu preskočí a postup sa opakuje až do konca. Medzitým sa počíta počet nájdených. Paritné bity sa do tohto procesu nezapočítavajú.
Ak je počet párnych párov, nastavte prvý bit na nulu. V opačnom prípade nastavte jeden.
Príklad:
Bity 1, 3, 5, 7, 9 a 11 z _ _ 1 _ 1 0 1 _ 0 0 1 0, _11101, obsahujú štyri. Je to párne, takže prvý bit je nastavený na nulu: 0 _ 1 _ 1 0 1 _ 0 0 1 0
Krok 3
Vypočítajte zostávajúce paritné bity. Počnúc druhým bitom sa načítajú dva bity, potom sa dva bity preskočia a postup sa opakuje až do konca. Štvrtý bit číta štyri bity, preskočí ďalšie štyri, počnúc bitom štyri. Rovnaký vzor nasleduje všetky paritné bity, kým sa nevypočítajú všetky.
Príklad:
Bit 2: 0 _ 1 _ 1 0 1 _ 0 0 1 0 kontroluje _1, 01, 01, ktoré obsahujú tri, takže bit 2 je nastavený na jednu. Bit 4: _ 0 1 1 1 0 1 _ 0 0 1 0 kontroluje _101, 0, ktorý obsahuje dva, takže bit 4 je nastavený na nulu. Bit 8: 0 1 1 0 1 0 1 _ 0 0 1 0 kontroluje _0010, ktorý obsahuje iba jeden, takže bit 8 je nastavený na jednu.
Slovo je preto kódované ako 011010110010.
Krok 4
Potvrďte slovo. Ak je slovo poškodené, paritné bity sa nezhodujú s očakávaním. Na potvrdenie, že slovo nie je poškodené, stačí pomocou krokov 2 a 3 vypočítať paritné bity. Ak bity nie sú rovnaké, zaznamenajte ich polohy.
Krok 5
Opravte nesprávny bit. Ak nájdete nesprávne paritné bity, jednoducho pridajte polohy bitov. Celková hodnota je pozícia nesprávneho bitu. V tejto polohe zmeňte bitovú hodnotu.
Napríklad ak sú nesprávne paritné bity jedna a štyri, zmenou hodnoty piateho bitu chybu opravíte.