Professional Documents
Culture Documents
Kodolas
Kodolas
Kodolas
I. KÓDOLÁS
A kódolás általában véges mennyiségű tárgy, fogalom, tulajdonság, szimbólum stb. adott
rendszerben való megkülönbözetése. Vagyis e véges számú „valami”-hez (tárgy, fogalom,
tulajdonság, stb.) különböző szimbólumot rendelünk.
Ugyanakkor, a digitális technika és informatika elemei csak kétállapotú villamos jelekkel
dolgoznak. Utóbbiakat feszültségjel esetén magasabb és alacsonyabb feszültségszintnek
nevezhetjük. E két állapotot igaz és hamis ill. „logikai 0” és „logikai 1” pároknak feleltetjük
meg (a logikai jelző magyarázatát most nem tárgyaljuk, arról részletesen lesz szó a Boole
algebrát bevezető II. fejezetben). A magasabb feszültségszint felel meg a (logikai) 1-nek, az
alacsonyabb pedig a logikai 0-nak. E két információs érték célszerűen a kettes
számrendszerbeli számoknak (0 és 1) is megfeleltethető. A kettes számrendszerbeli
számjegyeket az angol megnevezés két szavának (binary digit) első és utolsó betűit
felhasználva „bit”-eknek nevezzük.
Az elmondottak alapján érthető, hogy a digitális elektronikában a kódolás ezen véges számú
„valami”-k „1”-esek és „0”-k különböző és különböző hosszúságú sorozatával (pl. 1011101,
0111, 00100, stb.) való leírását jelenti.
0110 B = 0 ⋅ 2 3 + 1 ⋅ 2 2 + 1 ⋅ 21 + 0 ⋅ 2 0 = 0 + 4 + 2 + 0 =6 D .
A nagybetűs indexek bináris (B: bináris=kettes) ill. decimális (D: decimális=tízes)
számrendszerbeli számot jelöl (az indexelést csak akkor fogjuk alkalmazni, ha
megkülönböztetésként mindenképpen szükség van rá, ill. ha ezt hangsúlyozni kívánjuk).
Tekintettel arra, hogy a kódolási módszer súlyokat használ, az NBCD kódot (kódolást)
súlyozásos kódnak nevezhetjük.
Kódolás, kódok
2 Dr. Glöckner György – Digitális elektronika
Az egyes helyiértékeket általában úgy szoktuk megadni, hogy bal oldalon kap helyet a
legnagyobb helyi-értékű bit (Most Significant bit=MSb), míg jobb oldalon a legkisebb helyi-
értékű bit (Least Significant bit=LSb). Ezt a konvenciót fogjuk a továbbiakban is mindig
követni.
Felvetődhet a kérdés, hogy van-e más olyan 4-bites kód(olás), ahol mások a súlyozások?
A válasz erre az, hogy igen, és a 2. ábra további 4-bites kódok súlyozását mutatja be.
Kódolás, kódok
3 Dr. Glöckner György – Digitális elektronika
A megadott decimális számjegyek az egyes bitek súlyát adják meg. Így például az 5421 kód a
4 bithez balról jobbra haladva 5, 4, 2 és 1 súly(ozás)t rendel. Ezen kódok közül néhány a
későbbiekben fontosabb szerepet kap, például a 2421-es kód (3.a. ábra). A 2421-es kódot
3.a. ábra szerinti megvalósításban – létrehozója (H.H. Aiken) után - Aiken kódnak nevezzük
Aiken kód
Decimális 2421 Decimális
Decimális 2421
számjegy kód érték Bitek számjegy kód
Súlyok
0 0000 0 0000
1 0001 1 0001
2 0010 2 1000
3 0011 Egymást 3 1001
„teljes
4 0100 kitöltésűvé”
4 1010
Nem
5 1011 használt kiegészítő 5 0101
6 1100 kombi- kódok 6 0110
7 1101 nációk 7 0111
8 1110 8 1110
9 1111 9 1111
Egy 2421 kód (Aiken-kód) Egy másik 2421 kód
A 3.b. ábra a kód egy vizuálisan jobban követhető ábrázolását mutatja. Ahogy látható, a 10
kód a decimális érték alapján sorban felírt 16 bináris kódszó első és utolsó 5-5 helyét foglalja
el. Ráadásul az első 8 és az utolsó 8 kódszavak közötti elválasztó vonaltól („szimmetria-
vonaltól”) egyforma távolságra található kódszavakban a fehér és fekete cellák páronként
kiegészítik egymást. Ezen (ú.n. önkomplemenetáló) tulajdonságot később majd még
részletesebben tárgyaljuk.
Feltehető a kérdés, hogy a 2. ábrán látható kódok egyértelműek-e (vagyis az adott kódban
minden kódszó csak egyféleképpen írható-e fel). Mivel - az NBCD kódon kívül - mindegyik
kódnál egy vagy több súly összege egy másik súlyt ad eredményül, így belátható, hogy erre a
kérdésre a válasz: NEM. Vagyis nem egyértelműek a 2. ábrán bemutatott kódok. Némely
kódnál ráadásul azonos súlyokat is találunk (pl. 2421, 5311, 5221, stb.) – itt még
szembeötlőbb a nem egyértelműség. Például az említett 5421 kódban a 6D decimális
számjegy többféleképpen is megadható. Mind a 0110B, mind az 1001B értékként 6D-ot
eredményez.
Térjünk vissza egy pillanatra a 2421 kódhoz. Az Aiken féle Decimális 84 (-2) (-1)
változat mellett felírható több más módon is a kód, pl. a 3.c. számjegy kód
ábra szerinti módon. (Ráadásul utóbbi módozat ugyancsak 0 00 0 0
rendelkezik a 3.b. ábrán látható módozatra ismertetett és 1 01 1 1
később tárgyalandó ú.n. önkomplementáló tulajdonsággal.). 2 01 1 0
3 01 0 1
Következő kérdésként tegyük fel azt, hogy: szerepelhet-e 4 01 0 0
nemcsak pozitív, hanem negatív súly is egy kód súlyozásában. 5 10 1 1
Természetesen, kizárólag negatív súllyal bizonyosan nem 6 10 1 0
írható fel egy kód. Válaszunk az, hogy igen, és erre például 10 0 1
7
szolgál az 4. ábra. Itt a 8 4 (-2) (-1) kódo(lás)t adtuk meg
8 10 0 0
példaként. Az első két súly pozitív, míg a második kettő
9 11 1 1
Kódolás, kódok
5 Dr. Glöckner György – Digitális elektronika
(pl. a vonal alatti 2D-hez 0010 kódszó, míg a 2D 9-es komplemenséhez (7D) a 0111 tartozik és
ez nem komplemense a 0010-nak.
Könnyen találunk azonban önkomplementáló kódot. Ilyen kód előállítható az NBCD kód
kisebb átalakításával is! Toljuk el a decimális számjegyekhez képest a kódszavakat felfelé.
Persze ehhez szükségünk van a 9 feletti értékekhez tartozó 3 következő kódszóra is (7. ábra)
A 7. ábra középső oszlopa kibővített NBCD
NBCD Bináris 3-többletes
kódszavakat mutatja, míg a bal oldali
kód kód BCD kód
oszlopban az NBCD kódnál az ezen
kódszavakhoz hozzárendelt decimális számok 0 0000 -
láthatók. A jobb oldali oszlop azt a megoldást 1 0001 -
mutatja, amikor a középső oszlopban található 2 0010 -
kódszavakhoz a decimális számokat 3 sorral 3 0011 0
lefelé tolva rendeljük hozzá. Az így kapott 4 0100 1
kódot 3-többletes BCD kódnak (vagy röviden 5 0101 2
3-többletes kódnak) nevezzük (angolul 6 0110 3
excess-3=XS3). A kód - George Stibitz után – 7 0111 4
a Stibitz kód nevet viseli. 8 1000 5
Látható, hogy az így – +3-mal – eltolt kód 9 1001 6
éppen teljesíti a kívánalmakat (ellenőrizzük - 1010 7
otthon magunk) Itt már természetesen - 1011 8
súlyozásról nem tudunk beszélni vagyis a kód
- 1100 9
nem súlyozásos. Mivel azonban minden kód
egyértelműen van definiálva, így ez is
egyértelmű kód lesz. 7. ábra
Kódolás, kódok
6 Dr. Glöckner György – Digitális elektronika
Fotodióda-
fototranzisz
tor párok
Kódolás, kódok
7 Dr. Glöckner György – Digitális elektronika
Fotodióda-
fototranzisz
tor párok
Kódolás, kódok
8 Dr. Glöckner György – Digitális elektronika
14. ábra
Kódolás, kódok
9 Dr. Glöckner György – Digitális elektronika
3-többletes G R A Y kód
Gray kód
3-többletes NBCD-kód
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NBCD kód 13. ábra
Kódolás, kódok
10 Dr. Glöckner György – Digitális elektronika
A 15. ábra – a megismert ciklikus BCD kódon kívül - még továbbiakat is bemutat.
Ahogy látható e kódok közül több is ráadásul a nem hagyományos értelemben vett módon
önkomplementálók is.
Ciklikus kódok
Gray- Glixon O'Brien- 3-többletes Tompkins Petherick
kód kód kód Gray-kód kód kód
0000 0000 0000 0001 0010 0000 0010 0101
0001 0001 0001 0011 0110 0001 0011 0001
0011 0011 0011 0010 0111 0011 0111 0011
0010 0010 0010 0110 0101 0010 0101 0010
0110 0110 0110 0100 0100 0110 0100 0110
0111 0111 1110 1100 1100 1110 1100 1110
0101 0101 1010 1110 1101 1111 1101 1010
0100 0100 1011 1010 1111 1101 1001 1011
1100 1100 1001 1011 1110 1100 1011 1001
1101 1000 1000 1001 1010 1000 1010 1101
1111
1110
1010
15. ábra
1011
1001
1000
Kódolás, kódok
11 Dr. Glöckner György – Digitális elektronika
A kód nem súlyozásos de - mivel a táblázatban megadott módon definiált, így - egyértelmű.
Minden egyes kódszóban pontosan 2 darab 1-es valamint 3 darab 0 szerepel. Az adatátvitel
során esetlegesen bekövetkező 1 bit hibás megváltozásának észlelését ez megkönnyíti, hiszen
a hiba következtében vagy egy vagy három darab 1-es lesz csak a meghibásodott kódszóban.
További redundáns kódok láthatók a 17. ábrán, melyeknek kódszavai 7-bitesek. A hét bit
mindkét esetben 2-2 csoportból áll (egy 5-
bites és egy 2-bites – innen az elnevezésük) és Decimális Bi-kvináris Kvi-bináris
mindkét csoportban csak 1-1 darab 1-es lehet, számjegy 50 43210 86420 10
a többi bit 0. Ez 1 bit hibája esetén tovább 0 01 00001 00001 01
szűkítheti a hiba behatárolását. A kódok 1 01 00010 00001 10
egyértelműek is (hiszen látszólag több kódszó 2 01 00100 00010 01
is felírható lenne más súlyok összegeként, de 3 01 01000 00010 10
úgy már nem lenne igaz a csoportonkénti 1 4 01 10000 00100 01
darab 1-es kitétele (pl.: 5=4+1, stb.). 5 10 00001 00100 10
Mind a bemutatott 5-bites, mind pedig a 6 10 00010 01000 01
7-bites kódoknál természetesen csak 1 bit 7 10 00100 01000 10
meghibásodását tudjuk észrevenni 8 10 01000 10000 01
(detektálni), hiszen ha egy kódcsoportban az
9 10 10000 10000 10
egyik 1-es 0-ra, egy másik, ugyanezen
csoportbeli 0-ás bit pedig 1-esre változik, úgy 7-bites redundáns kódok
a hiba ez alapján nem állapítható meg (pl. bi- 17. ábra
kvináris kód 5D és 6D közötti változása).
A 16. és 17. ábrák kódolási módszere tehát 1 bit megváltozásának detektálását teszi lehetővé.
További redundáns kód látható a 18. és 19. ábrán.
Az „1 a 10-ből” kód
' 1 a 10-ből kód '
Decimális súlyozásos és a súlyok a
érték 9 8 7 6 5 4 3 2 1 0 decimális számjegyek értéke.
0 0 0 0 0 0 0 0 0 0 1
Vagyis bármely kódszónál
1 0 0 0 0 0 0 0 0 1 0 csak 1 bit nem lesz 0. Ez 1
2 0 0 0 0 0 0 0 1 0 0 bit hiba észlelését teszi
3 0 0 0 0 0 0 1 0 0 0 lehetővé a 16. és 17. ábra
4 0 0 0 0 0 1 0 0 0 0 kapcsán elmondottak
5 0 0 0 0 1 0 0 0 0 0
6 0 0 0 1 0 0 0 0 0 0
értelmében.
7 0 0 1 0 0 0 0 0 0 0 A 19. ábra kódja nem
8 0 1 0 0 0 0 0 0 0 0 súlyozásos, de ciklikus.
9 1 0 0 0 0 0 0 0 0 0
Kódolás, kódok
12 Dr. Glöckner György - Digitális elektronika
Megjegyzések
1. A Gray-kód csak mind a 16 kódszavára nézve teljesen (körbe is) ciklikus! A Gray kód BCD-re vonatkozó 10 kódszavára ez nem igaz.
Ezt is orvosolja a 3-többletes Gray kód.
2. Nem hagyományos értelemben való önkomplementálónak tekintettük azt a kódot, melynél egy adott decimális szám kódszava legnagyobb
helyiértékű bitjének komplementálásával megkapjuk a e decimális szám 9-es komplemensének kódszavát.
2. KARAKTEREK KÓDOLÁSA
Nemcsak számok vannak, melyeket „érthetővé” kell gyakran tennünk a digitális technika
eszközei számára, hanem betűket, egyéb írásjelek (pl. zárójel, vessző, pont, stb.) és vezérlő
(ú.n. nem nyomtató) karakterek(pl. a billentyűzet jobbra, balra, fel, le jelei, stb.) is ide
tartoznak. A megadott jelek kódolásához több bitre van szükség.
Karaktereknek nevezzük a számokat, kis- és nagybetűket, írásjeleket, szimbólumokat és nem
nyomtatódó egyéb (ld. korábban) karaktereket.
Ezen kódok kialakulása során csak a kiterjesztett BCD (EBCD), telex-kódot (= Baudot-kód =
ITA1-kód, ITA = International Telegraphy
Legkisebb helyiértékű bitek
Alphabet: Nemzetközi Telegráf ABC) és a ma
legelterjedtebben használatos ISO-7 kódot „Betűk” (LTRS) billentyűvel
(= ASCII: - American Standard Code for
Information Interchange – kód) ismertetjük.
A telex kód alapjai - a más szakterületen is
jelentős munkát végző – Emile Baudot francia „Számok” (FIGS) billenytűvel
ASCII kód
23. ábra
15 Dr. Glöckner György – Digitális elektronika
A 8-bites egységek neve bájt (byte). Így 1 bájt 2 tetrádból áll: egy (leg)nagyobb (leírva a bal oldali) és
egy (leg)kisebb helyiértékű (leírva a jobb oldali) tetrádból. A Unicode 16 bitje pedig 4 tetrádból áll:
egy legnagyobb helyiértékű (MS) és egy legkisebb helyiértékű (LS) és két középső tetrádból. A 16 bit
persze 2 bájtból (egy MS bájtból = MSB és egy LS bájtból = LSB) áll.
Korábban említettük, hogy a kódolt információk (pl. számok, betűk és egyéb karakterek és egyéb
információ) átvitelre kerülhetnek.
Adatátviteli
közeg
24. ábra
Az adatátvitel a küldő oldalról a vevő oldalra történik az adatátviteli közegen keresztül. Ezen átvitel
során a közeg környezetében előforduló zajok jel - és így az információ – torzulását okozhatják. Ez
információ módosulását vagy elvesztését jelentheti.
Néhány, a környezetből származó és az információ átvitelt károsan befolyásoló probléma:
• Elektrosztatikus vagy elektromágneses interferencia a közelben levő gépek, áramkörök miatt
• A jel csillapodik a távolság és a közeg ellenállása miatt
• A kapacitások és induktivitások torzulást okozhatnak
• Szivárgások miatt átviteli veszteségek léphetnek fel
• A légkör statikus zajai miatt impulzusok keletkezhetnek
A zajok csökkentésére vagy megszüntetésére csak ritkán (pl. vezetékes közeg esetén) van lehetőség.
Gyakran a zajcsökkentő megoldások egy adott szint (eredményesség) felett igen költségesek is
lehetnek. Ezért az ésszerű és lehetséges zajcsökkentések mellett egyéb megoldásokat is használunk. A
küldendő oldalon az eredeti információt olyan többlet-információval egészítjük ki, mely lehetővé teszi,
hogy az átvitel során esetleg megsérült információ hibáját /hibáit a vevő oldalon észlelni vagy esetleg
javítani tudjuk. Ezért is igen nagy szerepe van a karakterek kódolásának és annak a többlet-
információnak, amellyel az eredeti adategységeket (kódszavak) a hiba észlelése vagy javítása céljából
ellátjuk. Igen széles választékát dolgozták ki ezen célú módszereknek, így most csak betekintést
kívánunk adni néhány elterjedt módszer elvébe és lényegébe.
3.2. Stratégiák
A hibásnak talált információ regenerálása érdekében kétféle stratégia létezik
Kódolás, kódok
16 Dr. Glöckner György – Digitális elektronika
Ha a hasznos bitek adatátvitelének sebességéről beszélünk, akkor a bitek átviteli sebességét (hasznos
adatátviteli frekvenciáját: f b ) meg kell szorozni a hatékonysággal: f b' = e ⋅ f ' .
Kódolás, kódok
17 Dr. Glöckner György – Digitális elektronika
ki, hogy a kiegészített adatszó összességében adott (páros vagy páratlan) számú 1-est tartalmazzon. Így
például, ha a páros paritás módszerét használjuk, akkor a kiegészítő, ú.n. paritás bittel úgy egészítjük
az adatszót, hogy összességében páros számú 1-es szerepeljen a kapott adatszóban, vagyis az eredő
adatszó páros paritású lesz. Ha az eredeti adatszó páros számú 1-est tartalmazott, úgy 0 lesz a
paritásbit, míg ha páratlan számú 1-es szerepelt, úgy 1-es lesz e kiegészítő bit.
Gyakori az összességében 8-bites adatszó. Az ASCII kód eredendően 7-bites, és így 8. (MS) bitjét
paritásbitként paritásos hibaészlelés céljából használják fel. Például a bináris 101,0011B 7-bites kód (a
vessző csak a 4-bites egységek – tetrádok – jobb elkülöníthetőségét segíti) 4 darab 1-est tartalmaz.
Ezért páros paritás választása esetén 0-val, 0101,0011B-re egészül ki, míg például a 011,1110B kód
1011,1110B-re. A 25. és 26. ábra további példákat mutat be, utóbbin páros paritásbitet képeztünk.
Paritásbit Paritásbit
1-esek
Eredeti 7 adatbit páros páratlan
száma
paritáshoz paritáshoz
D6 D5 D4 D3 D2 D1 D0
1 1 1 1 1 0 1 6 0 1
0 0 1 1 0 1 0 3 1 0
0 1 1 1 0 1 0 4 0 1
25. ábra
Páratlan paritás használatánál pedig úgy
egészítjük ki a 7 bitet 8-ra, hogy P D6 D5 D4 D3 D2 D1 D0
összességében páratlan számú 1-es legyen a
8-bites kódban.
Ha egy paritásbites kódszóban1 bit hiba 1 0 1 1 1 1 0 1
következik be, úgy ellentétes paritásúvá
válik a kód, így észlelni tudjuk, hogy hiba
van. Sajnos azt nem tudjuk megmondani, 0 1 0 1 1 0 1 0
hogy melyik bit lett hibás, így a módszer
hiba javítását nem teszi lehetővé.
1 0 1 1 1 0 0 0
Ugyanakkor több, például 2 hiba
bekövetkeztét már nem (biztos, hogy) 26. ábra
érzékeljük (kiolthatják egymást). Ha például
egy páros paritásbites kódszóban 2 darab 0 változik 1-re vagy 2 darab 1-es 0-ra, úgy változatlanul
páros lesz a paritás (2-vel több illetve kevesebb lesz az 1esek száma), míg ha az egyik 1-es 0-ra, egy 0
pedig 1-re változik, úgy nem változik összességében az 1-esek száma. Vagyis ekkor észrevétlen marad
a hiba.
Tehát a paritásbites módszerről összességében azt állapíthatjuk meg, hogy 1 bit hiba észlelését teszi
lehetővé.
A paritásbites módszer redundanciája függ az adatszó bitszámától (n) és (n+1)/n. ASCII kódnál történő
alkalmazás esetén ez 8/7≈1,14 (114%), míg hatékonysága ennek reciproka (7/8≈0,875=87,5%). Ez
egyben a hasznos adatátvitel sebesség - az eredeti sebességhez képesti - csökkenésének mértékét is
megadja.
Kódolás, kódok
18 Dr. Glöckner György – Digitális elektronika
Kódolás, kódok
19 Dr. Glöckner György – Digitális elektronika
azután az egyes bájtok azonos helyi-értékű bitjeit tekintsük összetartozó 8 darab 7 bites kódnak (ld.
példaként az ábrán az adatszavak D6-os bitjeit – rózsaszínnel jelölve) és egészítsük ki őket a
megszokott módon a 7-7 függőleges, azonos pozíciójú bit alatt 1-1 paritásbittel ugyancsak a páros
paritást használva. Így egy paritásbájtot kapunk, amely kizárólag paritásbitekből áll. Ez lesz a 8.
adatszó (8. kódszó).
Ha ebben az esetben például az inverzben látható cella 1 értékű eleme hiba folytán 0-ra változik, úgy a
hozzátartozó (vízszintes és függőleges) paritás is páratlanná változik és az adott sort és oszlopot is
hibásnak találjuk. Így sor és oszlop megjelölésével meghatároztuk a hibás cellát. Ez azt jelenti, hogy
nemcsak azt tudjuk megállapítani, hogy egy bit egy kódszóban hibás, hanem azt is, hogy azon kódszón
belül melyik az a bit. Így ki is tudjuk javítani (a példában vissza 0-ról 1-re).
A redundancia az „egyszerű” (vízszintes) paritásbites módszeréhez képest tovább nőtt, ugyanis a 64
bitből csak 49 hasznos r = 64/49 ≈ 1.30 (=130%) , így a hatékonyság (és így az átviteli sebesség)
tovább romlott 49/64-re (76,56%).
b. CRC megoldások
Egy hatékonyabb – és ma leggyakrabban használt – hibajavítási eljárás az ú.n. CRC (Cyclic
Redundancy Check – ciklikus redundancia ellenőrzés) alkalmazása az (ugyancsak) CRC-nek (Cyclic
Redundancy Code) rövidített kód segítségével. Ennél a megoldásnál a küldő oldalon (például) a fenti
8 bájtot egy 64 bites, kettes számrendszerbeli számnak tekint(het)jük. Ezt egy alkalmasan
megválasztott osztóval (ugyancsak 2-tes számrendszerbeli szám) elosztjuk. A kapott eredményt
(ténylegesen általában az osztás maradékát) az eredeti kóddal együtt átküldjük a vevő oldalra.
A „másik”oldalon a vevő is ismeri az osztó polinomot (ld. protokoll!), és itt is elvégezve a műveletet,
a két eredmény összehasonlításából nagyobb számú hiba észlelhető, ill. javítható. A módszer másik
verziójában az átküldendő adatblokkot úgy egészítik ki, hogy az osztó kóddal osztva egész eredmény
adódjon. Így ha a vevő oldali osztás nem 0 maradékot ad, hibás a vett adat.
A műveletek elvégzésénél a valóságban nem algebrai műveletet (osztást), hanem ú.n. polinomiális
aritmetikát használják. Ekkor mind az osztandót mind pedig az osztót nem számként, hanem
polinomként értelmezzük A polinomiális aritmetika alapjait most csak röviden ismertetjük.
A kettes számrendszerbeli szám a következőképpen írható át polinomiális formájúvá (30.ábra):
Kódolás, kódok
20 Dr. Glöckner György – Digitális elektronika
CRC-32 x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 +x4 + x2 + x1 + 1
31. ábra
c. A Hamming kód
i) A HAMMING-TÁVOLSÁG
Legyen két azonos hosszúságú kódszavunk: X és Y. A két kódszó Hamming-távolságának (H(X,Y) –
röviden: H) nevezzük azt a számértéket, amely megadja, hogy az egyik kódszó hány bitjét kell ahhoz
megváltoztatni, hogy a másik kódszót megkapjuk. Így például a két négybites kódszó: X=1010.1111B
és Y=0011.1010B Hamming-távolsága H(X,Y)=4, mert négy bitet (t.i. a D7, D4, D2 és D0 pozíciójú
biteket) kell megváltoztatnunk ahhoz, hogy a másik kódszót kapjuk (32. ábra). Itt a Di –k az
adatbiteket jelölik, míg az i index (i=0..7) a helyiértéküket.
D7 D6 D5 D4 D3 D2 D1 D0
egyik kódszó 1 0 1 0 1 1 1 1
másik kódszó 0 0 1 1 1 0 1 0
azonosak
különbözőek
Hamming-távolság = 4
32. ábra
Kódolás, kódok
21 Dr. Glöckner György – Digitális elektronika
ii) HAMMING-KÓD
A R.W. Hamming által létrehozott kódolási módszert Hamming-kódolásnak, a létrejött kódot,
kódrendszert pedig Hamming-kódnak nevezzük. A kódolandó kódszavak bitszámától függően többféle
Hamming kód hozható létre. A 34. és 35. ábra a (7,4) –es Hamming-kód létrehozásának alapvető
módszerét mutatja (a 34. ábra általánosan, míg a 35. ábra - konkrétan - az 1101B = DH = 13D értékű
adat alapján konkrétan létrehozott 66H kódszóra vonatkozóan). A „(7,4)” zárójelében levő első szám a
kialakított kódszó összes bitjeinek számát, míg a második szám a tényleges eredeti adatbitek számát
adja meg. Ez azt jelenti, hogy az eredetileg 4-bites kódszót az ellenőrző bitekkel 7-bitessé alakítjuk.
Kódolás, kódok
22 Dr. Glöckner György – Digitális elektronika
Helyiérték 7 6 5 4 3 2 1 Magyarázat
Helyiérték 7 6 5 4 3 2 1 Magyarázat
Kódszó 1 1 0 P4 1 P2 P1 a 7-bites kódszó
A0 1 0 0 0 1 0 P1 Páros sorparitás
Cím A1 1 1 0 0 1 P2 0 Páros sorparitás
A2 1 1 0 P4 0 0 0 Páros sorparitás
Helyiérték 7 6 5 4 3 2 1 Magyarázat
Kódszó 1 1 0 0 1 1 0 a 7-bites kódszó
A0 1 0 0 0 1 0 0 Páros sorparitás
Cím A1 1 1 0 0 1 1 0 Páros sorparitás
A2 1 1 0 0 0 0 0 Páros sorparitás
Figyelem: a soronként ÍGY HASZNÁLT páros paritás-ellenőrzés nem jelenti azt, hogy az elkészült
Hamming-kód összességében páros paritású kell legyen! Ezért az, hogy egy Hamming-kód
milyen paritású, a kód helyességére vonatkozó semmilyen következtetésre nem nyújt alapot!
A kód létrehozása más módon is végezhető. Ez látható a 36. ábrán. Írjuk fel a 4-bites eredeti kódot,
majd a kialakítandó 7-bites (7,4)-es Hamming-kódot az ismert adatbitekkel (D3, D2, D1, D0) és a még
nem ismert ellenőrző (P4, P2, P1) kódokkal. Ezután írjuk egymás alá csak az adatbitek 3-bites
helyiértékének (7, 6, 5, 3) bináris értékét úgy, hogy vegyük figyelembe az adatbitet is. A figyelembe
vétel azt jelenti, hogy szorozzuk be a helyiérték bitjeit az adatbitekkel és az így keletkezett helyiérték
Kódolás, kódok
23 Dr. Glöckner György – Digitális elektronika
biteket írjuk le. Ezáltal az 1-es értékű adatbitekhez maguk a helyértékek (7D 111, 6D 110, 3D
011), míg a 0-s adatbitekhez (5D 000) csupa zérus kerülnek leírásra.
Végezzük el a leírt számsor oszlopainak ú.n. „modulo 2”-es összeadását (ez a bitek átvitelt figyelembe
nem vevő összeadása vagy - ha tetszik – a bitek kizáró vagy kapcsolata). Az így kapott 3 bit
megegyezik sorban a keresett P4, P2, P1 ellenőrző bitekkel. Így végül megkapjuk a 7-bites Hamming
kódot.
Megjegyzés: mint láttuk, nem kell – és a továbbiakban mi sem fogjuk - azokat a helyiérték bitsorokat
leírni, amelyek adatbitje nem 1-es, hanem 0, hiszen azok nem játszanak szerepet a műveletvégzésben.
7 6 5 4 3 2 1
D3 D2 D1 P4 D0 P2 P1
1 1 0 1
A3 A2 A0
7 1 1 1
6 1 1 0
5 0 0 0
3 0 1 1
0 1 0 A 7-bites Hamming kód:
P4 P2 P1 D3 D2 D1 P4 D0 P2 P1
1 1 0 0 1 1 0
= 66H = 102D
Hamming-kód képzése (2. módszer)
36. ábra
Ez a módszer jól használható egy Hamming-kód – 1 bithiba esetére történő – ellenőrzéséhez is.
Ezt megtehetjük, hiszen a Hamming-kód létrehozásának második módszerénél (36. ábra) láttuk,
hogy a paritásbitek az oszlopok „modulo 2”-tes kapcsolatával jöttek létre. Ez azt jelenti, hogy ha a
kiegészítjük ezen oszlopok sorait a paritásbit sorral, a most elvégzett „modulo 2”-tes művelet csupa
zérus bitet kell eredményezzen. Ezáltal, ha e módszert 1 bithiba ellenőrzésére használjuk, úgy helyes
kódszó esetén – ahogy említettük – csupa zérus eredményt kell kapnunk. A kódszó ellenőrzése nem
tesz különbséget (eredetileg) adatbit és ellenőrző bit között, vagyis egyformán kezeli azokat: csak az
számít, hogy az adott kódszó-bitnek mi a helyiértéke és hogy 1-es-e vagy 0. Ha egy bit megváltozik, az
azt jelenti, hogy az adott bit 0-ról 1-re vagy 1-ről 0-ra változik. A felírt helyiérték adatsorban így az ő
helyiértéke hibásan szerepel, vagyis a helyes bitsor bitenkénti negáltja van jelen. Amennyiben ez a bit
volt az egyetlen hibás, úgy – értelemszerűen – a végeredményben éppen ez ez érték fog megjelenni.
Így visszakapjuk a hibás helyiérték bitsort, vagyis megkapjuk rögtön a hiba helyét!
Kövessük a módszert a 37. ábrán! Tételezzük fel, hogy a 7 biten a fenti kód (110.0110) helyett
100.0110B (=46H) érkezik. Írjuk fel azon adatbitek helyiértékét egymás alá, mely bitek 1-es értékűek!
Képezzük ezek modulo2 (kizáró VAGY) kapcsolatát. (Ez – ahogy említettük – olyan összeadásnak
felel meg, ahol az esetleges átvitellel nem foglalkozunk.)
Ha a bemutatott ellenőrzési módszer eredménye zérus lett volna, úgy a 7-bites kód helyes lenne.
Az eredmény azonban eltért a zérustól: 110, ezért a kód hibás. Az eredmény egyben a hibás bit
helyiértékét is megadja (110=6D).
(Figyelem: az ellenőrzésnél az ellenőrző biteket az adatbitektől NEM kell megkülönböztetni! Hiszen
Kódolás, kódok
24 Dr. Glöckner György – Digitális elektronika
amikor egy 7-bites Hamming-kódot kapunk – pl. adatátvitel során – a hibát okozó zavar nem „válogat”
és nem „tesz” megkülönböztetést a bitek között.)
Helyiérték 7 6 5 4 3 2 1
Kapott kód 1 0 0 0 1 1 0 =46H=70D
1 0 0 0 1 1 0
7D: 1 1 1
3D: 0 1 1
2D: 0 1 0
1 1 0 =6D vagyis a 6-os helyiértékű bit hibás!
1 1 0 0 1 1 0 =66H=102D
(7,4) Hamming-kód ellenőrzése 1 bithibára
37. ábra
A (11,7) Hamming-kód képzése és ellenőrzése 7-bites adatokon a (7,4)-es Hamming kódnál a 4-bites adatokra
vonatkozó módszerrel megegyező módon történik. A különbség a bitszám eltérés miatt annyi, hogy
összességében 11-bites lesz a kialakuló kódszó és hogy eggyel több ellenőrző kódbit (P8) lesz. Az előzőkkel
megegyező kód-képzést – a második bemutatott módszer alapján - a 38. ábra mutatja.
A 39. ábrán pedig az követhető nyomon, hogy (11,7)-es Hamming-kódnál – hasonlóan a (7,4)-es Hamming-
kódnál látottakhoz - hogyan deríthető ki egybites hiba esetén a hiba bekövetkeztének helye, mely által a hiba
nem csak detektálható, hanem javítható is.
Eredeti 7-bites adat: 59H = 89D = 1 0 1 1 0 0 1
11 10 9 8 7 6 5 4 3 2 1
11-bites kód kialakítása: 1 0 1 x 1 0 0 x 1 x x
11 10 9 8 7 6 5 4 3 2 1
Hamming kód létrehozása: 1 0 1 x 1 0 0 x 1 x x
Művelet: 0011 =3
modulo 2 0111 =7
(EXOR,
1001 =9
kizáró VAGY)
1011 =11
= 0110
11 10 9 8 7 6 5 4 3 2 1
a 11-bites Hamming kód: 1 0 1 0 1 0 0 1 1 1 0
=54EH=1358D
(11,7) Hamming kód képzése
38. ábra
Kódolás, kódok
25 Dr. Glöckner György – Digitális elektronika
Helyi-érték 11 10 9 8 7 6 5 4 3 2 1
a kapott adat 1 0 1 0 1 0 0 1 1 1 0
(helyes)
0010 =2
0011 =3
0100 =4
0111 =7
1001 =9
1011 =11
= 0000 =0D
Adat helyes!
Helyi-érték 11 10 9 8 7 6 5 4 3 2 1
a kapott adat 1 0 0 0 1 0 0 1 1 1 0
(helytelen)
0010 =2
0011 =3
0100 =4
0111 =7
1011 =11
= 1001 =9D
d) HIBAJAVÍTÓ KÉPESSÉG
Hamming meghatározta egy kód hibajavító képességét is. A hibajavításhoz szükséges “Dmin”
minimális Hamming-távolság jellemzi egy kód erejét. Egy kód hibajavítási képességét (t) úgy
definiáljuk, hogy az a kódszavanként garantált javítható bitek száma:
Dmin − 1
t=
2
Így megállapítható, hogy a legkisebb hibajavító képességű kódban, - mely 1 bitet képes kijavítani – a
Hamming-távolságnak 3-nak kell lennie, hiszen t akkor lesz a legkisebb pozitív egész számmal (1)
egyenlő. Idézzük vissza a 33. ábra 5- és 7-bites bites redundáns kódjait („2 az 5-ből”, kvi-bináris és bi-
kvináris). Mivel ezeknél a minimális a Hamming-távolság csak 2, ezért önmagukban csak
hibaészlelésre használhatók és nem alkalmasak hibajavításra.
Kódolás, kódok
26 Dr. Glöckner György – Digitális elektronika
• BCH kód
• Trellis kód
• Konvolúciós (Viterbi) kód
• Turbo Konvolúciós kód (TCC)
• Turbo Produktív kód (TPC)
• Reed-Solomon kód
• Golay kód
További hibajavító kódok
40. ábra
Kódolás, kódok