Kodolas

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

1 Dr.

Glöckner György – Digitális elektronika

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.

1. Decimális számjegyek kódolása


A mindennapi életben a tízes számrendszert és az ebben szereplő 10 számjegyet
(0,1,2,3,4,5,6,7,8,9) használjuk. Ugyanakkor- ahogy korábban már említettük – a digitális
rendszerek csak 2 különböző értéket (0,1) használnak, így ezek kódolása a tízes
számrendszerbeli decimális számjegyek kettes számrendszerbeli számoknak történő
megfeleltetését jelenti .A decimális (tízes) számok kettes (bináris) számrendszerben való
kódolása során létrejövő kódokat BCD (Binary Coded Decimal – binárisan kódolt decimális)
kódoknak nevezzük. Mivel a tízes számrendszerben 10 darab számjegy van (0-9), ezért
legalább 4 bináris számjegy szükséges a kódoláshoz. T.i. 3 bittel csak 8 különböző
kombináció hozható létre és így csak 8 különböző számjegyet tudnánk kódolni. Ugyanakkor
4 bit már 16 különböző kombinációt nyújt és így ugyanennyi megkülönböztethető „valami”
kódolását teszi lehetővé. Így megállapíthatjuk, hogy – ha más szempontunk nincs (ld. később)
– 4 bit elégséges a decimális számjegyek kódolására. Vagyis ezek a BCD kódok 4-bites
kódok. Az adott kódban kódolásra használt ilyen kombinációkat kódszavaknak nevezzük).
Ugyanakkor azt is látjuk, hogy csak 10 db. számjegyünk van, így marad(hat)nak például ki
nem használt kombinációk (6 db., a felhasználtaktól eltérő kódszó). Ez is lehetővé teszi a
majd a következőkben ismertetendő számos különböző BCD kód létezését és használatát.

1.1. AZ NBCD KÓD, SÚLYOZÁSOS KÓD

A BCD kódok közül a legkézenfekvőbb egyszerűn a két számrendszer közötti természetes


(Natural) megfeleltetést használni, mely során 2-tes számrendszerbeli szám egymás utáni
bitjeit, mint helyiértékeket tekintjük: 23 22 21 20. Ez az ú.n. NBCD kód. A megadott számok
decimális értéke az egyes helyiértékek értékével (súlyával) megszorzott részösszegei
összegeként kapható meg. Például

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.

1.2. EGYÉRTELMŰ KÓD, NEM EGYÉRTELMŰ KÓD, NEGATÍV SÚLY


Az NBCD kód egy-egy értelmű megfeleltetést is jelent a decimális számjegyek és a hozzájuk
tartozó kódszavak között, mert csak egyféleképpen írható fel minden számjegy és ugyanígy
minden kódhoz csak egyféle számjegy tartozhat. (Gondoljuk át: a kódban bármely bit
megváltoztatása más értéket eredményezne.) Az ilyen BCD kódo(lás)t egyértelmű
kód(olás)nak nevezzük. Az NBCD kódokat az 1.a. ábrában és a 4. ábra
2. oszlopában láthatjuk. Az NBCD kód - természetesen - 4-bites kód.

A 9 feletti értékű számjegyekhez is rendel(hető)k kódszó, de ezeket BCD kódszavakként már


nem értelmezzük. 4 (súllyal rendelkező) bináris számjegy éppen az összes (16 db.) lehetséges
kombinációt és így az összes 16-os számrendszerbeli szám bináris kódját (0000B=0D –tól
1111B=15D-ig) adja meg (hiszen 24=16). A kiegészített kódban a 9D feletti értékekhez a
hexadecimális (16-os számrendszerbeli) számoknál használt betűket (A, B , C, D, E, F)
használhatjuk sorban a 10D, 11 D, 12 D, 13 D,14 D, 15 D decimális értékekhez (1.b. ábra).

Decimális Bináris Decimális Hexadecimális Bináris


számjegy kódszó érték számjegy kódszó
0 0000 0 0 0000
1 0001 1 1 0001
2 0010 2 2 0010
3 3 0011
3 0011
4 4 0100
4 0100
5 5 0101
5 0101 6 6 0110
6 0110 7 7 0111
7 0111 8 8 1000
8 1000 9 9 1001
9 1001 10 A 1010
Az NBCD (8421) kód 11 B 1011
12 C 1100
1.a. ábra 13 D 1101
14 E 1110
15 F 1111
1.b. ábra
Kiterjesztett NBCD kód

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.

2421 4321 5221 5421 6321 7421


3321 4421 5311 6221 6421 8421
4311 5211 5321 6311 7321
Súlyok 4-bites BCD kódhoz
2. ábra

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

3.a. ábra 3.b. ábra 3.c. ábra

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

4. ábra 84(-2)(-1) kód


Kódolás, kódok
4 Dr. Glöckner György – Digitális elektronika

negatív. Ráadásul a megadott kódolás egyértelmű kódot is eredményez (ellenőrizzük otthon).


Belátható, hogy ez a kód egyértelmű, hiszen bármely súlyt egy adott kódszóban
megváltoztatunk, megváltozik a reprezentált szám értéke. És egyik súly sem írható fel másik
súlyok összegeként.
Belátható már az eddigiek alapján is, hogy egy kód akkor egyértelmű, ha egyik súlya sem
írható fel a kódban szereplő másik kód vagy kódok összegeként.

1.3. NEM SÚLYOZÁSOS KÓD, ÖNKOMPLEMENTÁLÓ KÓD


