8. ELİADÁS
DIGITÁLIS TECHNIKA I Dr. Pıdör Bálint
1. Kódváltók, kódoló és dekódolók BMF KVK Mikroelektronikai és Technológia Intézet 8. ELİADÁS
2. Egyszerő kódátalakító (kombinációs) hálózatok 3. Bináris/BCD és BCD/bináris kódátalakítók
2008/2009 tanév 1. félév 1
2
ARITMETIKAI MŐVELETEK TETRÁD KÓDBAN
ISMÉTLÉS ÉS KIEGÉSZÍTÉS
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.
BCD típusú és egyéb különleges kódok Összeadás BCD kódban: • Algoritmus • Realizálás
3
4
ÖSSZEADÁS TETRÁD KÓDOKBAN
ÖSSZEADÁS KÖZÖNSÉGES BCD (8421 SÚLYOZÁSÚ) KÓDBAN
Az összeadást a közönséges bináris összeadásra vezetik vissza.
Ha két tetrád összege nem nagyobb mint 9, akkor az eredmény helyes, nincs szükség korrekcióra.
Elv:
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ı.
- 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. 5
Mindezt a legalacsonyabb helyértéktıl kezdve tetrádról tetrádra haladva kell elvégezni.
6
BCD ÖSSZEADÁS: +6 KORREKCIÓ
BCD (8421) ÖSSZEADÁS Példa: decimális 427 + 131 —— 558
789 + 213 —— 1002
BCD
0111 1000 1001 + 0010 0001 0011 ———————— 1001 1001 1100 + 0110 ———————— 1001 1010 0010 + 0110 ———————— 1010 0000 0010 + 0110 ———————— 1 0000 0000 0010
0100 0010 0111 + 0001 0011 0001 ———————— 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 7
BCD (8421) ÖSSZEADÁS ALGORITMUSA
PSZEUDOTETRÁDOK AZONOSÍTÁSA A KARNAUGH TÁBLÁN C
ABCD +BCD BBCD = ABCD +bin BBCD
Minimalizálás után
ha ABCD +bin BBCD ≤ 9
P=AB+AC B Hibajelzı:
ABCD +BCD BBCD = ABCD +bin BBCD +bin 6BCD ha ABCD +bin BBCD > 9
1
1
1
9
BCD számok összeadása
B
B3 B2 B1 B0
C4
„0”
&
„0”
Bináris összeadó A3 A2 A1 A0
A3 A2 A1 A0
1
C0
„0”
S3 S2 S1 S0
&
B3 B2 B1 B0
C0
S3 S2 S1 S0
A
1 &
C
10
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.
Bináris összeadó A3 A2 A1 A0
D
1
&
A bináris számokhoz hasonlóan itt is komplemens kódú összeadásra vezetik vissza a kivonást.
C4 B3 B2 B1 B0
A
KIVONÁS TETRÁD KÓDOKBAN
Decimális 6 (bináris 0 1 1 0) korrekció
A + B > 9. érvénytelen kódszó
1
A 1
Átvitel két dekád között
8
S3 S2 S1 S0
„0”
11
12
MULTIPLIKATÍV MŐVELETEK TETRÁD KÓDOKBAN
KÓDÁTALAKÍTÓ HÁLÓZATOK, KÓDVÁLTÓK, DEKÓDEREK A digitális technikában gyakran van szükség különbözı kódrendszerek közötti átalakításra, kódváltásra. A kódátalakító hálózatok lényegében több bemeneti és kimeneti ponttal rendelkezı kombinációs hálózatok.
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. 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. 13
KÓDÁTALAKÍTÓK Kódátalakítókra akkor van szükség, ha az adatforrás és a nyelı kódrendszere nem egyezik meg. Pl.: Helyzet érzékelı
Gray Bináris
Gray 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
Sok esetben célszerőbb a memóriaelemeken alapuló megvalósítás.
14
DEKÓDOLÓK, KÓDOLÓK A leggyakrabban szükséges kódátalakító áramkörök készen rendelkezésre állnak mint ún. közepes integráltságú áramkörök (medium scale integrated (MSI) circuits).
Bináris
NBCD 10 8421 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0001 0001 0001 0001 0001
Megvalósíthatók egyedi logikai kapukból a kombinációs hálózatok megvalósítása ismert eljárásai szerint.
1 8421 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
15
INTEGRÁLT ÁRAMKÖRÖK OSZTÁLYOZÁSA Integrált áramkörök osztályozása komplexitás (integráltsági fok) szerint: SSI Small Scale Integration: kb. 10 alacsony szintő elem (kapu) MSI Medium Scale Integration: 10-100 LSI Large Scale Integration: 100-1000 VLSI Very Large Scale Integration: > 1000 ULSI Ultra Large Scale Integration: > 10000 GLSI Giga Large Scale Integration: > 100000 RLSI Ridiculously (?) Large Scale Integration : 17 > 1000000
16
DEKÓDOLÓ (DECODER) ÁRAMKÖR Kódolt információ dekódolása (konverzió) Egyidıben-egyszerre csak egy logikai kimeneti változó (tehát a dekódolt) lehet igaz, a többi hamis! 2N kimenet dekódolásához N bemenet kell! Gyakran alkalmazott eszköz, kapható 2-, 3-, 4-,… bemenető IC formájában 18
TIPIKUS FELADATOK, TIPIKUS ÁRAMKÖRÖK
”1 AZ N KÖZÜL” DEKÓDOLÓK
Bemeneti kód Kimeneti kód ——————————————————————— n-bites bináris kódszó ”1 a 2n-bıl” BCD (számjegy) ”tiszta” decimális számjegy (1 a 10-bıl) 3-többletes ”tiszta” decimális számjegy (1 a 10-bıl) BCD 7-szegmenses kijelzı ”tiszta” bináris (szám) BCD BCD ”tiszta” bináris
”1 az N közül” (1 out of N vagy 1 of N) dekódolók: Kombinációs áramkör, melynek n bemente és m kimenete van. A bemeneti kombinációk lehetséges száma 2n, a kimenetek száma pedig m ≤ 2n. A kimenetek közül mindig csak az egyik 1 és az összes többi 0, vagy fordítva, az egyik 0 és a többi 1. Az n-bites bináris bemeneti kóddal kiválaszt egyet az m kimeneti vonal közül, mely csak az adott bemeneti kód megjelenése esetén lesz aktív. A legtöbbször MSI integrált áramkörként megvalósított hálózat tartalmazhat egyéb ”kényelmi” vezérlı 20 bemeneteket (pl. engedélyezı) is.
19
2-to-4 Decoder
3-to-8 Decoder
PÉLDA: 1 A 8 KÖZÜL DEKÓDÓLÓ A B C E1 E2
3/8
O0 O1 O7
data
address
21
22
Decoder with enable: 2-to-4
Háromból nyolcvonalas dekódoló engedélyezı bemenettel. A kimeneti kapuk négy bemenetőek, három fogadja a bemeneti kódot, az engedélyezı jel a kimeneti kapuk negyedik bemenetére kerül. Dekóder engedélyezı bemenettel 23
24
ALKALMAZÁSOK: BCD(BIN)/DECIMÁLIS DEKÓDOLÓ
DEKÓDER BİVÍTÉS
BCD/DEC
A 20
0 1 2 ... 5 ... 8 9
B 21 C 22
D 23
Gyakori alkalmazás a BCD/DEC átalakító. A bemenetek száma 4, a kimeneteké pedig 10. Az aktív kimenet lehet akár H szintő (1) akár L szintő (1) a realizálástól függıen.
0101bin → 5dec 25
26
ÖSSZEVONT ÁBRÁZOLÁS KARNAUGH TÁBLÁN
BCD(BIN)/DECIMÁLIS DEKÓDOLÓ ABCD 0 1 2 3 4 5 6 7 8 9 ————————————————————— 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 ....... 1 0 0 1 1 0 1 0 ....... 1 1 1 1
0 X
0 0 0 0 0 0 0 X X X X X X X
K0 és K1 nem egyszerősíthetı.
C
0 1 X X
K0
K1
K3
K2
K4
K5
K7
K6
-
-
-
-
K8
K9
-
-
K3 ... K7 tagok egyszerősíthetık egy egy don’t care B mintermmel való összevonással.
A X
X
X X
X
X X X
X
X 27
MINIMALIZÁLÁS EREDMÉNYE
MSI realizálásban nem kell takarékoskodni a kapukkal és így nem szükséges minimalizálni, ekkor a tiltott kombinációk kihasználásával kiegészítı áramköri funkciók valósíthatók meg.
K0 = A B C D ———
K0
K1
K3
K2
K1 = A B C D
K4
K5
K7
K6
K2 = B C D
—
B -
-
-
-
K8
K9
-
-
—
Pl. a tiltott kombinációknál a kimenetek letilthatók. Lehet más elıírást is alkalmazni, de a fı, hogy a tiltott bemenetekre is lehet a kimenetek állapotát definiálni.
.......
A
D
—
K8 = A D K9 = A D
28
BCD/DEC DEKÓDOLÓ
————
C
D
K8, illetve K9 körül négyes hurkok alakíthatók ki.
29
30
BCD/7-SZEGMENSES KIJELZİ DEKÓDOLÓ
BCD/DEC DEKÓDOLÓ MINT BIN/OKTÁLIS DEKÓDOLÓ A 20
• Bemenet : 4 bit BCD digit (A, B, C, D)
BCD/DEC
0 1 2 ... 5 ... 8 9
B 21 C 22
A BCD/DEC dekódolót bináris/oktális dekódolónak használva csak a 0 ... 7 kimenetek lényegesek, a 8 és 9 kimeneteket nem használják.
• Kimenet : 7 szegmens vezérlıjele (C0-C6) c5 c4
BCD to 7–segment control signal decoder
• Truth table – Show don't cares A B • Choose implementation 0 0 0 0 target 0 0 – If ROM, we are done 00 01 0 1 – Don't cares imply 0 1 0 1 PAL/PLA 1 0 may be attractive 1 0 1 0 • Follow implementation 1 1 procedure – Minimization using K-maps
C 0 0 1 1 0 0 1 1 0 0 1 –
D 0 1 0 1 0 1 0 1 0 1 – –
C0 1 0 1 1 0 1 1 1 1 1 – –
C1 1 1 1 1 1 0 0 1 1 1 – –
C2 1 1 0 1 1 1 1 1 1 1 – –
C3 1 0 1 1 0 1 1 0 1 0 – –
C4 1 0 1 0 0 0 1 0 1 0 – –
C5 1 0 0 0 1 1 1 0 1 1 – –
C6 0 0 1 1 1 1 1 0 1 1 – –
33
1
0
1
1
1
A
1
1
D
A
A
X
1
1
1
X
1
1
1
X
1
1
0
X
1
1
0
X
1
1
X
1
1
0
X
1
1
1
X
1
0
1
X
0
0
0
X
0
C 1
1
X
X
C 1
1
X
X
C 1
1
X
X
C 1
0
X
X
C 0
0
X
X
1
1
X
X
1
0
X
X
0
1
X
X
1
1
X
X
1
1
X
X
1
1
X
1
0
1
X
1
D
B
D
B
D
B
A
D
B
B
A
0
1
X
1
0
1
X
1
C 0
0
X
X
C 1
0
X
X
0
1
X
X
1
1
X
X
D
B
D
B
C0 C1 C2 C3 C4 C5 C6
= = = = = = =
A + B D + C + B' D' C' D' + C D + B' B + C' + D B' D' + C D' + B C' D + B' C B' D' + C D' A + C' D' + B D' + B C' A + C D' + B C' + B' C
Don’t care termek: erıs egyszerősítések adódnak!34
B -
A
0
0
C2
A
A
1
• Van jobb megoldás! – 9 különbözı szorzat tag (15 helyett) – Közös termek – Az egyes kimenetek nem szükségképen minimális A A
C 1
• 15 unique product terms when minimized individually
Implementation as Minimized S-o-P (cont'd)
C0
0
32
Implementation as Minimized Sumof-Products
MINIMALIZÁLÁS EREDMÉNYE (C0)
1
A B C D
31
Formalize the problem
-
c2
c0 c1 c2 c3 c4 c5 c6
Engedélyezı bemenetként 1 tilt 0 engedélyez
-
c1
c6 c3
D
-
c0
_ _ C0 = A + C + B D + B D
35
1
1
X
1
1
1
X
1
C 1
1
X
X
0
1
X
X
C2 D
B
C0 C1 C2 C3 C4 C5 C6
= = = = = = =
A + B D + C + B' D' C' D' + C D + B' B + C' + D B' D' + C D' + B C' D + B' C B' D' + C D' A + C' D' + B D' + B C' A + C D' + B C' + B' C
1
1
X
1
1
1
X
1
C 1
1
X
X
0
1
X
X
D
B
C0 C1 C2 C3 C4 C5 C6
= = = = = = =
B C' D + C D + B' D' + B C D' + A B' D + C' D' + C D + B' D' B' D + B C' D + C' D' + C D + B C D' B C' D + B' D + B' D' + B C D' B' D' + B C D' B C' D + C' D' + A + B C D' B' C + B C' + B C D' + A 36
D
LOGIKAI FÜGGVÉNYEK REALIZÁLÁSA DEKÓDERREL
PLA MEGVALÓSÍTÁS A B C D BC' B'C B'D BC'D C'D' CD B'D' A BCD'
C0 C1 C2 C3 C4 C5 C6 C7 37
• Tetszıleges kombinációs hálózat realizálható dekóder(ek) és VAGY kapuk felhasználásával! Példa: Teljes összeadó (TÖ) megvalósítása egy dekóderrel és két VAGY kapuval. • A TÖ logikai összefüggései (a bemenetek X, Y, és Z): – S(X,Y,Z) = X plus Y plus Z = Σ3(1,2,4,7) – C (X,Y,Z) = Σ3(3, 5, 6, 7). • Mivel 3 bemenet és összesen 8 minterm van, egy 3-to-8 dekóderre van szükség. 38
Implementing a Binary Adder Using a Decoder
KÓDOLÓ (ENCODER)
S(X,Y,Z) = SUM m(1,2,4,7)
A dekódoló ellentéte: 2N bemeneti és N kimeneti vonala van. Pl. 16 bemenet és 4 kimenet.
C(X,Y,Z) = SUM m(3,5,6,7)
A kimeneti vonalakon azon bemeneti vonal sorszáma bináris ekvivalense jelenik meg, mely vonalon 1 logikai szint van.
39
40
KÓDOLÓ PÉLDA
OKTÁLIS/BINÁRIS KÓDOLÓ
• Példa 8-ból 3-ra bináris kódóló (octal-to-binary) 1 3 5 7
A0 = D1 + D3 + D5 + D7 A1 = D2 + D3 + D6 + D7 A2 = D4 + D5 + D6 + D7
20 1 2 3 6 7
21 1 4 5 6 7
22 1
Oktális/bináris aktív 1 bemenető, aktív 1 kimenető kódoló 41
42
Encoder Example (cont.)
DECIMÁLIS/BCD ÉS OKTÁLIS/BINÁRIS KÓDOLÓK Decimális/BCD kódoló: Bemenet 9 vezeték, sorszámozva 1 ... 9 Kimenet négy vezeték (DCBA), az aktív bementi vezetéknek megfelelı kód. Elvi megvalósítás: VAGY kapuk, pl. B = + + + (A B helyérték súlya 21 = 2) 43
PRIORITÁS KÓDOLÓ
44
EGYLÉPÉSES KÓDOK, GRAY-KÓD A Gray-kód olyan kód, amivel a kvantált mintát digitálisan kifejezve, a szomszédos kvantálási szinteket képviselı kódszavak egymástól csak egy bitjükben különböznek. A Gray-kódot minimális változású kód.
Prioritás kódoló (priority encoder), decimális/BCD, MSI áramkör: Prioritási elven kódol, ha egyszerre több bemeneti vonal aktív, akkor a legmagasabb sorszámút kódolja át BCD alakká.
A Gray-kód speciális esete az ún. egylépéses kódoknak.
Fı felhasználási területe: különbözı jelek ”sorrendbe” állítása, a legmagasabb prioritású jel hatása érvényesül.
Alkalmazás: méréstechnika és automatika, lineáris vagy szöghelyzet érzékelése és kódolása (pozíciókódolás). 46
45
4-BITES GRAY KÓD A KARNAUGH TÁBLÁN
A Gray kód képzési szabálya 4-biten
EGYSZERŐ PÉLDA: 3-BITES GRAY-KÓD
47
Dec Bin Gray ——————————— 0 0 0 0 0 0 0 1 0 0 1 0 0 1 2 0 1 0 0 1 1 3 0 1 1 0 1 0 4 1 0 0 1 1 0 5 1 0 1 1 1 1 6 1 1 0 1 0 1 7 1 1 1 1 0 0 ———————————
Bin/Gray átalakítás: - Gray elsı bitje azonos a bináris kód 1. (MSB) bitjével, - a második bit a bináris szám 1. és 2. bitjének KIZÁRÓ-VAGY függvénye, - a harmadik bit a bináris kód 2. és 3. bitjének KIZÁRÓ-VAGY függvénye, - és így tovább. 48
GRAY-KÓD, HAMMING-TÁVOLSÁG A Gray-kód 2n számú n-bites bites kódszavak olyan sorrendben, hogy bármelyik két szomszédos kódszó csak egyetlen bitben különbözik. Ez áll az elsı és utolsó kódszóra is (ciklikusság). Ha n = 3, a kódszavak ciklikus sorrendje: 000 100
001
101 010 110
49
50
51
52
BINÁRIS/GRAY ÉS GRAY/BINÁRIS KONVERZIÓ ALGORITMUSAI Bináris: b3b2b1b0
BINÁRIS/GRAY KÓDÁTALAKÍTÓ 0 b3
0 a3
Gray: a3a2a1a0 1 b2
Bináris → Gray Gray → Bináris ————————————————————— a3 = b3 b3 = a3 a2 = b3 ⊕ b2 b2 = a3 ⊕ a2 a1 = b2 ⊕ b1 b1 = a3 ⊕ a2 ⊕ a1 = b2 ⊕ a1 a0 = b1 ⊕ b0 b0 = a3 ⊕ a2 ⊕ a1 ⊕ a0 = stb. Bináris → Gray: Gray → Bináris:
Két kódszó Hamming távolságát úgy határozzák meg, hogy a két kódszó azonos helyen álló elemeit összehasonlítják, és megállapítják hány helyen áll különbözı bit. Az így kapott szám a Hamming távolság. A Gray kód bármely két szomszédos kódszava csak egy bitben különbözik.
011 111
HAMMING TÁVOLSÁG
ai = bi+1 ⊕ bi bi = bi+1 ⊕ ai
1 b1
1 b0 53
=1 1 a2
=1
0 a1
=1
0 a0 54
PÉLDA: GRAY/AIKEN KÓD ÁTALAKÍTÓ
MÁS EGYLÉPÉSES KÓDOK Sok más, hasonló tulajdonságú (egylépéses) kód ismeretes. Vannak pl. decimális (BCD) egylépéses kódok: Pl. Glixon-kód, tetrád kódszavak, sorrendjük 0000 (0) → 0001 (1) → 0011 (2) → 0010 (3) → 0110 (4) → 0111 (5) → 0101 → 0100 (7) → 1100 (8) → 1000 (9)
55
GRAY/AIKEN: IGAZSÁGTÁBLÁZAT Gray kód
A kódátalakító 0-8-ig mőködjön! - Az átalakító igazságtáblázatának kitöltése - Logikai függvények egyszerősítése - Realizálás NAND/NAND hálózattal
56
EGYSZEŐSÍTETT FÜGGVÉNYEK
Aiken kód _ X=CB+BD _ _ Y=BD+CB _ Z=A+CD+BC _ __ __ _ _ K=ABCD+BCD+BCD+BCD
Redundáns (don’t care) mintermek: i = 8-11, 13-1557
REALIZÁLÁS (X)
58
REALIZÁLÁS (Y)
_ X=CB+BD
_ _ Y=BD+CB 59
60
REALIZÁLÁS (K)
REALIZÁLÁS (Z)
& & & _ Z=A+CD+BC 61
_ __ __ _ _ K = A B C D + B C D + BCD + B C D
62
BINÁRIS/BCD KONVERZIÓ ALGORITMUSA
BINÁRIS/BCD KONVERZIÓ Korrekció (+6): - pszeudotetrád fellépésekor, - dekádok közötti határ átlépésekor. Konverzió végrehajtása: - bináris számot a MSB-tól kezdve balra léptetjük, - minden lépés után megvizsgáljuk kell-e korrekció, ha igen elvégezzük.
63
* 1 1 1 0 0 1(bin) = 57(dec) 1*11001 balra lép 11*1001 balra lép 111*001 balra lép *1110*01 balra lép pszeudotetrád +0 1 1 0 * korrigál 1*0100*01 balra blép balra lép 10*1000*1 dekád 101*0001* balra lép átlépés +0 1 1 0 * korrigál 101*0110* 5 7
64
BINÁRIS/BCD KONVERZIÓ Mindkét, a léptetés utáni korrekció +6 hozzáadása. Léptetés elıtt is elvégezhetı, ekkor +3 a korrekció, ha a tetrád decimális értéke nagyobb mint 5. Elınye: az állandóan elvégzett pszeudotetrád korrekció miatt 9-nél nagyobb szám sosem fordul elı, a dekádhatár átlépési korrekció is automatikusan elvégzıdik. Így csak egyfajta korrekciós hálózatra van szükség. 65
VÉGE
66