Pannon Egyetem Villamosmérnöki és Információs Tanszék
Digitális Technika II. (VEMIVI2112D)
1. hét – Digitális tervezés: Kombinációs hálózatok építőelemei Előadó: Dr. Vassányi István
[email protected]
Kapcsolódó jegyzet, segédanyag:
http://www.virt.vein.hu → Oktatás → Tantárgyak → Digitális Technika II. (VEMIVI2112D) Fóliák,
óravázlatok (.ppt) Feltöltésük folyamatosan
2
Digitális tervezés építőelemei
Az alacsonyabb absztrakciós szintről (kapuk) feljebb kell lépni a magasabb hierarchia szintek felé (összetett digitális építőelemek). Itt helyezkednek el a következő alapvető építőelemeink, pl.: Összeadók
(adder), Regiszterek, memóriák Multiplexerek stb.
3
Biztosítani kell a tervezőnek:
Adatmozgatás egyik elemtől a másikig (jelvezetékek, buszok) Több forrásból származó adat kiválasztása (multiplexálás) Forrásadat irányítása (routing) a cél felé (demultiplexálás) Adattranszformálás (ha szükséges): kódolás-dekódolás Adatok aritmetikai összehasonlítása (komparálás) Logikai, aritmetikai műveletvégzés adatokon (ALU)
4
Logikai (Kombinációs) hálózatok építőelemei
5
Logikai hálózatok legfontosabb építőelemei Multiplexer (MUX) Demultiplexer (DEMUX) Dekódoló (decoder) áramkör Kódoló (encoder) áramkör Komparátor (comparator, CMP) Univerzális logikai áramkör Bináris műveletvégző egységek:
Összeadók,
kivonók, ALU stb. 6
Multiplexer/Demultiplexer („útvonalválasztó”)
Cél, az eszköz vagy eszközben lévő komponensek (K.H-ok) kivezetéseinek illetve bemeneteinek számának korlátozása Alkalmazás: Pl.
memóriák címzése, indexelése esetén Buszok jeleinek multiplexálása, demultiplexálása
Adatlapok letöltése (ingyenes helyről): pl: http://www.alldatasheet.com 7
1. Multiplexer („útvonalválasztó”)
Olyan áramköri elem, amely több lehetséges bemenet (A,B) közül választ ki egyet, az S selector jel(ek) hatására, és a kiválasztott bemenetet a kimenettel köti össze. Működése hasonló a mechanikus kapcsolókéhoz. S=0 Például: S=1 Két-állapotú mechanikus kapcsoló
5:1 MUX: Sztereo erősítő kapcsolója
Y = A⋅ S + B ⋅ S 8
Példa 1: Két-állapotú kapcsoló Legyen Y: kimenet, A, B: bemenetek, amik közül S választ. Ekkor: Y = A ⋅ S + B ⋅ S A két-állapotú kapcsolót leíró mixed-logic hálózat is lehet (ha A.H, B.H, S.H és Y.H):
Log NOT!
9
Példa 2: Két-állapotú, engedélyező bemenettel rendelkező kapcsoló
EN (Enable vagy STROBE jel): engedélyező jel S: selector (kapcsoló állása) Y = EN ⋅ ( A ⋅ S A, B: bemenetek, Y: kimenet
Mixed-logic kapcsolási rajza (ha A.H, B.H, Y.H, de EN.L):
+ B ⋅ S)
Kereskedelmi forgalomban kapható! (példa: 2:1 MUX)
EN.L 10
TTL’74LS157- 2:1 MUXok alkalmazása
Quad (4 db) 2-bemenetű 2:1 MUX-ból áll. Közös S, EN jelek. 4 db Y(1,2,3,4) kimenet EN.L
2:1 MUX szimbóluma
2:1 MUX áramköri kivezetések jelöléseivel
Y = EN ⋅ ( A ⋅ S + B ⋅ S ) 11
Példa: 4:1 Multiplexer N kiválasztó jel -> 2^N bemenet, 1 kimenet Példa: 4:1 MUX
B e m e n e t
1 2 4x1 3 MUX 4 So S1
Y
Kiválasztás
2^N számú bemenet közül választ egyet (Y), mint egy kapcsoló. Rendelkezhet EN bemenettel is.
12
Multiplexer: általános szabályok 2^n bemenet esetén n db selector jelet kell definiálni (bináris kódban megadva) Kiválasztott Pl. 4:1 Mux igazságtáblázata: S1 S0 input pozíció
S0, S1: selector jelek Input 1…4: 4 db bemenet
0
0
Input 1
0
1
Input 2
1
0
Input 3
1
1
Input 4
Kereskedelmi forgalomban ált. 2-,4-,8-,16, 32-bites MUX-ok is kaphatóak. 13
MUX: Look-Up-Table (LUT) Táblázatban keresés – input kiválasztás
MUX selector (S) jeleinek bináris kódjai (mintázatai), mint a bemenetek címe (address vagy index) jelennek meg Az adatbemenetek (inputok) táblázatos vagy vektoros formában adottak. A MUX tehát egy 1-bites hardveres megvalósítása a „szoftveres” LUT táblázat kiolvasásnak. Fontos! Memóriákkal való műveletvégzés (címzésük, indexelés stb.) mindig a MUX-ok segítségével történik, nem LUT-val. 14
1-bites bejegyzések a memóriában
LUT megvalósítások: 0 1 2
Szoftveres Look-up-Table index n
n
1-bites bejegyzések a LUT-ban
táblázatban keresés eredménye (érték)
0 1 2
N:1 MUX
táblázatban keresés eredménye (érték)
n
Hardveres Look-up-Table: MUX-ból felépítve (1 bites táblázat keresés) index n
15
2. Demultiplexer
Olyan áramköri elem, amely több kimenet közül választ ki egyet, a selector jel(ek) hatására, és a kiválasztott kimenetet a bemenettel köti össze. (Multiplexerrel ellentétes funkciót tölt be.) Működése hasonló a mechanikus elosztó (distributor) kapcsolókéhoz. Például: S=0
Front sp. = OUT ⋅ S S=1
Rear sp. = OUT ⋅ S
Sztereo kimeneti erősítő 16
Példa - 1:4 Demultiplexer
TTL 74’LS139 duál 1:4 demultiplexer Kereskedelmi
forgalomban kapható G: egyetlen demultiplexálandó bemenet A,B: routing control/selector jelek (bináris kód) 4-kimenetből 3 lehet False/Hamis (0), egyet kivéve, amelyik a kiválasztott (annak az értéke a bemenettől függően lehet T/F) Mixed logika T=L ! (~0V)
17
Példa - 1:4 Demultiplexer (folyt)
Kanonikus táblázat
Feszültség-logikai tábla
Demultiplexer logika
74'LS139 feszültség-logika
G
B
A
Y0
Y1
Y2
Y3
G.L
B.H
A.H
Y0.L
Y1.L
Y2.L
Y3.L
0
x
x
0
0
0
0
H
x
x
H
H
H
H
1
0
0
1
0
0
0
L
H
H
L
H
H
H
1
0
1
0
1
0
0
L
H
L
H
L
H
H
1
1
0
0
0
1
0
L
L
H
H
H
L
H
1
1
1
0
0
0
1
L
L
L
H
H
H
L
T=L !
Demultiplexer logikai egyenletei: Y 0 = B ⋅ A ⋅ G Y1 = B ⋅ A ⋅ G Y 2 = B ⋅ A⋅G Y3 = B ⋅ A⋅G
18
Példa 2. - 1:8 Demultiplexer TTL
74’LS42 - 1:8 demultiplexer („dekódoló”)
Kereskedelmi
forgalomban kapható D: egyetlen demultiplexálandó bemenete A,B,C: routing control jelek (bináris kód) 8-kimenet (Y0,…Y7)mindegyike False, egyet kivéve, amelyik a kiválasztott (annak az értéke a bemenettől függően lehet T/F) (További két kimenettel „dekódoló” áramkör készíthető belőle:) Y8 = C ⋅ B ⋅ A⋅ D
T=L !
Y9 = C ⋅ B ⋅ A⋅ D 19
3. Dekódoló (decoder) áramkör
Kódolt információ dekódolása (konverzió) Egy
időben, egyszerre csak egyetlen logikai kimeneti változó (tehát a dekódolt) lehet igaz, a többi hamis! 2^N kimenet dekódolásához N bemenet szükséges! Gyakran alkalmazott eszköz Pl. numerikus memória-cím dekódolásával azonosíthatunk egy adott memóriacellát! Pl: opcode=műveleti kóddal azonosítunk egy kívánt funkciót (adott utasítást) pl. PDP-8-as számítógép
Kapható
tetszőleges 2-,3-,4-… bemenetű IC-k 20 formájában
Példa: DEC PDP-8 (egycímű gép) dekódoló logikája
12-bites szóhossz: 3-bites opcode (=8 művelet) + 9-bit utasítás cím (speciális operandus címzési módokat tett lehetővé) Egyidőben csak egy utasítás teljesülhet!
And, ADD, IncSkipZero, DepositClearAcc Jump
21
TTL’74LS42 dekóder áramkör
3→8 dekóder áramkör (kibővíthető BCD-toDECIMAL dekóderré, ha +1 bemenet van): (A,B,C)
3 bemenet, (1…7) 8 kimenet
EN: engedélyező jel, (T=L) alacsony aktív 0 A 1 B 2 'LS42 C 3 3x8 4 decoder 5 EN 6 7
Mixed logic szimbólum T=L!
22
Példa: 3x8 Dekódoló áramkör kapcsolási rajza
ABC
EN: engedélyező jel nélkül N bemenet esetén 2^N kimenete van Példa: 3x8 dekóder áramkör Példa:
Hamming-kódú hibajavító áramkör Példa: egyszerű számítógép architektúra
23
Példa: 2x4 Dekódoló áramkör kapcsolási rajza (engedélyező bemenettel) AB
EN: alacsony aktív állapotban működik 2 bemenő bit (A,B) 4 kimenő (dekódolt) bit (D0…D3)
24
Példa: BCD dekóder ’74LS42 áramkör felhasználásával
TTL ’74LS42-ból 4-bemenet / max 16-kimenet Decimális
számjegyeket dekódolja
(0..9) //(10)1010…(15)1111 dont’care – nem definiált Így csak 10 kimenete van EN-lábat, mint a „D” legnagyobb helyiértékű bit-ként használjuk, False-nak definiáljuk!!
A B C D
0 1 2 3 'LS42 4 BCD 5 decoder 6 7 8 9
Mixed logic szimbólum T=L! 25
4. Kódoló (encoder) áramkör
A dekódoló áramkör ellentéte: bemenetek kódolt ábrázolásának egy formáját képzi encoder: csak egy bemenete lehet igaz egyszerre Priority encoder: több bemenete is igaz lehet egyszerre, de azok közül a legnagyobb bináris értékű, azaz prioritású bemenethez generál kódot! (kód: address, index stb. lehet) Hagyományos
I/O, vagy IRQ jelek generálásánál használják leggyakrabban 26
Probléma: Priority encoder esetén
Mi van akkor, ha még sincs igaz bemenete (mindegyik hamis)? Két megoldás van: módszer: Input vonalak megszámozása 1-től (D1) kezdődően, és a 0 kimeneti kód (itt: B;A = F;F) jelenti, hogy mind „hamis” volt. (X – don’t care) 2.) módszer: input vonalak megszámozása 0-tól (D0) kezdődően, és egy külön vezérlőjelet (W = ‘T’) biztosítani arra, hogyha nincs „igaz” bemenete (F F F F) 1.)
27
TTL’74LS147 Priority encoder kódoló áramkör
10-input, 4-output encoder „0”
nincs bejelölve: amikor az összes bemenet False (lefoglalt) Alkalmazás: Memória Cím, indexgenerálás LUT választás
1 2 3 A 4 B 'LS147 5 C encoder 6 D 7 8 9 Mixed logic szimbólum T=L!
28
5. Komparátor
Katalógus: TTL 74LS86 Logikai kifejezés – referencia kifejezés (bináris számok) aritmetikai kapcsolatának megállapítására szolgáló eszköz. Pl:
Kettő n-bites szám összehasonlítása
compare = összehasonlítás! Az azonosság eldöntéséhez a EQ/XNOR/Coincidence operátort A.EQ.B = A B használjuk. Jele: n-bites minták esetén:
A.EQ.B = ( A0
B0) ⋅ ( A1
B1) ⋅ ... ⋅ ( An
Bn) 29
Ismétlés: EQ/XNOR/Coincidence operátor
Logikai egyenlet: A.EQ.B = A B = A ⋅ B + A ⋅ B Referenciabit szerinti megkülönböztetés: ha
a referencia bit (B), amihez hasonlítunk konstans ha a referencia bit (B) egy változó mennyiség
Példa: ha B referencia konstans -> egyszerűsítése A-nak A.EQ.B = A if B = T
A.EQ.B = A if B = F
Példa: legyen B egy 4-bites konstans mennyiség (B=TFFT), és A tetszőleges, akkor:
A.EQ.B = A0 ⋅ A1⋅ A2 ⋅ A3 30
Példa: 4-bites komparátor
Mixed-logic kapcsolási rajza, és log. egyenlete: A.EQ.B = ( A0 B0) ⋅ ( A1 B1) ⋅ ( A2 B 2) ⋅ ( A3 B3)
31
’74LS85 4-bit Magnitude Comparator
„Magnitude comparing” (~nagyságrend összehasonlítás): két
kifejezés nagyságának összehasonlítása (A
B stb.) egyszerre
3 állapot (státusz) –bemenet
Összehasonlítás eredménye, mint kimenet
Ha B.IN=H: egyenlőség van A és B-re? 32
Példa: 8-bites Magnitude Comparator – egyenlőség esetén
Kettő 4-bites ’74LS85 Magnitude komparátor sorbakötéséből („cascading”) kapjuk a 8-bites (P,Q) értékek összehasonlítását MSB
LSB
3 állapot (státusz) – bemenet Ha B.IN=H: egyenlőség?
eredmény
33
6. Univerzális logikai áramkör
Ritkán használt áramköri elem 2-bemenő bit (A,B) – 16-kimenet (Z0-Z15)
„black box” modell
Lásd: Arató könyv I. fejezet
4:1 MUX 34
7. Bináris műveletvégző egységek a.) Full Adder (FA) – Teljes összeadó b.) Ripple Carry Adder (RCA) – Átvitelkezelő összeadó c.) Look-Ahead-Carry Adder (LACA) d.) Full Subtractor (FS) – Teljes kivonó e.) Komplexebb blokk: Arithmetic Logic Unit (ALU)
35
a.) Teljes összeadó – Full Adder
FA: 1-bites Full Adder
igazságtáblázat
szimbólum
Ai
Bi
Cin
Sumi
Cout
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
Karnaugh táblái:
Cout:
A 1
A B S
Cin FA (Full Adder)
NAND2 NAND3 NAND1
Cout Si
Cout
01
0
11
0 0
0
1
0 3
1 5
A
10
1 1
2
Si:
6
Cout = A⋅ B+ A⋅Cin + B⋅Cin
B 00
0
01
0
11
1 0
A 1
1 7
C
BC
B
4
Kimeneti fgv-ei:
Cin
C 00
0
Bi
XOR2
BC A
Ai
Egy lehetséges CMOS kapcsolási rajza: XOR1
1
0 1
0 4
10
1 3
1 5
2
0 7
6
Si = Ai ⊕Bi ⊕Cin ⇒S31,3(A, B,C)
36
b.) Átvitelkezelő összeadó – Ripple Carry Adder (RCA)
Pl. 6-bites RCA: [0..5] (LSB Cin = GND!) A5 B5 Cin
A4 B4 Cin
A3 B3 Cin
A2 B2 Cin
A1 B1 Cin
FA5
FA4
FA3
FA2
FA1
Cout
S5
Cout
S4
Cout
S3
Cout
S2
Cout
A0 B0 Cin GND FA0
S1
Cout
S0
MSB
LSB
Számítási időszükséglet (RCA): T(RCA) = N*T(FA) = N*(2*G) = 12 G (6-bites RCA esetén) ahol a 2G az 1-bites FA kapukésleltetése
Példa: TTL’74LS283: 4-bites RCA áramkör
37
Példa: 3-bites RCA áramkör
RCA: 3 db 1-bites FA-ból épül fel
FA
FA
FA
A+B=101+110=1011 38
Példa: 12-bites RCA áramkör
3 db 4-bites RCA-ból (’74LS283) épül fel
2’s
komplemens összeadó: előjeles aritmetika
12 biten: 1-előjelbit + 11 bit
(MSB: előjel) 39
c.) LACA: Look-Ahead Carry Adder: RCA soros (ripple carry) működésének felgyorsítása
Képlet (FA) átírásából kapjuk: Cout = Ai ⋅ Bi + Ai ⋅ Cin + Bi ⋅ Cin ⇒ Ai ⋅ Bi + Cin ⋅ ( Ai + Bi ) = CG + Cin ⋅ CP { 1 424 3 CarryGenerate
Si = Ai ⊕ Bi ⊕Cin
Ai
Bi
Cin Cg
LACA (Look Ahead Carry Adder)
Cp
Carry Pr opagate
Si
LACG: Look Ahead Carry Generator áll egy b bites ALU-ból, minden egyes állapotban a Carry generálásáért felel a CP és CG vonalakon érkező jeleknek megfelelően. 40
Példa: 4-bites LACA+LACG
Legyen b=4, és N=16. Áramkör felépítése, és időszükséglete: A hierarchikus megvalósításban az si kiszámításához szükséges: 1(LACA)+2(LACG)+2(superLACG)+2(LACG)+1(LACA)=8 kapuidő, szemben a 32 kapuidővel a carry-ripple-through esetén
A 4 LACA-t lehetséges egy ’74LS181 ALU-ba integrálni!
41
Példa: 12 bites ALU LACG áramkörök felhasználásával
’74LS181: 4-bites ALU LACG: Block Carry Look Ahead áramkör
LACG
C8 = CG7 + CP7 ⋅ CC3 + CP7 ⋅ CP3 ⋅ C0
C4 = CG3 + P3 ⋅ C0
42
d.) Teljes kivonó - Full Subtractor (FS)
FS: 1-bites Full Subtractor
igazságtáblázat
szimbólum
Xi
Yi
Bin
Fi
Bout
0
0
0
0
0
0
0
1
1
1
0
1
0
1
1
0
1
1
0
1
1
0
0
1
0
1
0
1
0
0
1
1
0
0
0
1
1
1
1
1
Karnaugh táblái:
X
Bout:
Bin
X
FS (Full Substracter)
Bout
Bin
Fi
Bout
Bin Y 00
0
Yi
Y
Y Bin
X 1
01
0
11
1 0
0
1 3
1 5
X
10
1 1
0 4
Kimeneti fgv-ei:
Xi
Logikai kapcsolási rajz (Fi esetén)
2
0 7
6
Bout = Xi ⋅Yi + Xi ⋅ Bin +Yi ⋅ Bin
F i:
Bin
Y Bin
Y 00
0
01
0
1 0
X 1
11
1
0 1
0 4
10
1 3
1 5
2
0 7
6
Fi = Xi ⊕Yi ⊕Bin ⇒S31,3(X,Y, Z)
43
e.) Komplexebb blokk = ALU: Aritmetikai Logikai Egység
Utasítások hatására a (Sn-S0) vezérlőjelek kijelölik a végrehajtandó aritmetikai / logikai műveletet. További adatvonalak kapcsolódhatnak közvetlenül a státusz regiszterhez, amely fontos információkat tárol el: pl. carryin, carry-out átviteleket, előjel bitet (sign), túlcsordulást (overflow), vagy alulcsordulást (underflow) jelző biteket.
Operandus A (An-A0)
Műveleti Utasítások (Sn-So)
Operandus B (Bn-B0)
ALU Aritmetikai / Logikai Egység
Eredmény (Fn-F0) 44
ALU: Státusz- (flag) jelzőbitek
Az aritmetikai műveletek eredményétől függően hibajelzésre használatos jelzőbitek. Ezek megváltozása az utasításkészletben előre definiált utasítások végrehajtásától függ. a.)
Előjelbit (sign): 2’s komplemens (MSB) b.) Átvitel kezelő bit (carry in/out): helyiértékes átvitel c.) Alul / Túlcsordulás jelzőbit (underflow / overflow) d.) Zero bit: kimeneti eredmény 0-e?
45
Példa: 4-bites ALU felépítése és működése (TTL’74LS181)
Eredmény (Fn-F0)
Operandus A (An-A0)
Két 4-bites operandus (A, B) 4 bites eredmény (F) Átvitel: Carry In/ Out S2: Aritmetikai/ logikai mód választó (MUX) Carry In S0, S1: művelet kiválasztó (S2 értékétől függően) Aritmetikai / logikai Operandus B (Bn-B0)
4-bites ALU
Carry Out
mód választó S2 Művelet kiválasztó S0, S1
4-bites ALU szimbolikus rajza
ALU: LSI méretű „bit-slice” építő blokk
46
ALU működését leíró függvénytáblázat: (Néhány lehetséges aritmetikai / logikai művelet ) Művelet kiválasztás:
Művelet:
Megvalósított függvény:
S2
S1
S0
Cin
0
0
0
0
F=A
A átvitele
0
0
0
1
F=A+1
A értékének növelése 1-el (increment)
0
0
1
0
F=A+B
Összeadás
0
0
1
1
F=A+B+1
Összeadás carry figyelembevételével
0
1
0
0
0
1
0
1
0
1
1
0
F=A-1
A értékének csökkentése 1-el (decrement)
0
1
1
1
F=A
A átvitele
1
0
0
0
F = A∧ B
AND
1
0
1
0
OR
1
1
0
0
F = A∨ B F = A⊕ B
1
1
1
0
F = A+ B F = A + B +1
F=A
A + 1’s komplemens B Kivonás
XOR A negáltja (NOT A)
* L.Howard Pollard: Computer Desing and Architecture c. könyv függeléke (appendix)
47
ALU felépítése Carry In Ai Bi
Carry Out
Aritmetikai Egység (+,*,-,/) 0
MUX
Eredmény (Fi)
Művelet kiválasztó
1
S0
Logikai Egység
S1 S2 Arit/Log mód kiválasztó
48