Egy kód kódszavait nem minden esetben egyszerű előállítani.
Nem biztos, hogy súlyozásosak és nem biztos, hogy Decimális Petherick
egyértelműek. Utóbbira eddig nem láttunk példát, de könnyű számjegy kód
elképzelni, hogy a 4-biten rendelkezésre álló 16 kombinációból - 0 0101
az eddigi súlyozásos elvtől eltérően – tetszőleges tízet választunk 1 0001
ki. Így nem feltétlenül kapunk olyan kódot, melynek bitjeihez 2 0011
súlyt tudunk rendelni. A 5. ábra egy nem súlyozásos kódra mutat 3 0010
példát. 4 0110
Ezért hasznos, ha találunk olyan 5 1110
Decimális Bináris módszert, mellyel valamilyen
számjegy kódszó 6 1010
szisztéma alapján a kódszavakat 7 1011
0 0000 fel tudjuk írni. Az is segítség, ha 8 1001
1 0001 egy meglevő kód alapján egy 9 1101
2 0010 másikat meg tudunk határozni.
3 0011 Nézzük a megismert NBCD- Egy nem súlyozásos kód
4 0100 kódot (6. ábra). Ha az első és 5. ábra
5 0101 második 5 kódszó közé
6 0110 szimmetriavonalat húzunk, úgy a vonaltól egyforma
7 0111 távolságban levő decimális számjegyek a legnagyobb 10-es
8 1000 számrendszerbeli számra egészítik ki egymást (9-es
9 1001 komplemens: 0+9=9, 1+8=9, 2+7=9, 3+6=9, 4+5=9). Az
Az NBCD (8421) kód informatikai eszközök digitális elektronikai elemekből
6. ábra épülnek fel, így a 2-tes számrendszer lehetőségei (állítás 2
különböző kimenetele: igaz-hamis, egy jel 2 különböző
logikai állapota: magas-alacsony,
2 különböző villamos jelszint: +5V – 0V, két különböző logikai érték: 1 – 0) használatosak.
Az aritmetikai informatikai elemek (pl. mikroprocesszorok, mikrokontrollerek, stb.)
működésében ugyancsak nélkülözhetetlen az ú.n. komplemenses bináris számok használata.
Ezért jó lenne olyan kódo(lás)t találni, melynél a tízes számjegyekre a 6. ábrán most
bemutatott páronkénti komplementáló tulajdonságához a hozzájuk tartozó kódszavak
komplementáló tulajdonsága társulna. Ha ez teljesül, úgy bármely decimális számjegyhez
tartozó kódszó alapján könnyen és gyorsan meg tudnánk határozni a decimális számjegy
(9-es) komplemenséhez tartozó kódszót (t.i. csak az eredeti kódszó komplemensét kell
képezni). Azon kódokat, melyekre ez teljesül, önkomplementáló kódnak nevezzük.
A 10-es számrendszerbeli 9-es (9=10-1, ahol N=10 a számrendszer alapja) komplemens
mintájára általánosságban is megadható az N alapú számrendszer (pl N=2) N-1-es
komplemense. Így ez az N=2 esetén, vagyis 2-es számrendszerben 1-es komplemenst jelent.
Mivel azonban a 2-tes számrendszerben csak 2 számjegy (0 és 1) létezik, így könnyű az 1-es
komplemens képzése: az 1-esé 0, míg a 0-é 1 lesz. Tekintettel arra, hogy minden kódszó 4-
bites, a komplemens képzést mind a 4 bitre bitenként kell értelmezni, vagyis pl. a 0011 bináris
kódszóhoz 1100, a 0101-hez pedig 1010 komplemens tartozna. A 6. ábrában látható, hogy a
vonal alatt és felett egyforma távolságban levő bináris kódszavakra ez kívánalom nem teljesül

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

A 3.a. és 3.c. ábrákon is önkomplementáló kódokat láthattunk, melyek ráadásul súlyozásosak


is voltak (ugyanakkor nem egyértelműek)

További 4-bites önkomplementáló kódok is létrehozhatók.


Tekintsük ismét az 5. ábrán nem súlyozásos kódként
Decimális Petherick bemutatott Petherick kódot (8. ábra). Ha megvizsgáljuk,
számjegy kód hogy vajon ez önkomplementáló-e, azt találjuk, hogy nem.
0 0101 Vagyis nem az eddig megismert értelemben. Ugyanis véve
1 0001 bármelyik decimális számjegyet, az őhozzá és 9-es
2 0011 komplemenses „társához” tartozó kódszavak azonos
3 0010 helyértékű bitjei nem komplementálják egymást.
4 0110 Ugyanakkor vegyük észre, hogy e párok csak az első
5 1110 (bal oldali) bitben térnek el egymástól. Vagyis az
1010 informatikában előnyös komplemensképzés még egyszerűbb:
6
ha van egy decimális számjegyünk (pl. a 3D), melyhez
7 1011
tartozik egy kódszó (0010). A decimális szám 9-es
8 1001
komplemenséhez (itt 6D) tartozó kódszó könnyen (még a
9 1101 hagyományos értelemben vett önkomplementáló kódnál
Egy másképpen látottnál is egyszerűbben) szerkeszthető meg, hiszen csak a
„önkomplementáló” kód legnagyobb helyiértékű (bal oldali) bitet kell komplementálni
8. ábra (1010) és máris előállt a keresett kódszó!

Kódolás, kódok
6 Dr. Glöckner György – Digitális elektronika

1.4. CIKLIKUS KÓD


