DIGITÁLIS TECHNIKA I Dr. Pıdör Bálint BMF KVK Mikroelektronikai és Technológia Intézet 7. ELİADÁS 7. ELİADÁS 1. Kódok és kódolás alapfogalmai 2. Numerikus kódok. Tiszta bináris kódok (egyenes kód, 1-es és 2-es komplemens kód 3. Aritmetikai mőveletek 1-es és 2-es komplemens 4. Tetrád kódok, BCD kódok. Aritmetikai mőveletek tetrád kódokban 2008/2009 tanév 1. félév 1 2 IRODALOM A számrendszerekkel, aritmetikával, és a kódokkal, illetve kódolókkal foglakozó anyag a jegyzetekben az alábbi helyeken található: Rımer 146-160 old., 167-172 old., 179-181 old. Zsom 1. kötet 9-11 old., 19-49 old., 271-280 old., 297-302 old. Gál (Digitális rendszerek, BME) 132-145 old., 167-199 old. (Igen jó és alapos a számrendszerek és az aritmetikák tárgyalása!) Tietze, Schenk könyv megfelelı fejezete (BCD Code (m) KÓD - francia szó, eredeti szőkebb értelme a rejtjellel kapcsolatos. - információ kifejezésének, közlésének, megjelenítésének egyik formája. - információt hordozó szimbólumok, - szimbólumokból felépített szavak, - szimbólumok és szavak összekapcsolási szabályai. - elıírás, mely egyazon információ két ábrázolási formája (két ABC) közötti kapcsolatot adja meg. A hozzárendelésnek nem kell feltétlenül egyértelmően megfordíthatónak lennie. aritmetika!) 3 4 Kód Kód Kód KÓDOLÁS ÉS DEKÓDOLÁS ABC1 ABC2 ABC2 ABC1 Kódoló Dekódoló Bár a a kódolás és dekódolás egymással felcserélhetı, a gyakorlatban kódolás ha a szokásosabb, vagy eleve adott ABC a kiindulási alap, és dekódolás a fordított eset. Pl. 10-es számrendszer 2-es rendszer - kódolás SZIMBÓLUMKÉSZLET Azon elemi jelek összessége melyeket a kódolásra felhasználhatunk. Pl. tízes számrendszer (a mennyiségi információ egyik kódja): - tíz darab számjegy, - tizedesvesszı, - elıjel, - szóköz. Pl. bináris kód a digitális technikában: - csak két szimbólum, 0 és 1. 2-es számrendszer 10-es rendszer - dekódolás 5 6
KÓDSZÓ, KÓDVEKTOR KÓDSZÓ KÉSZLET A szimbólumkészletbıl alkotott sorozat. Definiálni kell az egyes jelek összekapcsolási, illetve az egyes szavak megkülönböztetésének szabályait. Kétértékő (bináris) kód: az alkotóelem a bit. A kódszavak különbözı hosszúságúak lehetnek. 8 bit byte, a kódszavak hosszát gyakran byteban adják meg. 7 Egy rendszerben használt kódszavak összessége. Pl. egy beszélt nyelvben a használt összes szó. A használt szavak a megengedett, az értelmetlen szavak a tiltott kódszavak. Pl. szokásos BCD kód: 0111 megengedett, 1011 tiltott kódszó (tetrád, illetve pszeudotetrád). 8 SZÓHOSSZÚSÁG A kódszóban lévı szimbólumok száma. Fix és változó szóhosszúságú rendszerek. Pl. az emberek személyi számai vagy adószámai fix szóhosszúságú, szokásos neveik pedig változó szóhosszúságú kódszavak. BINÁRIS ÉS NEM BINÁRIS KÓDOK Bináris kód két elemő szimbólumkészlet. Nem bináris kód többelemő szimbólumkészlet. Gyakorlati megvalósíthatóság: kétállapotú elemek elınyös tulajdonságai bináris kód. 9 10 KÓDSZAVAK MAXIMÁLIS SZÁMA Adott kódban a megkülönböztethetı kódszavak maximális száma a szóhosszúságtól és a jelkészlet nagyságától függ. KÓD GAZDASÁGOSSÁGA Adott mennyiségő információ megjelenítéséhez, átviteléhez szükséges szimbólumok száma. Pl. négy esemény és kódjaik Bináris kód: n kódszavak hossza, akkor 2 n. Pl. n = 8, ekkor 256 kódszó lehet. Lehetıségek: - természetes számok 0-255 (egyenes kód); - elıjeles számok -128-tıl +127-ig (2-es komplemens kód); - elıjeles számok -127-tıl +127-ig (1-es A 0 B 10 C 110 D 1110 Ha egyforma valószínőséggel következnek be, akkor az üzenet átvitele átlagosan 2,5 elemi szimbólumot igényel. komplemens vagy inverz kód). 11 12
HAMMING TÁVOLSÁG Két kódszó HAMMING távolsága (D): Hány kódelemet kell az ellenkezıjére változtatni hogy a másik kódszót kapjuk Egy kód HAMMING távolsága: A kódszó készletelemei közötti legkisebb Hamming távolság KÓDOLT INFORMÁCIÓ TOVÁBBÍTÁSA Soros átvitel Párhuzamos átvitel Vegyes üzemmód 13 14 ADATÁTVITEL Kódolt információ átvitele: többféle üzemmódban lehet - soros, - párhuzamos, - vegyes. Soros átvitel: csatornák száma kicsi, adatátvitel ideje nagy. Párhuzamos átvitel: egyidejőleg több csatornán. Vegyes üzemmód: a két átvitelfajta valamilyen kombinációja. Az adó és vevıoldali berendezések Kódok hibavédelmi képessége Adatforrás Hiba felismerés feltétele: D 2 Átvivı közeg Zaj, zavar Rendeltetési hely Hiba javítás feltétele: D 3 Általánosságban k 2 m + k 1 m információs bithez k ellenırzı bit szükséges bonyolultabbak, és költségesebbek. 15 16 HIBAFELISMERİ ÉS HIBAJAVÍTÓ KÓDOK HIBAJAVÍTÁS Legegyszerőbb hibafelismerési eljárás: ADÓ JEL BITEK VEVİ paritásbit átvitele Két lehetıség Kód Paritásbit páros paritás 1 1 0 1 1 páratlan paritás 1 1 0 1 0 17 PARITÁS GEN. PARITÁS BIT PARITÁS VIZSG. PARITÁS HIBA JELZİ A hibajavítást blokkrendszerő adatátvitel esetén SOR és OSZLOP paritás ellenırzésével is elvégezhetjük. Ily módon egyetlen hiba a hibás sor és oszlop metszéspontjában van, így a hiba értékcserével javítható 18
NUMERIKUS ÉS ALFANUMERIKUS KÓDOK Információk két nagy csoportja: - csak számot tartalmazó, numerikus, - számokat és betőket tartalmazó, alfanumerikus. AZ ÁBRÁZOLANDÓ SZÁM ÉRTÉKÉN ALAPULÓ KÓDOK Fı szempont a mőveletek minél egyszerőbb elvégzése - Bináris aritmetikához igazodó kód kell Pl. numerikus kódokra: - tiszta bináris kód, 1-es és 2-es komplemens kód, - binárisan kódolt decimális (BCD) számjegy kódok, - egyéb bináris kódok, pl Gray kód. Pl. alfanumerikus kódokra: - telex kód (5 bites), ASCII (American Standard Code Elıjeles számok ábrázolása - Ne legyen szükség külön kivonás mőveletre Racionális számok ábrázolása - Pontosság - Nagyságrend 19 20 for Information Exchange, 8 bites) KIVONÁS: DECIMÁLIS ARITMETIKA MŐKÖDÉSE Kivonás helyett (9-es komplemens+1) hozzáadás Példa: 468-315 =? KIVONÁS: DECIMÁLIS ARITMETIKA 10-ES KOMPLEMENS Kivonás helyett (10-es komplemens) hozzáadás Példa: 468-315 =? Szokásosan 9-es komplemens Szokásosan 10-es komplemens 468 999 468-315 - 315 + 684 153 684 1 152 1 Az átvitellel korrigálni kell 153 468 1000 468-315 - 315 + 685 153 685 1 153 Az átvitelt nem kell figyelembe venni! 21 22 az eredményt! 1-ES ÉS 2-ES KOMPLEMENS BINÁRIS KÓDOK Decimális 10-es komplemens bináris 2-es komplemens kód Decimális 9-es komplemens bináris 1-es komplemens (vagy inverz) kód 23 KOMPLEMENS (KIEGÉSZÍTİ) KÓDOK n jegyő N R szám N R` radix komplemense N R` = R n - N R A komplemens alak egy másik formája a csökkentett radix komplemens (R n - 1) - N R A csökkentett radix komplemens neve decimális rendszerben 9-es komplemens, binárisban 1-es komplemens. 24
NEGATIV SZÁMOK ÁBRÁZOLÁS BINÁRIS RENDSZERBEN Számok: nagyság és elıjel. Digitális rendszerek: tárolás regiszterekben, ahány helyérték (bit), annyi flip-flop, illetve elemi tárolócella. Elıjel tárolása: plusz egy elemi tárolócella Pozitív szám: elıjel +, digitális rendszer: 0 bit. Negatív szám: elıjel -, digitális rendszer: 1 bit. NEGATIV SZÁMOK ÁBRÁZOLÁS BINÁRIS RENDSZERBEN Háromféle eljárás: Elıjel és abszolút érték 1-es komplemens minden bit komplementálva (invertálva) 2-es komplemens minden bit komplementálva (invertálva) plusz 1 hozzáadása a legkisebb helyértéken 25 26 NEGATIV SZÁMOK ÁBRÁZOLÁS BINÁRIS RENDSZERBEN Példa: -5 ábrázolása (4 biten) Elıjel és abszolút érték +5 0 1 0 1-5 1 1 0 1 1-es komplemens +5 0 1 0 1-5 1 0 1 0 2-es komplemens +5 0 1 0 1-5 1 0 1 0 1 NEGATÍV SZÁMOK ÁBRÁZOLÁSA 4-bites természe- egyenes 1-kompl. 2-kompl. kódszó tes szám kódok 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1............... 0 1 1 1 7 7 7 7 1 0 0 0 8 (-)0-7 - 8 1 0 0 1 9-1 - 6-7............... 1 1 1 0 14-6 - 1-2 1 1 1 1 15-7 (-)0-1 1 0 1 1 27 28 ELİJEL ÉS NAGYSÁG 1-ES KOMPLEMENS 0 100 4 0 100 4 4 6 1111 1110 5 1101 1100 7 +0 0000 +1 0001 +2 0010 0011 +3 1 100-4 3 2 1 1101 1100 0 1111 1110 +0 +1 0000 0001 +2 0010 +3 0011 1 011-4 3 1011 1010 2 1001 1 1000 0 0100 +4 0101 +5 0110 0111 +6 +7 29 4 5 1011 1010 1001 6 1000 7 0100 +4 0101 +5 0110 0111 +6 +7 30
2-ES KOMPLEMENS BINÁRIS SZÁMOK ÁBRÁZOLÁSA: PÉLDA 4 5 3 2 1101 1100 1011 1 1111 1110 +0 +1 0000 0001 +2 0010 +3 0011 0100 +4 0 100 4 1 100-4 Decimális érték Kódszó Egyenes 1-kompl. 2-komp. 0 0 0 0 0 0 0 1 1 1 1-7 (-)0-1 6 1010 7 1001 1000 0101 +5 0110 0111 +6 8 +7 31 32 EGÉSZ SZÁMOK ÁBRÁZOLÁSA Elıjeles kód - Legbaloldalibb bit (MSB) jelzi a szám elıjelét - 0: pozitív - 1: negatív Külön összeadás és kivonás mőveletet kell implementálni 33 ARITMETIKA: 1-ES KOMPLEMENS KÓD Negatív számok esetén az abszolút érték kódjában az 1-eseket 0-ra, a 0-kat 1-esekre kell cserélni: 56 0011 1000 (38hex) - 56 1100 0111 (C7hex) Pl. összeadásra 58 0011 1010 3Ahex - 56 1100 0111 C7hex 2 1 0000 0001 1 01hex + 1 korrekcióval 0000 0010 02hex 34 1-ES KOMPLEMENS: PRO ÉS KONTRA Legbaloldalibb bit (MSB) - jelzi, hogy pozitív vagy negatív Kivonás helyett negatív szám hozzáadása Negatív számok hozzáadásánál +1 korrekció kell (Mint a decimális számrendszerben a 9-es komplemens kódolásnál) A 0-nak kétféle kódja is van: ARITMETIKA: 2-ES KOMPLEMENS KÓD Az 1-es komlementumhoz a legkisebb helyértéken 1-et adunk hozzá 56 0011 1000 (38hex) - 56 1100 1000 (C8hex) Pl. összeadásra 58 0011 1010 3Ahex - 56 1100 1000 C8hex 2 1 0000 0010 1 02hex 0000 0000 és 1111 1111 35 36 Nem kell korrekció!
2-ES KOMPLEMENS: PRO ÉS KONTRA Legbaloldalibb bit (MSB): a szám negatív-e vagy pozitív Legjobboldalibb bit (LSB): a szám páros-e vagy páratlan Kivonás negatív szám hozzáadásával - a mővelet korrekt, nem kell korrigálni SZÁMÁBRÁZOLÁS KOMPLEMENS KÓDDAL Pozitív számot 0-ás elıjelbittel és abszolút értékével ábrázoljuk Negatív számot 1-es elıjelbittel és abszolút értékének komplemensével kell ábrázolni Az elıjelbitekkel ugyanúgy kell mőveletet végezni mint az egyéb számjegyekkel Minden számnak különbözı kódja van (nincs redundás zérus) 37 A 2-es komplemens kód alkalmazása gyakoribb, mert egyszerőbb vele a mőveletvégzés 38 ÖSSZEADÁS ÉS KIVONÁS 1-ES KOMPELEMS KÓDBAN Az operandusokat össze kell adni A keletkezı átvitelt az összeghez kell adni Ha az eredmény elıjelbitje 0, az eredmény pozitív, és abszolút értéke a tényleges eredmény ÖSSZEADÁS ÉS KIVONÁS 2-ES KOMPELEMS KÓDBAN Az operandusokat össze kell adni Az összeadásnál keletkezı átvitel elhanyagolandó Ha az eredmény elıjelbitje 0, az eredmény pozitív, és abszolút értéke a tényleges eredmény Ha az eredmény elıjelbitje 1, az eredmény negatív, és értéke a tényleges összeg abszolút Ha az eredmény elıjelbitje 1, az eredmény negatív, és értéke a tényleges összeg abszolút értékének a 2-es komplemensét adja értékének 1-es komplemense 39 40 Fixpontos ábrázolás RACIONÁLIS SZÁMOK ÁBRÁZOLÁSA - Egész számként - Külön jelezni kell, hol van a kettedes vesszı Valamennyi ábrázolt jegy pontos Túlcsordulás - Balról értékes jegyek veszhetnek el 41 RACIONÁLIS SZÁMOK ÁBRÁZOLÁSA Lebegıpontos ábrázolás - Számok normál alakján alapszik - Mantissza: 0,ddddd - Tizedesvesszı helye megállapodáson alapszik, nem kell külön kódolni - 2-es komplemens kód - Exponens - 2-es komplemens kód 42
LEBEGİPONTOS ÁBRÁZOLÁS: PRO ÉS KONTRA Multiplikatív mőveletek elvégezhetık - Jóval tágabb körben - Legfeljebb értéktelen jobboldali jegyek vesznek el Additív mővelet csak azonos kitevıjő operandusok között lehetséges - Normalizálni kell - Normalizálás közben alulcsordulás léphet fel 43 DECIMÁLIS SZÁMJEGYEK BINÁRIS KÓDOLÁSA Információ ábrázolás és feldolgozás: tiszta bináris (és 1-es, valamint 2-es komplemens) kód. Adat be- és kivitel: tízes számrendszer. 10-es számrendszer egyes számjegyei (a 10 szimbólum, 0, 1,... 9) kifejezése bináris kóddal: binárisan kódolt decimális kód Binary Coded Decimal (BCD) 44 TETRÁD KÓDOK Egy decimális számjegy kódolásához 2 log10 = 3,32 bit szükséges, ez gyakorlatilag 4 bitet jelent. - 3 bit kevés (max. 8 különbözı számjegy) - 4 bit több, mint elég - redundancia, többféle hozzárendelés lehetséges (kb. 2,9x10 10 féle) - redundancia: hibafelismerés és hibajavítás TETRÁD KÓDOK TÍPUSAI Súlyozott (helyi értékes ) kódok - normális (természetes) BCD kód, Aiken kód, stb. Súlyozatlan kódok - Stibitz (3 többletes) kód, stb. Tetrád (angol/amerikai: nibble): a decimális (és hexadecimális) számjegyek bináris kódolásához szükséges helyi értékek (fél-byte) 45 46 TETRÁD KÓDOK ALGORITMUSAI Tetrád kód: a4a3a2a1 ai = 0,1 Súlyok: s4s3s2s1 Decimális számjegy értéke: d = a4s4 +a3s3 + a2s3 +a1s1 SÚLYOZOTT TETRÁD KÓDOK A legfontosabb súlyozott tetrád kódok súlyozásai: 8 4 2 1 normál v. természetes BCD kód 5 4 2 1 2 4 2 1 (Aiken kód) 4 2 2 1 Aiken kód 5 3 1 1 7 4 2 1 1-esek számát minimalizáló kód 7 4-2 -1 47 48
NORMÁL BCD KÓD Természetes kód - Minden számjegyhez a 4-bites bináris kódját rendeli - Természetes helyérték: 8 4 2 1 PSZEUDOTETRÁDOK AZONO- SÍTÁSA A KARNAUGH TÁBLÁN C Minimalizálás után P = A B + A C d = 8a 4 + 4a 3 + 2a 2 +1a 0 A hat nem megengedett kombináció (1010,... 1111) neve pszeudotetrád. 49 A 1 1 1 D 1 1 1 B Hibajelzı: A & B A & C 1 50 BCD KÓDOK Érvényes kódszavak Nem használt, illetve érvénytelen kódszavak AIKEN KÓD - 4, 2, 2, 1 helyértékek - Többféle hozzárendelés lehetséges - 9-es komplemens - Önkomplemens BCD: 2 0010 és 7 1101 (csökkentett radix komplemensek), - Aritmetika: kivonás helyett 9-es komplemens+1 hozzáadása d = 4a 4 + 2a 3 + 2a 2 +1a 0 51 Tetrádok indexei: 0,1,2,3,6,9,12,13,14,15 52 KÜLÖNFÉLE BCD KÓDOK SÚLYOZOTT BCD KÓDOK 53 54
3-TÖBBLETES (STIBITZ) KÓD Elıfeszített súlyozott kód NEM-SÚLYOZOTT BCD KÓDOK TETRÁD KÓDBAN d = 8a 4 + 4a 3 + 2a 2 +1a 0-3 - A 3-mal nagyobb szám BCD kódja - Önkomplemens kód - Aritmetika: az ötödik biten jelzi az átvitelt, viszont az eredményt korrigálni kell Tetrádok indexei: 3,4,5,6,7,8,9,10,11,12, 55 56 ARITMETIKAI MŐVELETEK TETRÁD KÓDBAN A digitális rendszerek, és ezen belül a számítógépek jelentıs része a négy aritmetikai mőveletet, illetve azok egy részét közvetlenül a binárisan kódolt decimális (BCD) számokon is el tudja végezni. Pl. a mikroprocesszorok alkalmasak BCD kódú számok összeadására, egy részük kivonására is. Egyes célprocesszorok a BCD kódú, szorzást illetve osztást is el tudják végezni. 57 ÖSSZEADÁS TETRÁD KÓDOKBAN Az összeadást a közönséges bináris összeadásra vezetik vissza. Elv: - az operandusok egyes tetrádjait közönséges bináris számoknak tekintve tetrádonként elvégzik az összeadást, majd ha szükséges (pszeudotetrádok keletkeznek) korrigálják az eredményt. 58 ÖSSZEADÁS KÖZÖNSÉGES BCD (8421 SÚLYOZÁSÚ) KÓDBAN BCD (8421) ÖSSZEADÁS Ha két tetrád összege nem nagyobb mint 9, akkor az eredmény helyes, nincs szükség korrekcióra. Példa: decimális BCD Ha az eredmény nagyobb mint 9 (ekkor átvitel és pszeudotetrád lép fel) akkor az eredmény csak binárisan helyes, BCD kódban nem. Ekkor a korrekció 6 (decimális) azaz 0110 (bináris) hozzáadásával elvégezhetı. Mindezt a legalacsonyabb helyértéktıl kezdve 427 0100 0010 0111 + 131 + 0001 0011 0001 558 0101 0101 1000 Mivel egyetlen helyértéken sem volt az összeg 9-nél nagyobb, ezért korrekcióra nem volt szükség tetrádról tetrádra haladva kell elvégezni. 59 60
BCD ÖSSZEADÁS: +6 KORREKCIÓ 789 0111 1000 1001 + 213 + 0010 0001 0011 1002 1001 1001 1100 + 0110 1001 1010 0010 + 0110 1010 0000 0010 + 0110 BCD (8421) ÖSSZEADÁS ALGORITMUSA A BCD + BCD B BCD = A BCD + bin B BCD ha A BCD + bin B BCD 9 A BCD + BCD B BCD = A BCD + bin B BCD + bin 6 BCD ha A BCD + bin B BCD > 9 1 0000 0000 0010 61 62 ÖSSZEADÁS STIBITZ (3-TÖBBLETES) BCD KÓDBAN Az összeadást binárisan végzik el tetrádonként, és itt mindig kell korrekció. Szabály: Ha nincs átvitel, akkor 3-at (0011) le kell vonni, ha van átvitel 3-at (0011) hozzá kell adni az összeghez. Elıny: Az utólagos korrekció nem hozz létre újabb átvitelt! Ezért a korrekciók tetrádonként egymástól EXCES-3 (STIBITZ) KÓD: ÖSSZEADÁS Példa: decimális Excess-3 427 0111 0101 1010 + 131 + 0100 0110 0100 558 1011 1011 1110-0011 -0011-0011 1000 1000 1011 5 5 8 Mivel egyetlen helyértéken sem volt átvitel, ezért minden helyértéken -3 korrekció kell! függetlenül végezhetık el. 63 64 ÖSSZEADÁS AIKEN KÓDBAN Az összeadást binárisan végzik el tetrádonként, és elvégzik a szükséges korrekciót. - Ha nem lépett fel pszeudotetrád, akkor nem kell korrekció. - Ellenkezı esetben, ha volt átvitel a korrekció + 6, he nem volt átvitel, a korrekció - 6. KIVONÁS TETRÁD KÓDOKBAN A bináris számokhoz hasonlóan itt is komplemens kódú összeadásra vezetik vissza a kivonást. Mind a 9-es, mind a 10-es komplemens használható, de az elızınél itt is kell korrigálni az eredményt a körátvitellel, ha az fellépett. 65 66
MULTIPLIKATÍV MŐVELETEK TETRÁD KÓDOKBAN Léteznek a megfelelı algoritmusok a szorzás és osztás elvégzésére. Mivel gyakori feladat a 2-vel való szorzás vagy osztás (pl. bináris-bcd, illetve BCD-bináris átalakítás), ezért a hatékonyság növelése érdekében erre vannak külön algoritmusok. VÉGE Bináris: egy helyértékkel jobbra vagy balra léptetés. BCD szorzás: egy helyértékkel balra léptetés, és +6 korrekció a pszeudotetrádoknál. 67 68