Funkcionális elemek Benesóczky Zoltán 24 A jegyzetet a szerzıi jog védi. Azt a BM hallgatói használhatják, nyomtathatják tanulás céljából. Minden egyéb felhasználáshoz a szerzı belegyezése szükséges.
A funkcionális logikai elemek valamely az SSI (kapukból és flip-floppokból építkezı) tervezési tapasztalatok során letisztult egyszerő funkciót valósítanak meg. funkcionális elemek kombinációs sorrendi multiplexer dekóder komparátor összeadó ALU BCD/7szegmenses dekóder regiszter latch számláló shiftregiszter stb... 3 állapotú meghajtó stb... Kapuk, flip-flopok helyett ill. mellett a funkcionális elemeket használjuk a tervezés során. 2
Multiplexer Feladata: N bementbıl kiválasztja azt az egyet, amit a címbemenetei kijelölnek. lnevezése: N/-es multiplexer Pl: 4/-es multiplexer Rajzele: MSB cím bemenetek s s kimenet y MPX 2 3 Mőködése: s s adat bemenetek Belsı felépítése: a) b) Y & & & & S S S S S S S S D D D2 D3 3
A 4/-es multiplexer Verilog leírása module mux4_(i, I, I2, I3, S, Y); input I; input I; input I2; input I3; input [:] S; output Y; reg Y; always @(S,I,I,I2,I3) case (S) 2'b: Y = I; 2'b: Y = I; 2'b: Y = I2; 2'b: Y = I3; endcase endmodule 4
Csatorna számának növelése: s3 s2 s s y MPX 2 3 s s y MPX y MPX y MPX y MPX s s s 2 3 s 2 3 s 2 3 s 2 3 s s.... 5 Csatorna szélességének bıvítése: s s A2- B2- C2- D2- s s y y y2 y MPX y MPX y MPX s s 2 3 s 2 3 s 2 3 Multiplexer mint univerzális KH: MPX 2 Y 3 S S f=a B + A B MPX f=a B C + A B C + A B 2 Y 3 S S B A C B A a.) b.) 5
Dekóder/demultiplexer A demultiplexer feladata, egy bemeneti jelet kiadni a címbenetekkel kijelölt kimenetre. A dekóder feladata a címbemenetekkel kijelölt kimenetének aktivizálása. Inkább a dekóder funkciót használjuk. lnevezés: n/n-es dekóder/demultiplexer A dekóder rajzjele: Mőködése: kimenetek cím bemenetek s s 2 3 DMPX In s s adat bemenet a.) b.) 6
A dekóder belsı felépítése: Y Y Y2 Y3 & & & & In S S S S S S S S 7
Leírása hardver leíró nyellevvel, VRILOG-ban: module dekoder2_4(, S, Y); input ; input [:] S; output [3:] Y; reg Y; always @(S,) if (~) Y = 4'b; else case (S) 2'b : Y = 4'b; 2'b : Y = 4'b; 2'b : Y = 4'b; 2'b : Y = 4'b; endcase endmodule 8
A dekóder bıvítése:.... 5 s s 2 3 2 3 2 3 2 3 s s s DK DK DK DK n s n s n s n s s s3 s2 s s 2 3 DK n n 9
3 állapotú meghajtó Funkciója, az engedélyezı jellel a kimenete 3. állapotba hozható, ekkor lekapcsolódik a meghajtott vezetékrıl, ahová ezután más rákapcsolódhat. BUFFR a.) bites b.) több bites Leírása hardver leíró nyellevvel, VRILOG-ban: module ThriStateBuff8(In,, Y); input [7:] In; input ; output [7:] Y; assign Y =? In : 8'bz; endmodule
Három állapotú kimenet Az L és H szintet aktív félvezetı kapcsolók biztosítják, de a harmadik állapotban mindekttı kikapcsol. +Ut +Ut kimenet L kimenet H N N H +Ut H kimenet Z (magas impedanciás állapot) N L
& & BUFFR DIR DIR a.) N b.) Uout Uh Ul Uk2 Uk Uin 2
Multiplexer 3 állapotú meghajtóval Centralizált felépítés: IN IN IN2 IN3 BUFFR BUFFR BUFFR BUFFR -RD ADAT -RD -RD2 -RD3 2 3 DK B A -RD A A Decentralizált felépítés: IN IN IN2 IN3 -RD BUFFR -RD BUFFR -RD2 BUFFR -RD3 BUFFR -RD A A ADAT A-A 2 3 -RD ADAT IN IN IN2 IN3 3
Komparátor Funkciója a bementére adott számok összehasonlítása. Ha azt is jelzi, hogy melyik a nagyobb, akkor magnitudo komparátor. < = > A In B A A2 A3 < Out = B B2 B3 > Ha csak egyenlıséget jelez, akkor egyenlıség komparátor.... A A A7 G B B Out B7 =... 4
4 bites komparátor VRILOG leírása: module mag_komp4(a, B, LTI, I, GTI, LTO, O, GTO); input [3:] A; input [3:] B; input LTI; input I; input GTI; output LTO; output O; output GTO; assign O = A==B & I; assign LTO = A<B A==B & LTI; assign GTO = A>B A==B & GTI; endmodule 5
Hagyományos kaszkádosítás A legelsı komparátor kaszkádosító bemeneteit úgy kell beállítani, mintha egy elızı komparátor egyenlıséget jelezne. MSB A7 A6.. A A LSB A<B < A3 A2 A A < < A3 A2 A A < A=B = Out In = = Out In = A>B > B3 B2 B B > > B3 B2 B B > B7 B6.. B B Komparátorral a 2-es komplemensben ábrázolt számokat az elıjel bit invertálása után tudjuk összehasonlítani (offszet kóddá transzformálás). 6
Gyorsított kaszkádosítás A hagyományos kaszkádosítás hátránya, hogy a kaszkádosított egységek késletetési ideje összeadódik. Itt 4 bites komparátorokkal gyors 24 bites komparátor. A kapcsolás olyan komparátort tételez fel, amelynek < és > bementére egyszerre ugyanazt kapcsolva, annak < és > kimenete egyforma logikai értéket ad, ha A=B. A>B A=B A<B. > = < A B 3 2 > = < 2 3 2.szint. szint 3. > = < 5. > = < A B A B 3 2 > = < 2 3 3 2 > = < 2 3 A9 A7 A5 B5 B7 B9 A8 A6 L B6 B8 A9 A8 A7 A5 A6 B5 B7 B9 L B6 B8 2. > = < 4. > = < 6. > = < A B A B A B 3 2 > = < 2 3 3 2 > = < 2 3 3 2 > = < 2 3 A24 A22 A2 B2 B22 B24 A23 A2 L B2 B23 A4 A2 A B B2 B4 A3 A L B B3 A4 A3 A2 A L L B2 B4 H B B3 7
Összeadó Funkciója: Az összeadó két n bites (elıjel nélküli abszolútértékes vagy 2-es komplemens ábrázolású) bináris szám összeadása. += C=, +=+= C=, += C= Pl: + -------------- Paramétere: - szószélesség (hány bites): n Bemenetei: - összeadandó számok (A, B) 2 x n bit Ci átvitel bemenet Kimenetei: - eredmény S (SUM) n bit - Co átvitel 8
Rajzjele: MSB A3 A2 A A S S S2 S3 A3 A2 A A Co B3 B2 B B Ci B3 B2 B B 4 bites összeadó VRILOG leírása: module add4(a, B, CI, S, CO); input [3:] A; input [3:] B; input CI; output [3:] S; output CO; assign {CO,S} = A + B + CI; endmodule 9
Két 4 bites összeadó kaszkádosítása A legelsı összeadó Cin bemenetére -át kell kötni. S8 S A7 A6 A5 MSB A4 A3 A2 A MSB A S S S2 S3 A3 A2 A A S S S2 S3 A3 A2 A A Co B3 B2 B B Ci Co B3 B2 B B Ci B7 B6 B5 B4 B3 B2 B B Sok bit esetén az átvitel soros terjedése nagy késleltetést okoz. lkerülése: átvitel gyorsítással S2 S S B Σ A S C B Σ A S C B Σ A S C C C carry logika carry logika B2 A2 B A B A Cin 2
BCD/7szegmenses dekóder A meghajtandó LD kijelzı: a A f g b e d c h a b c d e f g h A dekóder rajzjele: N D C B A BCD/7sz g f e d c b a OC. Alkalmazása: Ut N g OC. R D3 D2 D D D C B A BCD/7sz f e d c b a 2
7 szegmenses dekóder Verilog leírása module Seg7Dek(HXin, Seg7Ou); input [3:] HXin; output [6:] Seg7Ou; reg Seg7Ou; // 7-segment encoding // // --- // 5 // --- <--6 // 4 2 // --- // 3 always @(HXin) case (HXin) 4'b : Seg7Ou = 7'b; // 4'b : Seg7Ou = 7'b; // 2 4'b : Seg7Ou = 7'b; // 3 4'b : Seg7Ou = 7'b; // 4 4'b : Seg7Ou = 7'b; // 5 4'b : Seg7Ou = 7'b; // 6 4'b : Seg7Ou = 7'b; // 7 4'b : Seg7Ou = 7'b; // 8 4'b : Seg7Ou = 7'b; // 9 4'b : Seg7Ou = 7'b; // A 4'b : Seg7Ou = 7'b; // b 4'b : Seg7Ou = 7'b; // C 4'b : Seg7Ou = 7'b; // d 4'b : Seg7Ou = 7'b; // 4'b : Seg7Ou = 7'b; // F default : Seg7Ou = 7'b; // endcase endmodule 22
Sorrendi funkcionális elemek (tároló tulajdonságú elemek) Regiszter (közös órajelő D flip-flopok) adat kimenet élérzékeny órajel bemenet D 2 D D2 3 D3 adat bemenet module D_RG(clk, D, ); input clk; input [3:] D; output [3:] ; reg ; always @(posedge clk) <= D; endmodule 23
Latch (közös G-jő D-G flip-flopok) adat kimenet szintérzékeny órajel bemenet G D 2 D D2 3 D3 adat bemenet module D_LATCH(G,D, ); input G; input [3:] D; output [3:] ; reg ; always @((G or D)) if (G) = D; endmodule 24
ngedélyezhetı regiszter adat kimenet i engedélyezõ bemenet 2 3 D D D2 D3 adat bemenet clk D MPX S clk Regiszterek beírása buszról (centralizált felépítés): Di OUT OUT OUT2 OUT3.. 2. 3. RGISZR RGISZR RGISZR RGISZR ADAT -WR -WR2 -WR3 -WR 2 3 DK S S LSB -WR A A (CÍM) CÍM 2 ADAT ADAT ADAT ADAT2 -WR -WR -WR -WR2 OUT ADAT OUT ADAT OUT2 ADAT2 25
ngedélyezhetı regiszterek beírása buszról (centralizált felépítés): OUT OUT OUT2 OUT3.. 2. 3. RGISZR RGISZR RGISZR RGISZR clk ADAT WR WR2 WR3 WR 2 3 DK S S LSB WR A A (CÍM) CÍM 2 ADAT ADAT ADAT ADAT2 clk WR WR WR WR2 OUT ADAT OUT ADAT OUT2 ADAT2 26
Decentralizált felépítés: DATA DATA DATA2 DATA3 RG RG RG RG -WR A A ADAT 27
Számlálók A számlálók (számláló üzemmódjára jellemzı) állapotgráfja győrő alakú. Pl. 6-os számláló állapotgráfja: 5 4 2 3 A számláló az órajeleit számolja. A modulusa, a ciklus hossza. Modulus alapján: bináris, decimális, egyéb (2-es, 6-os stb.) 28
Aszinkron számláló Aszinkron bináris felfele számláló, aszinkron törléssel: 2 T Cl Cl Cl T T clk Cl clk 2 Az egyes kimenetek egyre jobban késnek az órajelhez képest. 29
Aszinkron bináris lefele számláló, aszinkron törléssel: 2 T Cl Cl Cl T T clk Cl clk 2 3
Szinkron számláló Szinkron bináris felfele számláló belsı felépítése: 2 T T T clk clk 2 A kimenetek egyszerre váltanak, késleltetésük kicsi az órajelhez képest. 3
Szinkron bináris lefele számláló belsı felépítése: 2 T T T clk 32
Szinkron engedélyezhetı bináris felfele számláló belsı felépítése: 2 T T T clk module UPCOUNTR(clk,, ); input clk; input ; output [3:] ; reg ; always @(posedge clk) if () <= +; endmodule 33
Szinkron bináris, engedélyezhetı és tölthetı felfele számláló funkcionális felépítése: 2 D D D clk MPX s MPX s MPX s -LD D2 D D T2 T T module UPCOUNTRLD(clk,, LD, D, ); input clk; input ; input LD; input [3:] D; output [3:] ; reg ; always @(posedge clk) if(ld) <= D; else if () <= +; endmodule 34
Szinkron bináris, engedélyezhetı és tölthetı fel-le számláló funkcionális felépítése: 2 D D D clk MPX s MPX s MPX s -LD D2 D D T2 T T MPX s MPX s DIR (UP/-DOWN) module UDCOUNTRLD(clk,, LD, DIR, D, ); input clk; input ; input LD; input DIR; input [3:] D; output [3:] ; reg ; always @(posedge clk) if (LD) <= D; else if () begin if (DIR) <= +; else <= -; end endmodule 35
Számlálók vezérlı jelei lehetnek: CL: törlés LD: betöltés n: engedélyezés (csak szinkron esetben) DIR: számlálási irány Számlálók kimeneti jelei lehetnek: CY(carry): felfele számláló végállapota Bináris számlálónál CY =..2. BO(borrow): lefele számláló végállapota BO = /././2. Max/min: fel-le számláló végállapotai Bináris számlálónál M/m=DIR...2..+/DIR./././2.. RCY: ripple carry RCY =.CY RCO: ripple clock RCO = /(.CY./CLK) 36
Számlálók kaszkádosítása (modulus növelés) 3db 4 bites bináris számláló mőködése 3. 2... Aszinkron kaszkádosítások: d c SZ b a d c SZ b a clk RCO CY a b c d a b c d SZ Cl SZ Cl Cl CLK CLOCK SZ 3 4 5 CY RCO SZ A kaszkádosított számlálók modulusai összeszorzódnak. 37
Szinkron kaszkádosítások: RCY CY a b c d a b c d SZ Cl SZ Cl Cl CLK T CLOCK SZ Carry SZ 3 4 5 t 5 6 t h 38
A carry soros terjesztése: RCY2 RCY RCY CY CY CY CLK CLK CLK Az engedélyezés az MSB felé egyre jobban késik az órajelhez képest. CLK Gyorsított kaszkádosítások A CY párhuzamos elıállításával: RCY2 RCY RCY CY CY CY CLK CLK CLK CLK A legelsı CY elırecsatolásával: minden elõzõ végállapotban és engedélyezett legelsõ kivételével mindenki végállapotban és engedélyezve CY CLK CY CLK CY CLK CY CLK clk legelsõ végállapotban 39
Moduluscsökkentési eljárások N Clock KOMP = SZ Cy Clock Clk Ld SZ Cl Clk szinkron Cl N U/DMax/min Down SZ Clk Ld Clock szinkron LD szinkron LD N MODULUS=N+ MODULUS=Végállapot+-N _ MODULUS=N+ MODULUS=N+ bin. száml. esetén N 2 n - N N t t t a.) -tól N-ig b.) N-tõ TOP-ig c.) N-tõl -ig Mintapéldák: Készítsünk 6-os szinkron tölthetı lefele számlálóból 9-es modulusút. A kódolása 8-. Mm U/D d c b a Dd Dc Db Da Ld RST clk 4
Készítsünk 6-os szinkron törléső, engedélyezhetı felfele számlálókból 67- os modulusút. A kódolása legyen -66. 66 D = B Kaszkádosítunk, majd modulust csökkentünk. MSB d c b a d c b a Cl Cl RCY RCY clk 4
A shiftregiszter gy balra shiftelı SHR belsı felépítése: c b a shift output D D D clk clk clk Cl Cl Cl Si clock Cl Állapotgráfja: kezdõ állapot Mőködésének idıdiagramja: T CLK Si t su D2 D3 a/db D t dc D2 D3 b/dc D D D2 42
Tölthetı 4 bites SHR Verilog leírása module SHR6(clk,, LD, SI, D, ); input clk; input ; input LD; input SI; input [3:] D; output [3:] ; reg ; always @(posedge <clock>) if (LD) <= D; else if () begin [3:]=[2:]; [] <= SI; end endmodule 43
Tölthetı, engedélyezhetı, jobbra-balra shiftelı shiftregiszter belsı felépítése: d c b a clock D D D D MPX MPX MPX MPX 2 3 2 3 2 3 2 3 S SIR Da a b a Db b c b Dc c d c Dd d SIL S SS jobbra shift (SHR) balra shift (SHL) betölt (LOAD) tart (HOLD) 44
Shiftregiszter mint számláló Győrős számláló: a b c d SI SHR LD/S A B C D RST A számláló kódolása a, b, c, d:,,, N bites SHR esetén a modulusa: N Johnson számláló: a b c d SI SHR LD/S A B C D RST A számláló kódolása a, b, c, d:,,,,,,, Modulusa N bites SHR esetén: 2N 45
Önkorrigáló Johnson számláló a b c d SI SHR LD/S A B C D Néhány órajelen belül tetszıleges állapotból beletalál a normál ciklusba. Pl:,,,, Álvéletlen generátor MOD 2 visszacsatolt shiftregiszterrel SI a b c d SHR LD/S A B C D RST CLK Kódolása:,,,,,,,,,,,,,, Modulusa N bites SHR és maximális ciklushosszú visszacsatolás esetén: 2 N - 46
Memória elemek: MMÓRIÁK ROM (csak olvasható) RAM (írható-olvasható) PROM (egyszer írható, OTP) -mask programozott -felhasználó által programozott PROM (UV-vel törölhetõ) statikus RAM dinamikus RAM PROM (elektromosan szavanként törölhetõ) FLASH (elektromosan szektoronként törölhetõ, nagy sûrûségû) Jellemzık: szószélesség, byte szám, hozzáférési idı ROM dekóder szavak.. An-A An-A Dm-D CS m. RD CS RD & n meghajtó Dm-D a.) Olvasás idıdiagramja: b.) CS RD t RD CÍM ADAT STABIL t AA t CA t AO t DF 47
ROM mint univerzális KH: f 2 f cím D3 D2 D D.. 2. 3. x x x x x x x x A3 A2 A A B 4. 5. x x x x A C f2 6. 7. x x x x A B C 8.... x x x x............ 5. x x x x O CS a.) f 2 = AB + AC= ABC + ABC+ ABC+ ABC b.) A tartalom az igazságtábla. 48
RAM.. szavak An-A DK m. An-A CS RD WR Dm-D a.) RD CS W & & DIR Statikus RAM írási ciklusa: b.) meghajtó n Dm-D CS t CW t WR WR t AS t DS t DH CÍM ADAT t t STABIL WP WC 49
Memóriák szószélességének növelése D D5 A D... D7 RD D RD... D7 CS WR WR CS A A An A A An WR RD An CS Memóriák kapacitásának növelése An-A O WR O RAM O RAM O RAM O RAM CS W CS W CS W CS W Dm-D CS 2 3 DK B A LSB An+2 An+ 5
Példák funkcionális elemekkel felépített logikákra: PWM (változtatható kitöltési tényezıjő jel) elıállítása. N B KOMP A A>B OUT SZ clk TOP N t OUT t 5
Idımultiplexált kijelzı megvalósítása Vcc MPX ADAT3 D3_3- ADAT2 D2_3- ADAT D_3- MSB ADAT D_3- S S BCD/7sz D C B A a b c d e f g OC. 7sz.adat SZ clk 3 DK B 2 A OC. OC. OC. OC. -N3 -N2 -N -N sz 3 2 7sz. adat ADAT ADAT ADAT2 3 ADAT3 -N -N -N2 -N3 52
Mátrix billentyőzet kezelése Vcc egy billntyû bekötése sor számláló MSB SZ N DK 2 S 3 S CLK RCY SZ N oszlop sz. 2 3 S MPX S Y CLK K J Cl biilentyû kód RADY STRB 53