Egy másik kód-tulajdonság megértéséhez tekintsük a következő problémát, feladatot.
Egy motor forgásánál a tengely pozíciójának érzékelésére a következő módszert használjuk:
Egy, a motor tengelyére helyezett és ahhoz rögzített tárcsa szektorainak érzékelők előtti
elhaladását fogjuk detektálni. Ehhez a tárcsa felületét 16 egyforma szektorra osztjuk fel és az
egyes szektorokat pedig 4 koncentrikus körrel 4-4 körgyűrű cikkre osztjuk. Minden szektort
kódolunk az NBCD kód 16 kódra való kiterjesztéses kódjával. A szektorok 0D-15D
sorszámúak, mely megfelel 0H-FH-nek (ill. 0000B – 1111B-nek), ahol a H index hexadecimálist
jelent . A feketére festett körgyűrű-cikk (logikai) 1-et, míg a fehéren hagyott (logikai) 0-át
jelent és a külső sávot a legnagyobb, a belső sávot a kód legkisebb helyértékű bitjeként
értelmezzük. (9. ábra). A négy körgyűrű középvonalában 4 db fototranzisztor – fotodióda
párost (az ábrán 1-1 párost 1-1 piros gyűrű reprezentálja) helyezünk el. A fényt kibocsátó
félvezető elem által kibocsátott fény így vagy fehér vagy fekete felületet ér, és így elvileg
vagy intenzíven (visszaverve) vagy legyengülve (visszaverődés nélkül) érzékelhető az a
fényérzékelő félvezető által. A négy érzékelő elem jelét bizonyos időpillanatokban
megvizsgáljuk és a kapott kód alapján következtetünk a tengely pozíciójára.

Fotodióda-
fototranzisz
tor párok

Elfordulás érzékelés NBCD kódolást használva


a szektorok kódolásához
9. ábra

A módszer jónak látszik. Mi történik azonban akkor, ha éppen egy szektor-elválasztó


vonalánál (amely elválasztó vonalak csak a jobb érthetőség érdekében és csak az ábrán
láthatók) vizsgáljuk a pozíciót. Legyen először a 2H és 3H szektorok átmenete a kérdés.
Itt előbbinél 0010-t utóbbinál 0011-et találunk. Ha a sugarak mentén a két különböző színű
területek határa nem elég egyenes ill. a foto dióda – foto tranzisztor párosok nem egyforma
sebességűek, úgy ez most nem okoz gondot, mivel a két legnagyobb helyi-értékű bit mindkét

Kódolás, kódok
7 Dr. Glöckner György – Digitális elektronika

kódszónál 0, a kisebb helyi-értékek nagyobb helyiértékű bitje pedig ugyancsak mindkét


kódnál 1. A legkisebb bitnél lehet csak eltérés: a (már) 3H helyett (még) 2H-t, ill. fordítva
érzékeljük. Ez problémát nem okoz (hiszen az esetleg következő kódszó helyett még az
előzőt, ill. fordítva érzékeljük – vagyis a két szomszédos kód közül kapjuk az egyiket) és
ennek oka az volt, hogy az átmenetnél az egyik kódról a másikra való változásnál csak egy bit
változott a kódszóban.
Mi történik akkor, ha például az 1H és 2H közötti átmenetnél van ilyen sebesség-eltérés vagy
rajzolat-hiba. Ekkor ugyancsak nincs gond a két nagyobb helyi-értékű bitnél, de a két
kisebbnél már nem ilyen jó a helyzet. Hiszen nem egy bit, hanem két bit változik meg.
A legkisebb helyi-értékű bit 1-ről 0-ra, az eggyel nagyobb helyi-értékű pedig 0-ról 1-re.
Így elképzelhető, hogy 0001 és 0010 helyett 0000 vagy 0011-et érzékelünk, melyek itt hibás
pozíciók kódja.
A probléma azért jelentkezhetett, mert a két szomszédos szektor kódja több mint 1 bitben tért
el egymástól. Hasonló problémák még sok átmenetnél vannak, legproblematikusabb az 1111
és a vele szomszédos 0000 kódszó ill. a 0111 és 1000 átmenete. Itt mind a 4 bit megváltozik
és ez - ad abszurdum - 16 féle lehetséges érzékelést szolgáltathat, melyből csak kettő lehet jó.
A megoldás a taglaltak alapján kézenfekvő: a kódszavak sorrendjének egy olyan
átrendezésére van szükség, ahol az egymás utáni szomszédos szektorok kódja csak 1-1 bitben
tér el egymástól (10. ábra). Az ilyen tulajdonsággal rendelkező kódo(lás)t ciklikus
kód(olás)nak nevezzük. Az itt bemutatott kódot Gray-kódnak nevezzük.

Fotodióda-
fototranzisz
tor párok

Elfordulás érzékelés GRAY kódot használva


a szektorok kódolásához
10. ábra

A Gray kód táblázatos formában a 11. ábrán látható.

Kódolás, kódok
8 Dr. Glöckner György – Digitális elektronika

Az itt bemutatott Gray-kód 4-bites és mind a 16 kódszót Decimális Gray kód


kihasználja. számjegy
Mit mondhatunk el még a Gray kódról? Nem súlyozásos kód. 0 0000
Emellett – a hagyományos értelemben - nem is
1 0001
önkomplementáló. Ugyanakkor olyan értelemben
2 0011
önkomplementáló, ahogyan azok voltak a 3.a., 3.b. és a
3 0010
8. ábra kódjai. Hiszen a 7D és 8D decimális számokhoz
tartozó kódszavak közé húzott „szimmetria” vonaltól azonos 4 0110
távolságban levő kódszavak csak a legnagyobb helyiértékű 5 0111
bitben térnek el egymástól (vagyis csak komplementálnunk 6 0101
kell e párok között a decimális szám 9-es komplemense 7 0100
kódszavának megkapásához). 8 1100
Igen ám, de az eddig ismertetett Gray-kódból hogyan lesz 9 1101
BCD kód? Hiszen, ha az első 10 kódszót meghagyva 10 1111
csonkítjuk (világos zöld mintázat) , nem marad teljesen 11 1110
ciklikus: az első (0000) és utolsó (1101) kódszó nem 1 bitben 12 1010
tér el egymástól („nem harap a farkába a kígyó”). 13 1011
Próbálkozzunk meg azzal, amit az NBCD-kódnál tettünk az 14 1001
önkomplementálás érdekében, vagyis toljuk el 3-mal felfelé 15 1000
a kódot. Ezt mutatja a 12. ábra. Az így nyert kód - melyet
3-többletes Gray-kódnak nevezünk - teljesen ciklikussá vált A ciklikus Gray-kód
(ld. kígyó hasonlat). 11. ábra
Gray Bináris 3-többletes Önkomplementálása pedig a korábban megismert
kódnál kód Gray „nem szokványos” módon értelmezendő (ld. Gray-
kódnál kód).
0 0000 -
1 0001 - Az NBCD, 3-többletes NBCD, Gray-kód és 3-
2 0011 - többletes Gray kód együtt szemléletes grafikus
3 0010 0 ábrázolással a 13. ábrán láthatók
4 0110 1 Mivel a (16 kódszavú) Gray-kód igen fontos
5 0111 2 szerepet játszik a későbbiekben, ezért a 14. ábrán
6 0101 3 bemutatjuk egy szerkesztési módszerét. Írjuk
7 0100 4 egymás alá a két kettes számrendszerbeli számot,
8 1100 5 a 0-t és 1-est. Húzzunk ezek alá egy vonalat és
9 1101 6 erre a vonalra tükrözzük a számokat (14.a. ábra)
- 1111 7
- 1110 8
- 1010 9
3-többletes Gray-kód szerkesztése
A vonal fölötti számok
12. ábraelé írjunk 0-t, a
vonal alattiak elé 1-et. Ismételjük meg a
kapott 4 számmal ugyanezt (14.b. ábra),
majd a nyert 8 számmal (14.c. ábra), és
így végül a 4-bites Gray-kód a 14.d.
ábrán látható Gray-kód szerkesztése

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

I.5. REDUNDÁNS KÓD(OLÁS)


A kódokat általában nem öncélúan használjuk, sőt gyakran szükség van a kódok (egyik
helyről/eszközről másik helyre/eszközre történő) átadására /
átvitelére. A kódok átvitele kapcsán zavarok, zajok miatt az Decimális 2 az ötből
átvitt információ torzulhat. Analóg információ átvitelétől számjegy kód
eltérően itt a torzulás a bit(ek) teljes megváltozását / 0 00011
átváltását jelenti: 0 helyett 1, 1 helyett 0 keletkezhet. Az 1 00101
adatok átvitele során való adatvédelem elsőrendű célkitűzés. 2 00110
Bizonyítható, de könnyen be is látható, hogy a vázolt 3 01001
meghibásodás észlelését (esetleg az eredeti állapot 4 01010
visszaállítását – vagyis javítását - is) lehetővé teheti a 5 01100
megfelelő kódolás. A megfelelő kódolás általában a 6 10001
szükségesnél több bittel és adott, előre speciálisan és 7 10010
alkalmasan kifejlesztett módszerrel történő kódolást jelent. A 8 10100
szükségesnél több bittel való kódo(lás)t redundáns 9 11000
kód(olás)nak nevezzük.
5-bites (redundáns) kód
Egy ilyen kódot mutat be a decimális számok kódjaihoz az
16. ábra
16. ábra. Itt a decimális számjegyeket 5 bittel kódoltunk.

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

10-bites redundáns kód


18. ábra Decimális
érték
Libaw - Craig kód
A 20. ábra a BCD kódokra megismert
tulajdonságokat foglalja össze, bemutatva 0 0 0 0 0 0
példá(ka)t az egyes tulajdonságokra. 1 0 0 0 0 1
2 0 0 0 1 1
A hibadetektálást és hibajavítást lehetővé tevő 3 0 0 1 1 1
kódolásról később még lesz szó. 4 0 1 1 1 1
5 1 1 1 1 1
6 1 1 1 1 0
7 1 1 1 0 0
19. ábra 8 1 1 0 0 0
9 1 0 0 0 0
5-bites redundáns kód

Kódolás, kódok
12 Dr. Glöckner György - Digitális elektronika

Súlyozásos Nem súlyozásos


4-bites 7-bites 5-bites Nem Ciklikus
De- ciklikus
ci- Pozitív súlyozású Negatív csak 2 bit különbözik zérustól Ön- Nem Ön-
má- súlyozás (hiba-detektálás) komple- Önkomple- komple-
lis mentáló mentáló mentáló
Egy- NEM egyértelmű Egy- Egy-értelmű Egy-értelmű Egy- Egy- Egy- Egy-
szám- értelmű értelmű értelmű értelmű értelmű értelmű
jegy Termé- 2421 5421 5311 84 (-2) (-1) Bi-quinary Qui-binary 2 az ötből 3- Gray 3-többletes
(Aiken)
szetes 50 43210 86420 10 többletes Gray
8421 (Stibitz)
0 0000 0000 0000 0000 00 0 0 01 00001 00001 01 00011 0011 0000 0010
1 0001 0001 0001 0001 01 1 1 01 00010 00001 10 00101 0100 0001 0110
2 0010 0010 0010 0011 01 1 0 01 00100 00010 01 00110 0101 0011 0111
3 0011 0011 0011 0100 01 0 1 01 01000 00010 10 01001 0110 0010 0101
4 0100 0100 0100 0101 01 0 0 01 10000 00100 01 01010 0111 0110 0100
5 0101 1011 1000 1000 10 1 1 10 00001 00100 10 01100 1000 0111 1100
6 0110 1100 1001 1001 10 1 0 10 00010 01000 01 10001 1001 0101 1101
7 0111 1101 1010 1011 10 0 1 10 00100 01000 10 10010 1010 0100 1111
8 1000 1110 1011 1100 10 0 0 10 01000 10000 01 10100 1011 1100 1110
9 1001 1111 1100 1101 11 1 1 10 10000 10000 10 11000 1100 1101 1010

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.

BCD kódok osztályozása


20. ábra
13 Dr. Glöckner György - Digitális elektronika

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

tudós nevéhez fűződnek. A 21.a. ábrán


látható a kód és kódszavai. Két vezérlő
billentyű van, mely választ a betűk és számok
közül. Emellett néhány írásjelet és
vezérlőkarakter kezelését is lehetővé teszi a
kód. A telex-kódot azért is érdemes
megemlíteni, mert a faxgépek megjelenését
megelőzőn a – telex-kódot használó - telex-
gépek uralták a gyors információ-váltás
szakterületét. (A telex-kód korszerűsített
változata – az ITA2-kód No. 2 a 21.b. ábrán
Betűk Számok és írásjelek Vezérlő karakterek
látható.)
Telex-kód és ITA2 kód
A kiterjesztett BCD-kód (EBCD, E: Extended 21. a. és b. ábra
kibővített BCD kód) a 22. ábrán látható.
A 6-bites kód a nagybetűkön és számokon kívül néhány írásjelet is tartalmazott. Az ezután
kifejlesztett EBCDIC kód már 7-bites és a kisbetűkön kívül vezérlőkarakterekkel is bővült.
A ma legelterjedtebb egységes
kód – ahogy említettük – a 7-
bites ASCII kód. Ezt a 23.
ábra mutatja Az ASCII –
kódban megtalálhatók az
angol ABC kis- és nagybetűi,
számok, írásjelek és (nem
EBCD kód nyomtatódó) vezérlő
22. ábra karakterek. A nyolcadik bit az
alapkód-ban nem használatos, hibadetektálásra (ld. később paritásbit) van fenntartva. A
későbbiekben ettől eltérően a 8. bitet esetenként a nemzeti karakterkészletek vagy más
karakterkészletek, attributumok (pl. vastag vagy dőlt karakter), szimbólumok kódolására is
használták egyes bővítési kezdeményezések. Így alakultak ki különféle kódtáblák is.
Ezen bővítési igények vezettek a 2-bájtos (16-bites) kódok (pl. Unicode – ld. pl. UTF-8, UTF:
Unicode Transformation Code: Unicode transzformációs kód) létrejöttéhez, melyeknek 65536
lehetősége között minden kívánalom megvalósulhat. Amennyiben egy bináris számsor 4 bit
többszöröse, úgy a 4-bites egységeket tetrádoknak nevezzük.
14 Dr. Glöckner György - Digitális elektronika

Legkisebb helyiértékű (LS) 4 bit Vezérlő


ASCII-kód
karakterek
23. ábra
L
e Szimbólumok és
g alap írásjelek
n
a
g
y Decimális
o számjegyek
b
b
Nagybetűk
h
e
l
y Kisbetűk
i
é
r
t Szimbólumok és
é írásjelek
k ( kiterjesztett
ű karakterkészlet)

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.

3. HIBADETEKTÁLÁS, HIBAJAVÍTÁS (paritáskód, keresztirányú paritás)

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.

Küldő oldal Vevő oldal

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.1. Hiba típusok


Az adatokat általában csomagban küldjük, mely több bájt – és így sok bit - egymás utáni átvitelét
jelenti. Ennek megfelelően a következő hiba típusokat tudjuk megkülönböztetni:
a) Egyedi Bit hiba az, amikor egyetlen bit válik hibássá az átvitel során, 1-ból 0 lesz, vagy
fordítva. (Ezeket a hibákat például a tápfeszültség vagy más interferencia zavarjele okozhatja.)
b) Csoportos hiba az, amikor több bit veszik el, vagy válik hibássá. Ezek a bitek vagy
szomszédosak (löket - burst - hiba) vagy nem.
c) Csomag (Pakett) hiba történik, amikor egy teljes átküldött csomag (pakett) elveszik vagy
meghibásodik.

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

a) Hibaészlelési (hibadetektálási) stratégiák


Csak annyi többlet információt küldünk, mellyel fel tudjuk fedezni a hibát, majd a hiba felfedezését
követően az adat újraküldését kérjük a forrástól. Ezt automatikus kérés ismétlésnek (ARQ:
Automatic Repeat reQuest) nevezzük. Ez esetben mind a küldő, mind a vevő részt vesz az elveszett
vagy hibás információ újraküldésében. Természetesen a hiba észlelését lehetővé tevő többlet
információ – noha ez a többlet a másik módszerben (FEC) használtnál általában kevesebb - itt is
redundanciát jelent.
b) Hibajavítási stratégiák
Ahhoz elegendő többlet információt küldünk, amellyel - a vevő oldali helyen - mind észlelni
(felfedezni, detektálni), mind pedig javítani is tudjuk a bekövetkező hibát. Ezt a módszert
előrecsatolásos hibajavításnak (FEC: Forward Error Correction) nevezzük. Mind a vevőnek, mind az
adónak van feladata a hiba kijavításában (ha az lehetséges).
s
A redundanciát (r) az összes adatbit (s)és a hasznos adatbit (n) hányadosaként r = jellemezzük.
n
n
Ilyen értelemben az átvitel hatékonysága (e) a redundancia reciproka e = .
s

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 ' .

Felvetődhet a kérdés, hogy e két módszer közül melyiket válasszuk?


A hibaészlelési megoldáshoz (ARQ) szükséges többletbitek száma általában jóval kevesebb, mint az
ugyanezen hiba kijavításához (FEC) szükséges redundáns bitek száma. Így nagyobb relatív adatátviteli
sebességet lehet elérni. Ugyanakkor hiba esetén a adatismétlésre van szükség, amely gyakori
előfordulás esetén összességében jelentősen lassítja a helyes adatokra vonatkozó átviteli sebességet.
Akkor célszerű használni, ha nem zajos a vonal ill. zajos vonal esetén, ha nem fontos az adatátvitel
sebessége és nem szükséges azonnali
A hibajavítási (FEC) stratégia elsősorban akkor előnyös, ha az adatok újraküldésére vagy nincs mód
vagy az nem lenne praktikus. Példaként egy video-konferenciát lehet megemlíteni, ahol azt elviselik a
körülmények, ha helyenként kicsit kockás a kép, de azt nem, hogy esetenként vagy gyakran kiesik,
majd visszajön a kép.
Az eddig említettekből is kiderült, hogy mindkét módszerek használata csak úgy lehetséges, ha mind
az adó mind a vevő pontosan tisztában van teendőivel, vagyis a „játékszabályokkal”. A „játék-
szabály”-t szaknyelven adatátviteli protokollnak nevezzük. Ebbe beletartozik például, hogy
• hány bájtot (bitet) tartalmaz egy csomag,
• milyen kódolást használunk,
• milyen hibaészlelési / hibajavítási módszert alkalmazunk,
• milyen adatátviteli megoldást követünk (szinkron vagy aszinkron)
• milyen adatátviteli sebességet használunk,
• stb.
Csak úgy biztosítható a zökkenőmentes adatátvitel, ha az adó és vevő oldal is pontosan ismeri és
alkalmazza ezen adatátviteli protokoll minden elemét.

3.3. Hiba észlelési módszerek


a. Paritásbit módszere
A paritásbit talán a legrégebben használt hibaészlelési módszer. Egy adatszó (adatcsoport) vagy páros
vagy páratlan számú 1-est tartalmazhat. Előbbi esetben az adatszót páros, míg utóbbi esetben páratlan
paritásúnak nevezzük. A paritásbit módszerének lényege az, hogy az adatszót 1 bittel úgy egészítjük

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

b. Ellenőrző összeg módszere


A módszer lényege: az adatszavakat (adatbájtokat) - mint számokat - összeadjuk és az összeget (vagy
annak egy részét) eredményként az átviendő adatokat követően ugyancsak elküldjük. A vevő oldalán
ugyanezt a műveletet ismételten elvégezzük és a két eredményt összehasonlítjuk. A 27. ábra mutatja
be - az egyszerűség kedvéért decimális számokkal - a módszer lényegét.

1. Szó 2. Szó 3. Szó ellenőrző összeg


adat szó 06 23 4
ellenőrző összeg 06 + 23 + 4 = 33
adat szó+ellenőrző összeg 06 23 4 33
átküldendő adat 06 23 4 33
Az ellenőrző összeg módszerének elve
27. ábra
Az ellenőrző összeg
módszerének Ellenőrző Jó vagy nem az eredmény
korlátaira mutat
Adat szavak
összeg a ellenőrző
példát a 28. ábra. vevői összeg ténylegesen
Látható, hogy 1 oldalon szerint
(bit) hiba észlelését
lehetővé teszi 06 23 04 33 Igen Igen
azonban több hiba 06 20 04 30 Nem! Nem!
esetén már nem 06 25 02 33 Igen Nem!
biztosan nyújt
helyes információt. Példa az ellenőrző összeges módszer korlátaira
28. ábra

3.4. Hibajavítási módszerek


Láttuk, hogy az eddig bemutatott módszerek csak (1 bit) hiba észlelésére voltak alkalmasak. Nem
tudtak azonban több bit hiba esetén segítséget nyújtani ill. – még 1 bit hiba esetén sem – hibajavítást
lehetővé tenni. A következő módszer egyik vagy mindkettő problémát orvosolják.

a. Blokkos paritásbites módszer


A paritásbit alkalmazásának módszerét
már a 3.3.a. pontban megismertük. Paritás
Eredeti 7 bit
A blokkos paritásbites módszer az itt bitek
alkalmazott vízszintes (horizontális) D7 D6 D5 D4 D3 D2 D1 D0
paritásbit mellett függőleges 1 1 0 1 1 1 1 0
(keresztirányú) paritást is használ. A 1 1 1 0 1 0 1 1
következő – 1 0 1 1 1 1 1 0
29. ábrán - bemutatott módszer 0 1 0 1 1 1 0 0
lényege: a (vízszintes) paritásbittel
0 0 1 0 1 0 1 1
ellátott adatszavakat (kódszavakat)
egymás alá írjuk le. Ahogy korábban 0 0 0 1 0 1 1 1
említettük, általában 8-bites adat- 1 0 0 0 1 1 0 1
szavakat használunk, melyek már 0 1 1 0 0 1 1 0
(vízszintes) paritásbitet „kaptak” (pl. Keresztirányú (vertikális) paritásbitek
páros paritási elv alapján). Vegyünk Blokkos paritás módszere
például 7 darab ilyen 8-bites adatszót 29. ábra
(ld. 29. ábra). Írjuk egymás alá

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):

Decimális szám Bináris /hexadecimális Polinom forma (x=2)


szám
174D 1010.1110B =AEH 1·x7+0·x6+1·x5+0·x4+1·x3+1·x2+1·x1+0·x0
= x7+x5+x3+x2+x1
30. ábra

A polinomiális aritmetikában a szorzás különbözik a hagyományos aritmetika szorzásától abban, hogy


nem keletkezik átvitel, ill. a keletkezett átvitel elhagyásra kerül (ú.n. „modulo 2”-es módon
számítandó).
Például a 13D * 11D (1101B * 1011B) szorzás polinom formában felírva (x=2) és hagyományos bináris
aritmetikában elvégezve a következő

(x3 + x2 + x0)(x3 + x1 + x0) = (x6 + x4 + x3+ x5 + x3 + x2+ x3 + x1 + x0)


= x6 + x5 + x4 + 3·x3 + x2 + x1 + x0
Végiggyűrűztetve az átvitelt:
= x6 + x5 + 2·x4 + x3 + x2 + x1 + x0 = x6 + 2 x5 + x3 + x2 + x1 + x0 =
= 2 x6 + x3 + x2 + x1 + x0 = x7 + x3 + x2 + x1 + x0 = 1000.1111B=143D
a végeredmény.

Kódolás, kódok
20 Dr. Glöckner György – Digitális elektronika

Ugyanez a polinomiális aritmetikában:


(x3 + x2 + x0)(x3 + x1 + x0) = (x6 + x4 + x3+ x5 + x3 + x2+ x3 + x1 + x0)
= x6 + x5 + x4 + x3 + x2 + x1 + x0 !
A CRC kódok alapos matematikai elméleti számítások alapján kerülnek kiválasztásra és általában
szabványosak.
A leggyakrabban használt szabványos CRC kódok: CRC-12, CRC-16 és CRC-32 és CRC-CCITT
(ld. 31. ábra), stb..

CRC neve CRC polinom egyenlete (x=2)

CRC-12 x12 + x11 + x3 + x2 + x1 + 1

CRC-16 x16 + x15 + x2 + 1

CRC-CCITT x16 + x12 + x5 + 1

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

Adott kódrendszerben (= kódban) a kódrendszerre (kódra) vonatkozó Hamming-távolságnak azt


nevezzük, hogy milyen távolságokat tudunk definiálni a kódszó-párokra vonatkozóan. Az összes
lehetséges kódszó párosítására szükségünk van. Így például az NBCD kódrendszerben a Hamming-
távolság lehet
H(X,Y)=1 (pl. X=0000, Y=0001 vagy pl. X=0110, Y=0111, stb. esetében), lehet
H(X,Y)=2 (pl. X=0000, Y=0011 vagy pl. X=0000, Y=0101, stb. esetében), lehet
H(X,Y)=3 (pl. X=0000, Y=0111 vagy pl. X=0100, Y=0011, stb. esetében), lehet
H(X,Y)=4 (pl. X=0111, Y=1000 esetében).

Kódolás, kódok
21 Dr. Glöckner György – Digitális elektronika

Így H=1 és H=4 közötti bármelyik Hamming-távolság előfordulhat. (Megjegyzés: az NBCD


kódszavakat csak 0D és 9D között értelmeztük.)
Hiba bekövetkezte esetén a legegyszerűbb esetben 1 bit változik meg (0-ról 1-re vagy 1-ről 0-ra).
Ha egy kódban előfordulhat a legkisebb Hamming-távolság is (1), akkor az adott kód már a
legegyszerűbb hibával szemben is védtelen. Miért is van ez? Azért, mert akár egy bithiba
bekövetkeztét sem biztos, hogy észre tudjuk venni. Ugyanis elképzelhető, hogy 1 bit megváltozásával
– az NBCD kódban – ugyancsak érvényes kódszót kapunk. Így magából a kódszóról „ránézésre nem
tudjuk megállapítani, hogy az hibás. Pl. a 0001=1D kódszó 1 bit megváltozásával 0011=3D vagy
0000=0D vagy 0101=5D, stb. kódszóvá is válhat, melyek ugyancsak érvényes kódszavak az NBCD
kódban. Több bites (nemcsak számokat tartalmazó) kódoknál (pl. 7-bites ASCII) is előfordulhat
ugyanez a probléma. Ennek oka az, hogy (csaknem) minden kódhely ki van használva, így bit(ek)
véletlen megváltozásával is érvényes kódszó jöhet létre. Könnyen belátható, hogy a Hamming távolság
növelésének egyik szükséges feltétele az, hogy a szükségesnél több bitet használjunk a kódoláshoz.
Ezt hívjuk redundáns kódolásnak. Redundáns kódolást láttunk például a paritásbit használatánál.
Néhány BCD kódot és az ott „mérhető” Hamming távolságot a 33. ábra mutatja.
Látható, hogy vannak olyan – több, mint 4-bites, redundáns – kódok, melyeknél a Hamming-távolság
(H(X,Y) ) legalább 2. Így ha egy bit megváltozik, biztosan észlelni (detektálni) tudjuk, hogy a kapott
kód nem a helyes kód, vagyis – ilyen értelemben is – hibás. Hibás, hiszen az adott kódrendszerben
nem értelmezett kódot kaptunk.
Azt azonban nem mondhatjuk el, hogy ezeknél a kódoknál 1 bit megváltozása esetén azt is meg tudjuk
mondani, hogy melyik bitnél történt a hiba. Tekintsük csak a ’10-ből 1-es’ kódot! Ha az
X=10000000000 (decimális 9D-hez tartozó kódszó) kód balról második bitje (D8) 0-ról 1-re változik,
(X’=11000000000) nem tudhatjuk, hogy a decimális 9D vagy a 8D (Y=0100000000) kódszava volt az,
amelyről az 1 bit változásával a hibás kódot kaptuk.

NBCD 2421 kód 84(-2)(-1) Bi-quinary


Decimális 3-többletes
5-ből 2 kód 3-többletes Gray 10-ből 1 kód
érték Gray
8421 2421 84 (-2) (-1) 50 43210
0 0000 0000 00 0 0 01 00001 00011 0011 0000 0010 0000000001
1 0001 0001 01 1 1 01 00010 00101 0100 0001 0110 0000000010
2 0010 0010 01 1 0 01 00100 00110 0101 0011 0111 0000000100
3 0011 0011 01 0 1 01 01000 01001 0110 0010 0101 0000001000
4 0100 0100 01 0 0 01 10000 01010 0111 0110 0100 0000010000
5 0101 1011 10 1 1 10 00001 01100 1000 0111 1100 0000100000
6 0110 1100 10 1 0 10 00010 10001 1001 0101 1101 0001000000
7 0111 1101 10 0 1 10 00100 10010 1010 0100 1111 0010000000
8 1000 1110 10 0 0 10 01000 10100 1011 1100 1110 0100000000
9 1001 1111 11 1 1 10 10000 11000 1100 1101 1010 1000000000
Hamming
1-4, változó 1-4, változó 1-4, változó 2 vagy 4 2 vagy 4 1-4, változó 1-4, változó 1-4, változó 2, konstans
távolság
Kódok és a Hamming-távolság
33. ábra

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

Kódszó D3 D2 D1 P4 D0 P2 P1 a 7-bites kódszó


A E E E 0 E 0 P1 Páros paritás
Cím A E E E 0 E P2 0 Páros paritás
A E E E P4 E 0 0 Páros paritás

(7,4)-es Hamming-kód kialakításának elve


34. ábra

A (7,4)-es Hamming-kód képzése a következőképpen történik:


Az adatbitek (D3, D2, D1, D0, ahol D3 a legnagyobb, D0 a legkisebb helyiértékű bit) közé ellenőrző
biteket (P4, P2, P1) írunk be. A képzendő 7-bites kód helyiértékeit (jobbról balra) 1-től 7-ig számozzuk
(vigyázat, ez eltérő a szokásostól, hiszen digitális elektronikában a helyiértékeket általában 0-tól
számozzuk). Az ellenőrző bitek mindig a 2 egész hatványai (20=1, 21=2, 22=4) meghatározta
helyiértékekre kerülnek. Az adatbitek pedig (a legkisebb adatbittel kezdve) sorban a rendelkezésre álló
szabad helyiértékekre (3, 5, 6, 7) írandók. Az ábrán az adatbitek (D: data: adat) kékkel, az
ellenőrzőbitek (Pi, ahol i=1, 2, vagy 4) piros színnel kerültek beírásra az ábrába.
Az ábrában a kódszó alatt minden helyiértékhez, az alatta levő oszlopban megadtuk a helyiérték
bináris értékét is (E-bitek: első értéksor - legkisebb helyi-értékű értékbit, utolsó értéksor - legnagyobb
helyi-értékű értékbit sorrendben), úgy hogy ahol az adatbit (Di) 0 értékű, ott az E-bitek is 0-ák lesznek.
Ezután úgy kell az adott címsorbeli (Pi) ellenőrző bitet meghatározni, hogy az értéksor páros paritású
legyen. Így alakulnak ki a Pi ellenőrző bitek.

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

Hamming kód képzése (1. módszer)


35. a. és b. ábra

A kialakult 7-bites kód így 110.0110B (=66H=102D) lesz.

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.

Adat: DH= 13D= 1 1 0 1

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!

a helyes kód: helyes adat: 1101

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

Kódszó 9D-s bitje hibás, így


1 0 1 1 0 0 1   a helyes adat
(7,4) Hamming kód ellenőrzése Helyes és hibás kód esetén
39. ábra

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

3.5. További hibajavító kódok

A kódolással kapcsolatos szakirodalom igen bőséges. Számos kódot dolgoztak ki hibaészlelésre és


hibajavításra. Ezek közül sorolunk fel néhányat a 40. ábrán.
Példaként megemlítjük, hogy az audio CD-knél használt kód az itt megemlített Reed-Solomon kód,
melynek átlapolásos adatelhelyezése és kódolása lehetővé teszi a karcos CD-k hibajavító képességét.

• 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

You might also like