Zavod za elektroniku, mikroelektroniku, računalne i inteligentne sustave
Marko Čupić, dipl. ing.
ZBIRKA RIJEŠENIH ZADATAKA IZ DIGITALNE ELEKTRONIKE
Zagreb, 2004
Verzija 1.3
(2002-2005) Marko Čupić. Zabranjeno je umnažanje / reproduciranje / modificiranje bilo kojih dijelova Zbirke bez pismene dozvole autora.
Predgovor Zbirka riješenih zadataka iz Digitalne elektronike namijenjena je svim studentima koji polažu ovaj kolegij, ili su zainteresirani za pokriveno gradivo. Zbirka je nastala kao rezultat rada na auditornim i laboratorijskim vježbama kroz akademske godine 2002/2003-2004/2005. Temeljni materijal korišten za izradu zbirke čine zadaci s auditornih vježbi u akademskoj godini 2001/2002. Zbirka je nadopunjena nizom zadataka u skladu s obnovljenim područjima obrađenim na predavanjima u akademskoj godini 2002/2003. U zbirci se također nalaze riješeni zadaci s kolokvija, pismenih ispita, kao i određen broj zadataka koje studenti vrlo često rješavaju pogrešno. Ponegdje su čak uključeni i ti pogrešni načini rješavanja, zajedno s objašnjenjem zašto je to pogrešno, i ispravnim rješenjem. Zbirka riješenih zadataka ne sadrži teorijska razmatranja koja pokriva ovaj kolegij, te se u tu svrhu preporuča knjiga prof. dr. sc. Uroša Peruška – Digitalna elektronika, logičko i električko projektiranje, III. prošireno izdanje, kao i uredno pohađanje predavanja. U zbirci se osim samog logičkog i električkog projektiranja digitalnih sklopova nalaze i zadaci vezani uz opisivanje i simuliranje istih uporabom VHDL-a. Više o samom jeziku za opis sklopovlja – VHDL-u – može se pronaći u materijalima za laboratorijske vježbe Stjepana Groša, dipl. ing. Dobar uvod u VHDL dostupan je također kroz skriptu mr. sc. Siniše Šegvića – Uvod u programski jezik VHDL, koja se može pronaći na stranicama kolegija.
Ovim putem želio bih se također zahvaliti svima koji su mi pomogli u izradi ove zbirke, a napose mentoru prof. dr. sc. Vladi Glaviniću, bez kojeg ova zbirka nikada ne bi ugledala svjetlo dana, mr. sc. Borisu Kette-u za vrlo korisne rasprave i nove kuteve gledanja na pojedina područja digitalne elektronike, kolegi Stjepanu Grošu, dipl. ing. za podršku i komentare prilikom izrade Zbirke, kao i svima ostalima. Marko Čupić, dipl. ing. Zagreb, veljača 2004.
Sadržaj 1.
Refleksije, preslušavanja i utjecaj kapacitivnosti. _________________________1
2.
Zaštitno kodiranje. Brojevni sustavi. __________________________________25
3.
Osnovni logički sklopovi.____________________________________________41
4.
Booleova algebra. _________________________________________________65
5.
Minimizacija logičkih funkcija. ______________________________________99
6.
Standardni kombinacijski moduli. ___________________________________137
7.
Standardni programirljivi moduli. ___________________________________163
8.
Bistabil. ________________________________________________________179
9.
Digitalna aritmetika. ______________________________________________193
10.
Registri. ______________________________________________________209
11.
Brojila. _______________________________________________________225
12.
Strojevi s konačnim brojem stanja._________________________________245
13.
Memorije. _____________________________________________________289
14.
A/D i D/A konverzija.____________________________________________301
15.
Integrirani logički sklopovi. ______________________________________323
Refleksije, preslušavanja i utjecaj kapacitivnosti.
1
1. Refleksije, preslušavanja i utjecaj kapacitivnosti. 1.1. Zadatak Koji su tipični uzroci izobličenja signala u digitalnim sustavima? Objasnite ukratko.
Najčešći uzroci izobličenja signala u digitalnim sustavima su: • • •
Refleksije. Preslušavanja. Parazitne kapacitivnosti i induktivnosti.
Refleksije dolaze do izražaja kada je duljina vodova kojima signal putuje relativno velika u odnosu na valnu duljinu samog signala. U tom slučaju vodove treba promatrati kao prijenosne linije (engl. transmission lines). Preslušavanja nastaju kao rezultat utjecaja međukapaciteta i međuinduktiviteta. Manifestiraju se kao pojava pozitivnih ili negativnih naponskih smetnji na vodiču uslijed promjene naponske razine na nekom drugom vodiču. Parazitne kapacitivnosti i induktivnosti utječu na povećavanje vremena potrebnog za promjenu naponskih razina u digitalnom sustavu. Pri tome je uobičajeno dominantan utjecaj parazitnih kapacitivnosti. 1.2. Zadatak Objasnite pojam prijenosne linije.
Dugački vodiči (obzirom na valnu duljinu signala koji kroz njih putuje) nazivaju se prijenosne linije. Prijenosne linije imaju nekoliko karakterističnih parametara: • • • • • •
C0 – kapacitet po jedinici duljine [pF/cm] L0 – induktivitet po jedinici duljine [nH/cm] R0 – otpor po jedinici duljine [Ω/cm] G0 – vodljivost po jedinici duljine [S/cm] Z0 – karakteristična impedancija [Ω] T0 – kašnjenje signala po jedinici duljine [ps/cm]
Vrlo pojednostavljena nadomjesna shema prijenosne linije prikazana je u nastavku (a budući da se nećemo detaljno baviti prijenosnim linijama, model je dovoljan kako bi se dobila gruba slika o pojavama vezanim za prijenosne linije).
2
Zbirka riješenih zadataka lL0
lR0
Z0 =
lG0
lC0
lR0 + jωlL0 lG0 + jωlC o
U zadacima u nastavku zbirke promatrat ćemo samo idealnu prijenosnu liniju (uniformna linija bez gubitaka; R0→0, G0→0), čija je također pojednostavljena nadomjesna shema zajedno s karakterističnom impedancijom prikazana u nastavku. lL0 Z0 =
lC0
L0 Co
Za razumijevanje prijenosne linije bitno je prisjetiti se činjenice da su električni signali koje koristimo u sklopovima zapravo elektromagnetski valovi koji se kroz prostor šire određenom brzinom (ograničenom brzinom svjetlosti c=3×108 m/s). Za napon i struju na prijenosnoj liniji važno je zapamtiti da su funkcija i vremena i položaja, što ćemo vidjeti u zadacima u nastavku. Elektromagnetski valovi šire se kroz prostor brzinom v =
1
, pri čemu su:
µε
F
H
µ = µ 0 ⋅ µ r , ε = ε 0 ⋅ ε r , ε 0 = (1 / 36π ) ⋅ 10 − 9 , µ 0 = 4π ⋅ 10 − 7 . m m Lako se vidi da je za medij u kojem je εr=1 i µr=1: v =
m = 3 ⋅ 10 8 = c . s µ 0ε 0 1
Kako je kod prijenosnih linija uobičajeno ispunjeno µr=1, slijedi da je brzina širenja signala određena izrazom: v=
c
εr
.
Može se pokazati da je brzina širenja signala kod prijenosne linije bez gubitaka također određena izrazom:
Refleksije, preslušavanja i utjecaj kapacitivnosti. v=
1 L0 C 0
3
.
Ako je prijenosna linija dugačka l, tada će signalu trebati l⋅T0 vremena da dođe do njezinog kraja, te možemo pisati: 1 l m v= = ⇒ T0 = L0 C 0 s L0 C 0 l ⋅ T0 1.3. Zadatak Signal frekvencije 1 GHz putuje vodičem duljine 20 cm (npr. nekom sabirnicom). Poznato je εr=1.44. Da li vodič treba promatrati kao prijenosnu liniju? Da li isti zaključak vrijedi za sklop koji je izveden na čipu, gdje je duljina dotičnog vodiča smanjena na 25 µm?
c
Brzina širenja signala iznosi v =
Valna duljina signala iznosi λ =
εr
=
3 ⋅ 10 8
m = 2.5 ⋅ 10 8 s 1.44
v 2.5 ⋅ 10 8 = = 0.25m f 1 ⋅ 10 9
Kako je u prvom slučaju 0.25 m približno jednako duljini vodiča od 20 cm, vodič je potrebno promatrati kao prijenosnu liniju. U drugom slučaju, gdje je duljina vodiča 10000 puta manja od valne duljine signala vodič nije potrebno promatrati kao prijenosnu liniju. 1.4. Zadatak Objasnite pojam refleksije i transmisije. Neka je na prijenosnu liniju spojen izvor, čija je nadomjesna shema prikazana naponskim izvorom Us(t) i otporom Rs, te trošilo RL. Nadomjesna shema cijelog sklopa prikazana je u nastavku.
Rs
A
Z0
ρA Us(t)
B
ρB
+ -
prijenosna linija
Definiraju se faktor refleksije na ulazu linije ρA i faktor refleksije na izlazu linije ρB:
RL
4
ρA =
Zbirka riješenih zadataka
RS − Z 0 RL − Z 0 i ρB = . RS + Z 0 RL + Z 0
Faktor refleksije je mjera diskontinuiteta (razlike u otporu) koji vidi signal, i određuje koliko će se signala reflektirati u suprotnom smjeru. Ako je sa X označen diskontinuitet, tada će vrijediti: 1+ ρ
Upadni val X
ρ
Transmitirani val
Reflektirani val
Dakle, kada signal amplitude Ui dođe na mjesto diskontinuiteta, signal amplitude ρ⋅Ui vraća se kao reflektirani signal, a diskontinuitet prolazi signal amplitude (1+ρ)⋅Ui. Ovo zapravo znači da na lijevo i desno od diskontinuiteta naponska razina postaje ista (lijevo je prije refleksije bio napon Ui, nakon refleksije vraća se još ρ⋅Ui, tako da je ukupni napon na lijevoj strani (1+ρ)⋅Ui, što je isto naponu koji se nalazi na desnoj strani). Budući da prijenosna linija ima dva moguća diskontinuiteta, refleksije se mogu događati na ulazu i izlazu linije, pa se stanje na liniji obično prikazuje dijagramom odbijanja (engl. bounce diagram, lattice diagram). Dijagram se sastoji od dvije paralelne linije gdje lijeva strana predstavlja ulaz linije (točka A) a desna strana izlaz linije (točka B). Vrijeme teče prema dolje. Neka u trenutku t=0 na liniju dolazi signal Ui. Ako je duljina linije označena s l, a kašnjenje signala po jedinici duljine sa T0, tada je vrijeme potrebno da signal stigne s ulaza na izlaz linije određeno izrazom: Td = l ⋅ T0 Stanje na liniji promatra se u diskretnim vremenskim trenucima, koji su višekratnici vremena Td. Stanje na liniji tada je prikazano dijagramom odbijanja u nastavku. Napon u pojedinoj točki jednostavno se dobije zbrajanjem svih doprinosa do tog trenutka. Npr. napon u točki A u trenutku tx iznosi: U A (t x ) = U i + U i ⋅ ρ B + U i ⋅ ρ B ⋅ ρ A + U i ⋅ ρ B2 ⋅ ρ A + U i ⋅ ρ B2 ⋅ ρ A2 = U i ⋅ (1 + ρ B + ρ B ⋅ ρ A + ρ B2 ⋅ ρ A + ρ B2 ⋅ ρ A2 )
U istom trenutku napon u točki B iznosi: U B (t x ) = U i + U i ⋅ ρ B + U i ⋅ ρ B ⋅ ρ A + U i ⋅ ρ B2 ⋅ ρ A = U i ⋅ (1 + ρ B + ρ B ⋅ ρ A + ρ B2 ⋅ ρ A )
Refleksije, preslušavanja i utjecaj kapacitivnosti.
5
Do razlike je došlo uslijed činjenice da reflektirana komponenta U i ⋅ ρB2 ⋅ ρ A2 koja je u trenutku t=0+4Td krenula od točke A prema točki B tamo još nije stigla.
A
B t=0
t=0 Ui t=0+1Td
t=0+2Td
t=0+3Td
t=0+4Td
U i ⋅ ρB
U i ⋅ ρB ⋅ ρ A
U i ⋅ ρ B2 ⋅ ρ A
U i ⋅ ρ B2 ⋅ ρ A2
t=0+1Td
t=0+2Td
t=0+3Td
t=0+4Td t=tx
t=0+5Td
t=0+6Td
U i ⋅ ρ B3 ⋅ ρ A2
U i ⋅ ρ B3 ⋅ ρ A3
t=0+5Td
t=0+6Td
l Koliko iznosi Ui? Neka izvor generira napon prema step funkciji (do t=0 napon je 0V, nakon t=0 napon je US, npr. 5V). Otpori Rs i Z0 jedino su što signal "vidi" u trenutku t=0, te ta dva otpora čine naponsko dijelilo, čime je Ui određen:
Ui = US
Z0 RS + Z 0
6
Zbirka riješenih zadataka
1.5. Zadatak Koji su karakteristični slučajevi opterećenja prijenosne linije? Izračunajte faktor refleksije.
Postoje tri karakteristična slučaja: • • •
Terminirana linija: RL=Z0. Kratki spoj linije: RL=0. Otvorena linija: RL=∞. Rs
A
Z0
ρA Us(t)
ρB
+
A
Z0
ρA
A
Z0
ρA + -
Z0 − Z0 =0 Z0 + Z0
ρB =
0 − Z0 = −1 0 + Z0
ρB =
∞ − Z0 =1 ∞ + Z0
ρB RL=0
prijenosna linija
-
ρB =
B
+
Rs
Us(t)
RL=Z0
prijenosna linija
-
Rs
Us(t)
B
B
ρB prijenosna linija
RL = ∞
U slučaju kada je linija terminirana, nema refleksija! Ujedno je potrebno zapamtiti i kada je linija terminirana: otpor tereta i impedancija linije moraju biti jednaki (RL=Z0).
Refleksije, preslušavanja i utjecaj kapacitivnosti.
7
1.6. Zadatak Dva digitalna sklopa povezana su dugačkim vodom na tiskanoj pločici. Sklop A šalje sklopu B informaciju podizanjem napona ug=U na izlazu s 0V na +5V. Poznati su slijedeći podaci: izlazni otpor sklopa A iznosi 100Ω, karakteristična impedancija voda iznosi 100Ω, ulazni otpor sklopa B iznosi 3900Ω. Brzina signala kroz prijenosnu liniju iznosi 2⋅108 m/s, a duljina samog voda iznosi 40 cm. Prikažite naponsko stanje na vodu.
A
B uiz
uul
Poznato je: Riz = 100Ω , R0 = 100Ω , Rul = 3900Ω , v = 2 ⋅ 10 8 m / s , l = 40cm = 0.4m
Da bi signal stigao s jednog kraja linije na drugi, potrebno mu je vrijeme: Td =
l 0. 4 = = 2 ns v 2 ⋅ 10 8
Prikazani sklopovi mogu se nadomjestiti električkom shemom prema slici: Rizl
ug
A
uA
R0
B
uB
Rul
Faktor refleksije na ulaznom kraju voda:
ρA =
Riz − R0 100 − 100 =0 = Riz + R0 100 + 100
Vidimo da je izlazni otpor sklopa A prilagođen karakterističnoj impedanciji voda pa na tom kraju neće dolaziti do refleksije. Faktor refleksije na izlaznom kraju voda:
8
Zbirka riješenih zadataka
ρB =
Rul − R0 3900 − 100 = 0,95 = Rul + R0 3900 + 100
Kako je ρB≠0, na ovom kraju dolaziti će do refleksije. Nacrtajmo dijagram odbijanja: A
B t=0 ns
t=0 ns U i = 2,5V t=2 ns
U i ⋅ ρB = 2,375V
t=2 ns
t=4 ns
U i ⋅ ρB ⋅ ρ A = 0V
t=4 ns
l
Ui = U g
R0 100 = 5⋅ = 2,5V Riz + R0 100 + 100
U i ⋅ ρ B = 2,5 ⋅ 0,95 = 2,375V U i ⋅ ρ B ⋅ ρ A = 2,5 ⋅ 0,95 ⋅ 0 = 0V
Promatrajmo kretanje napona na oba kraja voda:
0.
2.
Izlaz sklopa A: u A (ulazni kraj voda) t=0⋅Td =0 ns uA(0 ns)=2,5 V t=1⋅Td =2 ns uA(2 ns)=2,5 V
t=2⋅Td =4 ns uA(4 ns)=2,5+2,375=4,875 V
Ulaz sklopa B: u B (izlazni kraj voda) t=0⋅Td =0 ns uB(0 ns)=0 V 1. t=1⋅Td =2 ns uB(2 ns)=2,5+2,375=4,875 V
t=2⋅Td =4 ns uB(4 ns)=2,5+2,375=4,875 V
Refleksije, preslušavanja i utjecaj kapacitivnosti.
9
Objašnjenje po fazama… 0. Sklop A generira na izlazu napon od 5V. Napon se dijeli na dijelilu Rizl - R0 . Zatim započinje širenje naponskog vala prema izlazu voda. U ovom trenutku napon u točci B i dalje je 0, jer naponskom signalu treba Td vremena kako bi stigao do drugog kraja. 1. Naponski val amplitude 2.5V stiže do kraja voda. Tu se događa refleksija, i reflektirani val počinje se širiti prema početku voda. Reflektirani val ima amplitudu jednaku amplitudi upadnog vala puta faktor refleksije. Signal koji se iz ove točke širi dalje (prema teretu; transmitirani val) ima amplitudu jednaku amplitudi upadnog vala pomnoženoj faktorom refleksije uvećanim za 1. Dakle, vraća se 2,375V, a na teret ide 4,875V. 2. Reflektirani val stiže do početka voda. Kako je ovaj kraj otporno prilagođen, nema refleksije. Napon u toj točki od sada na dalje jednak je naponu koji je vladao prije dolaska reflektiranog vala (2.5V) uvećanom za amplitudu pristiglog reflektiranog vala (2.375V). Vidi se da je napon na oba kraja voda sada jednak, te je pad napona na vodu jednak nula, što je i bilo za očekivati. Grafički prikaz:
ug 5
Za vježbu: Kakvo bi bilo stanje na vodu uz: a) Rul=∞, b) Rul=0?
uA 5
t
uB 5
t
2
4
6
t [ns]
1.7. Zadatak Dva digitalna sklopa komuniciraju preko dugačkog voda na tiskanoj pločici. Poznati su slijedeći podaci: izlazni otpor sklopa A iznosi 150Ω, induktivitet voda po jedinici duljine 0.5µH/m, kapacitet voda po jedinici duljine 50pF/m, ulazni otpor sklopa B 3900Ω a duljina voda 60 cm. Sklop A šalje sklopu B informaciju podizanjem napona na izlazu s 0V na +5V. Prikažite naponsko stanje na vodu.
Poznato je: Riz = 150Ω
L0 = 0,5µH / m
Rul = 3900Ω
C0 = 50 pF / m
10
Zbirka riješenih zadataka
Karakterističnu impedanciju voda možemo odrediti poznavanjem induktiviteta po jedinici duljine i kapaciteta po jedinici duljine voda: R0 =
L = C
0,5 µ = 10000 = 100Ω 50 p
Brzina širenja signala po vodu iznosi: 1 1 −8 m = = 2 ⋅ 10 v= s L0C0 0,5 ⋅10− 6 ⋅ 50 ⋅10−12 Vrijeme potrebno za prolaz signala do kraja voda iznosi: Td =
l 0. 6 = = 3 ns v 2 ⋅ 10 8
Faktor refleksije na ulaznom kraju voda:
ρA =
Riz − R0 150 − 100 1 = = 0.2 = Riz + R0 150 + 100 5
Vidimo da izlazni otpor sklopa A nije prilagođen karakterističnoj impedanciji voda (ρA≠0) pa će na tom kraju dolaziti do refleksije. Faktor refleksije na izlaznom kraju voda:
ρB =
Rul − R0 3900 − 100 = 0.95 = Rul + R0 3900 + 100
Kako je ρB≠0, na ovom kraju također će dolaziti do refleksije. Napon koji će se po uključenju izvora pojaviti na prijenosnoj liniji iznosi:
Ui = U g
R0 100 = 5⋅ = 2V Riz + R0 150 + 100
Refleksije, preslušavanja i utjecaj kapacitivnosti.
11
A
B t=0 ns
t=0 ns U i = 2V t=3 ns
U i ⋅ ρ B = 1,9V
t=3 ns
t=6 ns
U i ⋅ ρ B ⋅ ρ A = 0,38V
t=6 ns
t=9 ns
t=12 ns
t=15 ns
t=9 ns
U i ⋅ ρ B2 ⋅ ρ A = 0,361V
t=12 ns
U i ⋅ ρ B2 ⋅ ρ A2 = 0,0722V
t=15 ns
U i ⋅ ρ B3 ⋅ ρ A2 = 0,06859V
t=18 ns
t=18 ns
U i ⋅ ρ B3 ⋅ ρ A3 = 0,013718V
l
Promatrajmo kretanje napona na oba kraja voda: Ulazni kraj: 0.
t=0⋅Td =0 ns uA(0 ns)=2 V t=1⋅Td =3 ns
2.
t=0⋅Td =0 ns uB(0 ns)=0 V 1. t=1⋅Td =3 ns
uA(3 ns)=2 V t=2⋅Td =6 ns
uB(3 ns)=2+1,9=3,9 V t=2⋅Td =6 ns
uA(6 ns)=2+1,9+0,38=4,28 V
uB(6 ns)=2+1,9=3,9 V
t=3⋅Td =9 ns
4.
Izlazni kraj:
3. t=3⋅Td =9 ns
uA(9 ns)=2+1,9+0,38=4,28 V
uB(9 ns)=2+1,9+0,38+0,36=4,64 V
t=4⋅Td =12 ns
t=4⋅Td =12 ns
12
Zbirka riješenih zadataka
uA(12 ns)=2+1,9+0,38+0,36+0,0722 = 4,7132 V t=5⋅Td =15 ns
6.
uB(12 ns)=2+1,9+0,38+0,36=4,64 V 5. t=5⋅Td =15 ns
uA(15 ns)=2+1,9+0,38+0,36+0,0722 = 4,7132 V
uB(15 ns) = = 2+1,9+0,38+0,36+0,0722+0,06859 = 4,78179 V
t=6⋅Td =18 ns
t=6⋅Td =18 ns
uA(18 ns) = = 2+1,9+0,38+0,36+0,0722 +0,06859+0,013718 = 4,795508 V
uB(15 ns) = = 2+1,9+0,38+0,36+0,0722+0,06859 = 4,78179 V
Za vježbu: Nacrtati stanje na vodu prema izračunatim vrijednostima. Kojem naponu teži napon na krajevima voda? Zašto?
1.8. Zadatak Izlaz digitalnog sklopa priključen je na dugački vod. Sklop generira jedan idealni pravokutni impuls amplitude 5V i trajanja 2 ns. Ako je vod neopterećen, prikažite naponsko stanje na vodu. Još je poznato: Td=6 ns, karakteristična impedancija voda iznosi 100Ω, izlazni otpor digitalnog sklopa iznosi 400Ω.
ρA =
Riz − R0 400 − 100 3 = = 0.6 = Riz + R0 400 + 100 5
ρB =
Rul − R0 ∞ − 100 =1 = Rul + R0 ∞ + 100
Pravokutni impuls od amplitude 5 V u trajanju od 2 ns možemo prikazati kao sumu dvije step funkcije: ug(t) = 5 (S(t)-S(t - 2 ns)) Efektivno dakle imamo pozitivni naponski skok u t = 0 ns i negativni naponski skok u t = 2 ns, a odziv na skok već je riješen u prethodnim zadacima. Ui = U g
100 100 = 5⋅ = 1V 400 + 100 400 + 100
Refleksije, preslušavanja i utjecaj kapacitivnosti.
13
U trenutku t=0 kroz liniju kreće signal amplitude Ui, a 2 ns nakon njega kroz liniju se počinje širiti signal amplitude –Ui. Dijagram odbijanja prikazan je u nastavku:
A t=0 ns
t=6 ns
B t=0 ns
U i = 1V U i = − 1V
t=6 ns
U i ⋅ ρ B = 1V U i ⋅ ρ B = −1V
t=12 ns
t=12 ns
U i ⋅ ρ B ⋅ ρ A = 0,6V t=18 ns
U i ⋅ ρ B ⋅ ρ A = −0,6V
t=18 ns
U i ⋅ ρ B2 ⋅ ρ A = 0,6V t=24 ns
U i ⋅ ρ B2 ⋅ ρ A = −0,6V
t=24 ns
U i ⋅ ρ B3 ⋅ ρ A2 = 0,36V
t=30 ns
U i ⋅ ρ B3 ⋅ ρ A2 = − 0,36V
t=30 ns
U i ⋅ ρB3 ⋅ ρ A2 = 0,36V t=36 ns
U i ⋅ ρ B3 ⋅ ρ A2 = − 0,36V
U i ⋅ ρ B3 ⋅ ρ A3 = 0,216V U i ⋅ ρ B3 ⋅ ρ A3 = −0,216V l Dijagrami napona na ulazu i izlazu iz linije prikazani su u nastavku:
t=36 ns
14
Zbirka riješenih zadataka
ui [V] 2 1,5 1V 1 0,5 t [ns] uA [V]
2
4
6
8
10
12
2
14
16
18
20
22
24
26
28
30
32
34
36
38
40
1,6V
1,5 1V
0,96V
1 0,576V 0,5 t [ns] uB [V]
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
34
36
38
40
2V 2 1,5
1,2V
1
0,72V
0,5 t [ns] 2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
1.9. Zadatak Izlaz digitalnog sklopa priključen je na dugački vod. Sklop u trenutku t=0 generira naponski skok amplitude 5V. Ako je vod neopterećen, prikažite naponsko stanje na vodu. Vod se sastoji od dva dijela. Na prvom dijelu kašnjenje signala po jedinici duljine iznosi T01 = 10ns / m a na drugom dijelu kašnjenje signala po jedinici duljine iznosi T02 = 5ns / m . Duljina prvog dijela iznosi 0,2 m, a duljina drugog dijela 0,4 m. Karakteristična impedancija prvog dijela voda iznosi 100Ω a drugog dijela voda 60Ω, izlazni otpor digitalnog sklopa iznosi 150Ω. Prikažite naponsko stanje na liniji.
Kašnjenje signala na prvom dijelu voda iznosi: Td1 = l1 ⋅ T01 = 0,2 ⋅ 10 = 2ns
a na drugom dijelu voda: Td2 = l 2 ⋅ T02 = 0,4 ⋅ 5 = 2ns .
Vidimo da je kašnjenje signala kroz oba dijela vodiča je jednako. U zadatku imamo 4 faktora refleksije, određena sljedećim izrazima:
Refleksije, preslušavanja i utjecaj kapacitivnosti.
ρA =
ρ3 =
Riz − Z 0,1 Riz + Z 0,1 Z 0,1 − Z 0, 2 Z 0,1 + Z 0, 2
=
15
Z 0, 2 − Z 0,1 60 − 100 150 − 100 = 0,2 , ρ 2 = = = −0,25 , 150 + 100 Z 0, 2 + Z 0,1 60 + 100
=
RL − Z 0, 2 ∞ − 60 100 − 60 = 0, 25 , ρ3 = = =1 100 + 60 RL + Z 0, 2 ∞ + 60
Naime, postoje 3 diskontinuiteta: ulaz u prvi vod (točka A), spoj dvaju vodova (točka X) i izlaz iz drugog voda (točka B). Napon na ulazu voda u trenutku t=0 određen je isključivo naponskim dijelilom Riz-Z0,1, prema formuli: Ui = U g
Z 0,1 Riz + Z 0,1
= 5⋅
100 = 2V 150 + 100
Dijagram odbijanja prikazan je u nastavku:
A
X
0 ns
B 0 ns
a
2 ns
c
4 ns
d
8 ns
8 ns
g 10 ns
h
12 ns
4 ns
e
f
10 ns
2 ns
b
i 12 ns
j
k
14 ns
14 ns
l
m
16 ns
16 ns
n 18 ns
p
o q
18 ns
Radi preglednosti dijagrama pojedine reflektirane i transmitirane komponente nisu direktno upisivane, već su samo označene slovima. Uz navedene faktore refleksije, bitna su nam i dva faktora transmisije:
T2 = 1 + ρ2 = 0,75 i T3 = 1 + ρ3 = 1,25 Tada su pojedine komponente definirane izrazima:
16
Zbirka riješenih zadataka
a = U i = 2V b = aT2 = 1,5V c = aρ 2 = −0,5V d = cρ A = −0,1V e = bρ B = 1,5V f = dρ2 + eT3 = 1,9V g = eρ3 + dT2 = 0,3V h = fρ A = 0,38V i = gρ B = 0,3V j = hρ 2 + iT3 = 0,28V k = iρ3 + hT2 = 0,36V l = jρ A = 0,056V m = kρ B = 0,36V n = lρ 2 + mT3 = 0,436V o = mρ3 + lT2 = 0,132V p = nρ A = 0,0872V q = oρ B = 0,132V
Obratiti pažnju na način izračuna f (slično kao i g, j, k, ...). Kad signal predstavljen sa h dođe u točku X, jedan dio se reflektira natrag prema točki A ( dρ2 ), a dio se transmitira dalje prema točki B ( dT2 ). Kako istovremeno u tu točku dolazi i signal iz točke B predstavljen sa e, jedan dio tog signala reflektira se natrag prema točki B ( eρ3 ), a dio se transmitira dalje prema točki A ( eT3 ). Tada ukupni signal koji se vraća prema A sadrži reflektiranu komponentu signala d i transmitiranu komponentu signala e, odnosno: f = dρ 2 + eT3 . Isto tako, ukupni signal koji se vraća prema B sadrži reflektiranu komponentu od e, i transmitiranu komponentu od d, dakle: g = eρ3 + dT2 Grafički prikaz napona u točkama A, X i B dan je u nastavku.
Refleksije, preslušavanja i utjecaj kapacitivnosti.
17
UA[V] 4,5392 V
5
4,016V 3,68 V
4 3
2V 1,4 V
2 1
t [ns] 2
4
6
8
10
12
14
16
UX[V] 4,452 V
5
3,96 V 3,3 V
4 3 1,5 V
2 1
t [ns] 2
4
6
8
10
12
14
16
UB[V] 4,32 V
5
4,587 V
3,6 V
4 3V 3 2 1
t [ns] 2
4
6
8
10
12
14
16
1.10. Zadatak Objasnite utjecaj preslušavanja na rad digitalnih sklopova.
Do preslušavanja dolazi uslijed međuinduktivnih i međukapacitivnih veza. Razlikujemo preslušavanje na bližem kraju i preslušavanje na daljem kraju. Npr. promotrimo rad dijela sabirnice (dva para sklopova), prikazanih na slici. X
Y
W
Z
18
Zbirka riješenih zadataka
Sklopove možemo nadomjestiti: RS
R0
R0
bliži kraj
R0
ICm
Ibliži=ICm+ILm
dalji kraj
Idalji=ICm-ILm RS
R0
R0
bliži kraj
R0
ILm
dalji kraj
Vidimo dakle da je utjecaj preslušavanja uvijek veći na bližem kraju a manji na daljem kraju. Struja zbog međukapacitivnosti kod donjeg sklopa uvijek teče prema oba kraja, dok je smjer struje zbog međuinduktivnosti određen Lenzovim zakonom (npr. ako struja u gornjem sklopu poteče na desno, u donjem će sklopu poteći na lijevo). Detaljnija matematička obrada prikazana je u sljedećem zadatku. 1.11. Zadatak Izlaz jednog digitalnog sklopa A spojen je na ulaze dvaju digitalnih sklopova B i B' preko dugačkog voda na tiskanoj pločici. Poznato je da izlazni otpor sklopa A kada je izlaz u visokom stanju iznosi 130Ω, dok je u niskom stanju 10Ω. Ulazni otpor sklopa B (i B') iznosi 10kΩ, dok je ulazna kapacitivnost 1 pF. Kapacitivnost linije iznosi 10pF.
B
A
B'
Izračunajte i nacrtajte oblik napona koji se pojavi na ulazima sklopova B ako sklop A generira pravokutni naponski impuls 5V u trajanju od 10 ns. Zanemarite refleksije.
Izlaz digitalnog sklopa A može se nadomjestiti idealnim naponskim izvorom koji u seriju ima spojen izlazni otpor. Nesavršenu liniju nadomještamo savršenom uz dodatak kapacitivnosti CP. Ulazi sklopova B i B' nadomještaju se paralelnom kombinacijom ulaznog otpora Rul i kapacitivnosti CT.
Refleksije, preslušavanja i utjecaj kapacitivnosti.
19
Rizl
A
CP
B
ug Rul
CT
B' Rul
CT
Ovu shemu možemo nacrtati i na drugačiji način, tako da grupiramo otpore na jedno mjesto a kapacitivnosti na drugo:
Thevenin
Rizl
Rul
ug
Rul
CP
Po Theveninu ovaj se strujni krug može pojednostavniti na: RTOT
ut
i
pri čemu je:
Rul || Rul = 4.873V Rizl + Rul || Rul = Rul || Rul || Rizl CTOT = CT + CT + CP
ut = u g ⋅ RTOT
Može se napisati slijedeća naponska jednadžba: ut (t ) = i (t ) ⋅ RTOT + 1. slučaj:
1 CTOT
∫ i(t ) ⋅ dt
CTOT
CT
CT
20
Zbirka riješenih zadataka
t=0, skok napona izvora s 0V na ut. Rješenje jednadžbe glasi: t − τ1 uul (t ) = uC (t ) = ut 1 − e , τ = RTOT ,1 ⋅ CTOT , RTOT ,1 = 10k || 10k || 130 1 τ 1 = 1,52ns Jednadžba vrijedi do t = 10 ns.
2. slučaj: t=10ns, skok napona izvora s ut na 0V (kraj naponskog impulsa). Rješenje jednadžbe tada glasi:
uul (t ) = uC (t ) = uul (t = 10ns ) ⋅ e
−
t −10 n
τ2
, τ 2 = RTOT , 2 ⋅ CTOT , RTOT , 2 = 10k || 10k || 10
τ 2 = 0,12ns Jednadžba vrijedi od t = 10 ns nadalje. Grafički prikaz:
ut
t 10 ns uul
t 10 ns
Za vježbu: Izračunati vrijeme porasta, vrijeme pada i trajanje impulsa prema predavanjima. Ako se trajanje impulsa skrati na 1 ns, kako će tada izgledati izlazni napon? Hoće li sklop B ispravno protumačiti da je primio visoku naponsku razinu (pretpostavimo da napon na ulazu mora biti barem 4V da bi bio shvaćen kao visoka razina)?
Refleksije, preslušavanja i utjecaj kapacitivnosti.
21
1.12. Zadatak Dva para digitalnih sklopova (X, Y) i (W, Z) povezani su dugačkim paralelnim vodovima na tiskanoj pločici, na sljedeći način: izlaz sklopa X povezan je na ulaz sklopa Y, izlaz sklopa W povezan je na ulaz sklopa Z. Svi sklopovi su istog tipa. Poznati su slijedeći podaci: napon visoke razine UH=3.8V, napon niske razine UL=0,3V, struja niske razine IIL=-1.6mA, struja visoke razine IIH≈0mA, RulH=∞, RulL=4kΩ, RizlH=100Ω, RizlL=10kΩ. Kapacitet između vodova iznosi C=10pF, a međuinduktivitet M=100nH. Izlazi sklopova X i W nalaze se na visokoj razini (UH). Sklop X u trenutku t1 pošalje sklopu Y impuls trajanja T, s parametrima tr=8ns, tf=5ns. Ako su sklopovi X i Z, te Y i W susjedni (vidi sliku), odredite utjecaj tog impulsa na sklopove W i Z. Analizirati samo utjecaj preslušavanja!
X
Y
vod A
Z
W vod B
Postoje dvije komponente preslušavanja: i) ii)
zbog međuinduktiviteta zbog kapaciteta
Utjecaj preslušavanja u općem slučaju Utjecaj međuinduktiviteta Utjecaj kapaciteta M
iI
iC C
iII Rg
Rg
+
R1 u1 -
u2
R2
RT
+ R1 u1
ug
-
+
uP di diI 1 , iII = M I = dt R1 + R2 R1 + R2 dt + di R1 M I u1 = dt R1 + R2 + R2 di u2 = − M I R1 + R2 dt up = M
+
-
uP
ug
uC
iC = C
duC dt
duC dt du ( R1 || R2 ) ⋅ C C dt ( R1 || R2 ) ⋅ C
u2 R2
RT -
22
Zbirka riješenih zadataka
U trenutku t1 sklop X generira padajući brid impulsa. Vrijedi: uC (t1− ) = ϕ ( A, t1− ) − ϕ ( B, t1− ) = U H − U H = 0 uC (t1+ ) = ϕ ( A, t1+ ) − ϕ ( B, t1+ ) = U L − U H
duC ∆uC uC (t1+ ) − uC (t1− ) U L − U H ≈ = = = −7 ⋅108 V s dt tf tf tf
iI (t1− ) = I IH i iI (t1+ ) = I IL diI ∆iI iI (t1+ ) − iI (t1− ) I IL − I IH ≈ = = = −3,2 ⋅105 A s dt tf tf tf
Uz sklopove postavljene kao u zadatku, R1 odgovara RulH sklopa Z, R2 odgovara RizlH sklopa W. Dobije se:
u1 = −732mV Kako je u stacionarnom stanju napon na vodu B jednak UH, pod utjecajem preslušavanja napon pada na U H + u1 = 3,8 + (−0,732) = 3,068V . Grafički prikaz: uA
t
diI dt
?
t
duC dt
? uB
t
? t t1
t1+T
Zašto derivacije nisu delta funkcije? → naponski skok kod uA impulsa također nije savršeno okomit. Možemo aproksimirati trapezom trajanja tf/tr, pa bi derivacije bile pravokutni impulsi. Međutim, i to je samo aproksimacija, stvarno impulsi izgledaju kao na slici...
Za vježbu. Izračunati i nacrtati utjecaj preslušavanja u trenutku t=t1+T (dakle, na rastući brid). Ponoviti analizu uz pretpostavku da su susjedni sklopovi sada X i W, te Y i Z.
Refleksije, preslušavanja i utjecaj kapacitivnosti.
23
ZADACI ZA VJEŽBU 1.
(Pismeni ispit 30.09.2004.) Više sklopova spojeno je na zajedničku sabirnicu koja se ponaša kao dugačka linija. Zbog kvara, jedan od sklopova (npr. sklop C) sabirnicu kratko spaja na masu. Prikažite stanje na sabirnici nakon što jedan sklop A na izlazu generira napon od 5V, u trajanju od 5td. Na sabirnicu je još priključen samo ulaz sklopa B, dok su svi ostali sklopovi u stanju visoke impedancije. Sklopovi B i C fizički su smješteni blizu. Poznato je: izlazni otpor sklopa iznosi 150Ω, ulazni otpor sklopa 2400Ω a karakteristična impedancija voda iznosi 100Ω.
2.
(Pismeni ispit 07.02.2005.) Izlaz digitalnog sklopa spojen je na dugački vod na tiskanoj pločici, koji se ponaša kao kao prijenosna linija. Ako je poznato da je izlazni otpor sklopa 50Ω, a Z0=100Ω, nacrtajte stanje na vodu za slučaj da se napon na izlazu sklopa promijeni s 0,3V na 5V, te ako je: a.
na kraj voda spojeno trošilo ulaznog otpora 100Ω,
b.
kraj voda otvoren (nema spojenih trošila).
Zaštitno kodiranje. Brojevni sustavi.
25
2. Zaštitno kodiranje. Brojevni sustavi. 2.1. Zadatak Četiri-bitni podatak 1011 potrebno je zaštititi kodom n-strukog ponavljanja (uz n=5). Prikazati zaštićeni podatak i navesti svojstva ovog kodiranja. Pokazati način ispravljanja pogreške na primjeru. Opisani kod spada u najjednostavnije moguće, pri čemu kod odjednom može kodirati samo jedan bit podatka (dakle 0 ili 1) i zbog toga ima samo dvije kodne riječi {000…0, 111…1}. Dakle, podatak 0 kodira se sa n nula, a podatak 1 sa n jedinica. Podatak 1011 tada će uz n=5 biti kodiran kao 11111 00000 11111 11111. Redundancija ovog kodiranja je vrlo velika; naime: R=
r n −1 4 = = = 0. 8 n n 5
i povećanjem n raste prema 1 (r je broj zaštitnih, tj. redundantnih bitova, n je ukupan broj bitova). No, zahvaljujući velikoj redundanciji, kod može otkrivati i ispravljati čak (n-1)/2 pogrešaka, gdje je s x definirana funkcija zaokruženja prema prvom manjem cijelom broju. U našem primjeru, broj pogrešaka koje kod može otkriti i ispraviti iznosi: (n − 1) / 2 = (5 − 1) / 2 = 2 = 2 . Kako smo došli do ovog zaključka? Ključ je u računanju udaljenosti primljene kodne riječi i svake moguće ispravne kodne riječi, gdje se udaljenost računa kao broj različitih bitova. Ako kodna riječ ima n bitova, tada je uslijed pogreške mogla nastupiti jedna od sljedećih situacija: promijenjeno je nula bitova, promijenjen je jedan bit, …, promijenjeno je svih n bitova. Pogledajmo to grafički za n=5 (i uzmimo u obzir da imamo samo dvije ispravne kodne riječi):
Na prikazanoj slici referentna kodna riječ je 00000. Isto razmatranje možemo napraviti ako kao referentnu kodnu riječ uzmemo 11111, čime dobijemo simetričnu sliku:
26
Zbirka riješenih zadataka
Uzevši u obzir da je vjerojatnost pojave višestruke pogreške uobičajeno manja od vjerojatnosti pojave manje pogreške, uvijek će se pretpostavljati da je došlo do minimalnog broja promijenjenih bitova. Zbog toga će se izračunati udaljenost primljene riječi do svake ispravne kodne riječi, i kao prava poslana kodna riječ bit će uzeta ona ispravna kodna riječ koja ima minimalnu udaljenost. Npr. ako je primljena kodna riječ 10101, računamo udaljenosti: d(10101, 00000) = 3 d(10101, 11111) = 2 Dakle, pretpostavit ćemo da je poslana kodna riječ 11111, što odgovara podatku 1. Na ovaj način kod će pouzdano ispravljati svaku jednostruku pogrešku, i svaku dvostruku pogrešku, što smo inicijalno i utvrdili. No u slučaju trostruke pogreške, kod će zakazati. Naime, tada će udaljenost primljene riječi biti manja do one druge kodne riječi, i ispravljanje pogreške će zakazati (zbog čega smo i izrekli tvrdnju da kod pouzdano ispravlja do dvije pogreške). Općenito vrijedi sljedeća tvrdnja: kod s minimalnom udaljenošću d između svake dvije ispravne kodne riječi može ispraviti (d − 1) / 2 pogrešaka. Tvrdnja se može izreći i obratno: da bi kod mogao ispravljati t pogrešaka, minimalna distanca između svake dvije ispravne kodne riječi mora biti d ≥ 2t + 1 . Ova tvrdnja vrijedit će i za sve kodove koje ćemo obraditi u nastavku. 2.2. Zadatak Oktet 213 potrebno je zaštititi paritetnim bitom uz uporabu parnog pariteta. Objasniti ovaj način zaštitnog kodiranja, i svojstva.
Traženo kodiranje obavlja se tako da se podatkovnoj riječi doda još jedan bit, koji se postavi na onu vrijednost uz koju je cijela kodna riječ traženog pariteta. Ako je n-bitna podatkovna riječ dana bitovima b0, b1, …, bn-1, a paritetni bit označimo s bn, tada uz pretpostavku parnog pariteta mora vrijediti: b0 ⊕ b1 ⊕ " ⊕ bn −1 ⊕ bn = 0
Zaštitno kodiranje. Brojevni sustavi.
27
odakle odmah slijedi: bn = b0 ⊕ b1 ⊕ " ⊕ bn−1 Ako se pak koristi neparni paritet, tada paritetni bit mora zadovoljavati izraz: b0 ⊕ b1 ⊕ " ⊕ bn−1 ⊕ bn = 1 odakle odmah slijedi: bn = b0 ⊕ b1 ⊕ " ⊕ bn−1 ⊕ 1 = b0 ⊕ b1 ⊕ " ⊕ bn−1
Uz zadane podatke: 213 = 11010101(2), paritetni bit iznosi: b8 = 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 = 1 te je kodna riječ: 111010101 (podcrtan je paritetni bit). Lako se je uvjeriti da ova kodna riječ doista zadovoljava početni uvjet: b0 ⊕ b1 ⊕ " ⊕ bn −1 ⊕ bn = 1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 = 0 U ovom zadatku podatkovna riječ ima k=8 bitova, broj zalihosnih bitova r=1, te je ukupna duljina kodne riječi n=k+r=9. Redundancija koda tada je određena izrazom: R=
r 1 = = 0.1111 . n 9
Ovaj kod otkriva svaku jednostruku pogrešku, i svaki neparan broj pogrešaka. Kod ne može ispraviti niti jednu pogrešku. 2.3. Zadatak Niz okteta {25, 12, 250, 54, 93, 33, 196, 212} potrebno je zaštititi uporabom uzdužnog i poprečnog pariteta (koristiti parni paritet). Pri tome treba koristiti takav način kodiranja koji će osigurati minimalnu redundanciju! Prikažite kodirane podatke i izračunajte redundanciju. Niz koji kodiramo sastoji se od 8 ⋅ 8 = 64 bitova. Ovaj niz potrebno je presložiti u blok bitova koji u svakom retku sadrži W podatkovnih bitova, a u svakom stupcu H podatkovnih bitova. Ukupan broj podatkovnih bitova tada će biti p = W ⋅ H i to mora biti jednako 64. Cijeli blok očito će biti dimenzija n = (W + 1) ⋅ (H + 1) . Broj zalihosnih bitova tada je r = W + H + 1 .
Redundancija R računa se prema izrazu:
28
Zbirka riješenih zadataka r n
R=
Budući da tražimo takav način kodiranja da redundancija bude minimalna, pronađimo minimum te funkcije dviju varijabli (W i H). U tu svrhu ćemo najprije eliminirati jednu od varijabli korištenjem supstitucije: H=
p W
što će dati:
p n = (W + 1) ⋅ + 1 W p r = W + +1 W pa imamo: p +1 W R(W ) = (W + 1) ⋅ p + 1 W W+
Derivirajmo R po W i izjednačimo s nulom:
p p p p p − 2 + 1(W + 1) + 1 − + W + 1 + 1 + (W + 1) − 2 dR(W ) W W W W W = dW (W + 1) ⋅ p + 1 W Nakon kraćeg računa slijedi: pW 3 − p 2W = 0 tj. slijedi:
(
)
pW W 2 − p = 0 Kako niti p niti W ne mogu biti 0, slijedi da je treći član jednak 0, pa imamo: W=
p
Odavde odmah slijedi i H uvrštavanjem u početnu supstituciju:
=0
Zaštitno kodiranje. Brojevni sustavi. H=
p p = = W p
29
p
Uz zadane parametre slijedi: W =8 H =8 r = 8 + 8 + 1 = 17 n = (8 + 1)(8 + 1) = 81 17 R= ≅ 0.21 81
To znači da ćemo svaki oktet staviti u jedan redak. Zaštićeni blok podataka iznosi: 1 0 0 1 0 0 0 1 1
0 0 0 1 0 1 0 1 1
1 0 0 1 1 0 1 0 0
1 1 0 1 1 1 0 0 1
0 1 1 1 0 1 0 0 0
1 0 1 0 1 1 0 1 1
0 0 0 1 1 0 0 0 0
1 1 0 0 0 1 1 0 0
1 1 0 0 0 1 0 1 0
Prvi redak pripada paritetnim bitovima poprečnog pariteta, a zadnji stupac pripada paritetnim bitovima uzdužnog pariteta. 2.4. Zadatak Poruku 101100011010(2) potrebno je zaštititi uporabom Hammingovog koda koristeći parni paritet. Zatim pretpostavite da tijekom prijenosa takve zaštićene poruke uslijed djelovanja smetnji 12-ti bit (brojeći s lijeva na desno počevši od 1) promjeni iznos. Da li možemo otkriti da je došlo do pogreške u prijenosu, i možemo li ispraviti pogrešku? Pokažite to.
Hammingov kod miješa zaštitne bitove s podatkovnim bitovima. Najprije je potrebno ustanoviti koliko će zaštićena riječ imati bitova i kako će se oni računati. Možemo se poslužiti jednostavnom metodom: generiramo određen broj bitova od 1 naviše. Svaki bit koji je potencija broja 2 je zaštitni; preostali su podatkovni. Stanemo kada smo generirali dovoljan broj podatkovnih bitova (12 jer naša poruka ima toliko bitova). Zatim ispod svakog bita napišemo njegov redni broj u binarnom obliku (vidi tablicu). 'C' označava da je bit zaštitni, 'P' označava da je bit podatkovni. U ovom zadatku bitovi se numeriraju s lijeva na desno počevši od 1.
30 C 1 20 0 0 0 0 1
Zbirka riješenih zadataka C 2 21 0 0 0 1 0
P 3 × 0 0 0 1 1
C 4 22 0 0 1 0 0
P 5 × 0 0 1 0 1
P 6 × 0 0 1 1 0
P 7 × 0 0 1 1 1
C 8 23 0 1 0 0 0
P 9 × 0 1 0 0 1
P 10 × 0 1 0 1 0
P 11 × 0 1 0 1 1
P 12 × 0 1 1 0 0
P 13 × 0 1 1 0 1
P 14 × 0 1 1 1 0
P 15 × 0 1 1 1 1
C 16 24 1 0 0 0 0
P 17 × 1 0 0 0 1
Potrebno je poslati ukupno 17 bitova kako bismo mogli sigurno prenijeti 12 bitova poruke (sigurno u smislu mogućnosti ispravljanja jednostruke pogreške). Vrijednost zaštitnog bita izračunamo na slijedeći način: • Pronađemo u tablici onaj redak u kojem ispod traženog zaštitnog bita imamo 1. • Suma modulo 2 (što je ekvivalentno operaciji isključivo ili) tog bita sa svim bitovima koji u tom istom retku imaju 1 mora zadovoljavati traženi paritet (dakle, biti 0 za parni paritet, odnosno 1 za neparni paritet). Upisujemo poruku: C 1 ?
C 2 ?
P C P P P C P P P P P P P C 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ? 1 ? 0 1 1 ? 0 0 0 1 1 0 1 (? označava da na ovom mjestu još ne znamo vrijednost određenog bita)
P 17 0
C(1) ima 1 u petom (zadnjem) retku. U tom retku 1 imaju još i P(3), P(5), P(7), P(9), P(11), P(13), P(15), P(17). Sumiramo vrijednosti svih navedenih P-bitova: 1+0+1+0+0+1+1+0 mod 2 = 4 mod 2 = 0, te je C(1) = 0. Da se traži neparan paritet, C(1) bi bio komplement dobivenog rezultata, dakle 1. C(2) ima 1 u četvrtom (predzadnjem) retku. U tom retku 1 imaju još i P(3), P(6), P(7), P(10), P(11), P(14), P(15). Sumiramo vrijednosti svih navedenih P-bitova: 1+1+1+0+0+0+1 mod 2 = 4 mod 2 = 0, te je C(2) = 0. Da se traži neparan paritet, C(2) bi bio komplement dobivenog rezultata, dakle 1. C(4) ima 1 u trećem retku. U tom retku 1 imaju još i P(5), P(6), P(7), P(12), P(13), P(14), P(15). Sumiramo vrijednosti svih navedenih P-bitova: 0+1+1+1+1+0+1 mod 2 = 5 mod 2 = 1, te je C(4) = 1. Da se traži neparan paritet, C(4) bi bio komplement dobivenog rezultata, dakle 0. C(8) ima 1 u drugom retku. U tom retku 1 imaju još i P(9), P(10), P(11), P(12), P(13), P(14), P(15). Sumiramo vrijednosti svih navedenih P-bitova: 0+0+0+1+1+0+1 mod 2 = 3 mod 2 = 1, te je C(8) = 1. Da se traži neparan paritet, C(8) bi bio komplement dobivenog rezultata, dakle 0. C(16) ima 1 u prvom retku. U tom retku 1 imaju još i P(17). Sumiramo vrijednosti svih navedenih P-bitova: 0 mod 2 = 0, te je C(16) = 0. Da se traži neparan paritet, C(16) bi bio komplement dobivenog rezultata, dakle 1.
Zaštitno kodiranje. Brojevni sustavi.
31
Sumu modulo 2 obavlja operacija isključivo ili, koju ćemo u nastavku označavati sa XOR što je uobičajena oznaka za ovu operaciju u VHDLu koji ćemo obraditi nešto kasnije. Za parni paritet možemo pisati: C(1)⊕P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13)⊕P(15)⊕P(17)=0 C(2)⊕P(3)⊕P(6)⊕P(7)⊕P(10)⊕P(11)⊕P(14)⊕P(15)=0 C(4)⊕P(5)⊕P(6)⊕P(7)⊕P(12)⊕P(13)⊕P(14)⊕P(15)=0 C(8)⊕P(9)⊕P(10)⊕P(11)⊕P(12)⊕P(13)⊕P(14)⊕P(15)=0 C(16)⊕P(17)=0
Što nakon još jedne primjene XOR operacije s C(i) daje: C(1)=P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13)⊕P(15)⊕P(17) C(2)=P(3)⊕P(6)⊕P(7)⊕P(10)⊕P(11)⊕P(14)⊕P(15) C(4)=P(5)⊕P(6)⊕P(7)⊕P(12)⊕P(13)⊕P(14)⊕P(15) C(8)=P(9)⊕P(10)⊕P(11)⊕P(12)⊕P(13)⊕P(14)⊕P(15) C(16)=P(17)
Da se je tražio neparni paritet imali bismo npr.: C(1)⊕P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13)⊕P(15)⊕P(17)=1 Što bi dalo nakon primjene XOR s C(1) na lijevoj i desnoj strani jednakosti: C(1)=Komplement_od( P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13)⊕P(15)⊕P(17) )
Slično i za ostale zaštitne bitove… Niz zaštitnih bitova: C(16) C(8) C(4) C(2) C(1) = 01100. Zaštićena poruka tada glasi: 00110111000110100. Ako se promjeni 12-ti bit, nova poruka glasi: 00110111000010100. Računanjem zaštitnih bitova dobiti ćemo: C'(16) = 0, C'(8) = 0, C'(4) = 0, C'(2) = 0, C'(1) = 0, te novi niz zaštitnih bitova glasi: 00000. Niz zaštitnih bitova očitan iz dobivene poruke je: 01100, te je pogreška nastupila na mjestu koje određuje sindrom: očitani niz zaštitnih bitova XOR izračunati niz zaštitnih bitova = 01100 XOR 00000 = 01100. Pogreška je nastupila na mjestu 01100(2)=12(10). Da bismo ispravili pogrešku, potrebno je 12. bit komplementirati pa je ispravna zaštićena poruka: 00110111000110100, odnosno bio je poslan niz bitova: 101100011010.
32
Zbirka riješenih zadataka
2.5. Zadatak Blok od 8000 okteta šalje se komunikacijskim medijem. Koliko je zaštitnih bitova potrebno, i kolika je redundancija, ako za zaštitu koristimo: a) uzdužni plus poprečni paritet b) Hammingov kod
a) Uporaba uzdužnog plus poprečnog pariteta Poredajmo podatkovne bitove u tablicu koja ima jedan oktet paritetnih bitova za uzdužni paritet, i 8 paritetnih bitova za poprečni paritet. Ukupno trebamo: r = o1 8000 + 8 + 1 = 8009 paritetnih bitova (+1 zbog p1,1 gornjeg desnog bita tablice). Poslati ćemo n = p8000,1 8000⋅8 + 8009 = 72009 bitova. Redundancija je: R=
r 8009 = = 0,111 n 72009
što je više od 11%. b) Uporaba Hammingovog koda
po retku. trebamo 8000 … …
on p1,8
…
p8000,8
× v1 … vn
Za vježbu. Riješite a) dio zadatka tako da podatkovne bitove složite na način koji će potrošiti minimalno potreban broj zaštitnih bitova. Koliko tada iznosi redundancija? Usporedite s rješenjem b) dijela zadatka.
Ako štitimo blok od k = 8000⋅8 = 64000 bitova, broj paritetnih bitova mora biti:
2r ≥ n + 1 Zašto? Promatramo li niz zaštitnih bitova kao r-bitni binarni broj Cr-1Cr-2…C1C0, taj broj mora moći poprimiti poziciju na kojoj je došlo do pogreške, ili vrijednost nula ako niti na jednoj poziciji nije došlo do pogreške. Kako štitimo n bita, slijedi da zaštitni broj mora moći poprimiti vrijednosti: 0, 1, 2, ..., n-1, n tj. ukupno n+1 vrijednost. Napisano na drugi način:
2r ≥ k + r + 1 Prvi r koji ovo zadovoljava jest r=16: 216 = 65536 ≥ 64000 + 16 + 1 = 64017 Ukupno ćemo prenijeti n = 64000+16 = 64016 bitova, pa je redundancija: R=
r 16 = = 0,00025 n 64016
što je višestruko manje od uzdužnog plus poprečnog pariteta.
Zaštitno kodiranje. Brojevni sustavi.
33
2.6. Zadatak Potrebno je zaštititi četiri podatka: 00, 01, 10 i 11. Podaci se štite s četiri zaštitna bita, tako da se postavi jedinica na mjesto koje odgovara numeričkoj vrijednosti podatka. Koliko se pogrešaka takvim kodiranjem može otkriti, a koliko ispraviti? Pretpostaviti da je uslijed djelovanja pogrešaka primljena poruka d=000101 (zaštitni su bitovi nakon korisnih). Neka kriterij za otkrivanje ispravne poruke bude minimalna distanca koda.
Napišimo sve kodne riječi u zadanom kodu: Bitovi poruke d1 d0 0 0 0 1 1 0 1 1
c3 0 0 0 1
Zaštitni bitovi c2 c1 0 0 0 1 1 0 0 0
Podatak c0 1 0 0 0
p0 p1 p2 p3
Izračunajmo minimalnu distancu koda (najmanji broj bitova koji se razlikuju između dvije kodne riječi): p0 p0 p0 p1 p1 p2
-
p1 p2 p3 p2 p3 p3
3 3 4 4 3 3
Minimalna distanca je dakle: min d = 3. Zahtjev za otkrivanje pogreške glasi: min d ≥ t + 1, t je broj pogrešnih bitova koje možemo otkriti. 3 ≥ t + 1 ⇒ t ≤ 2: možemo otkriti dva pogrešna bita.
Zahtjev za ispravljanje pogreške glasi: min d ≥ 2⋅t + 1, t je broj pogrešnih bitova koje možemo ispraviti. 3 ≥ 2⋅t + 1 ⇒ t ≤ 1: možemo ispraviti jedan pogrešan bit. Npr. ako je primljena poruka d=000101: najbliža kodna riječ je 000001 s distancom 1 (sve ostale imaju veću distancu do d), pa zaključujemo da je to poslana kodna riječ. 2.7. Zadatak Potrebno je zaštititi slijedeći niz bitova: 1010100000101010101. Potrebno je koristiti Hammingov kod uz neparni paritet. Pogreška neka djeluje na 10. bit.
Niz koji treba poslati je oblika: xx1x010x1000001x01010101, gdje x označava pozicije zaštitnih bitova. Potrebno je 5 zaštitnih bitova. C(1)=Komplement( P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13)⊕P(15)⊕P(17)⊕P(19)⊕P(21)⊕P(23) )
34
Zbirka riješenih zadataka
C(2)=Komplement( P(3)⊕P(6)⊕P(7)⊕P(10)⊕P(11)⊕P(14)⊕P(15)⊕P(18)⊕P(19)⊕P(22)⊕P(23) ) C(4)=Komplement( P(5)⊕P(6)⊕P(7)⊕P(12)⊕P(13)⊕P(14)⊕P(15)⊕P(20)⊕P(21)⊕P(22)⊕P(23) ) C(8)=Komplement( P(9)⊕P(10)⊕P(11)⊕P(12)⊕P(13)⊕P(14)⊕P(15)⊕P(24) ) C(16)=Komplement( P(17)⊕P(18)⊕P(19)⊕P(20)⊕P(21)⊕P(22)⊕P(23)⊕P(24) )
Izračunati niz zaštitnih bitova: 10100. Zaštićeni niz bitova: 001101001000001101010101. Niz nakon djelovanja pogreške: 001101001100001101010101. Očitani niz zaštitnih bitova: 10100. Izračunati niz zaštitnih bitova: 11110. Pogreška je na 10100 XOR 11110 = 01010 = 10(10). Niz nakon ispravljanja pogreške: 001101001000001101010101. 2.8. Zadatak Potrebno je zaštititi slijedeći niz bitova: 100110000010100. Potrebno je koristiti Hammingov kod uz parni paritet. Pogreška neka djeluje na 19. bit.
Potrebno je 5 zaštitnih bitova. C(1)=P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13)⊕P(15)⊕P(17)⊕P(19) C(2)=P(3)⊕P(6)⊕P(7)⊕P(10)⊕P(11)⊕P(14)⊕P(15)⊕P(18)⊕P(19) C(4)=P(5)⊕P(6)⊕P(7)⊕P(12)⊕P(13)⊕P(14)⊕P(15)⊕P(20) C(8)=P(9)⊕P(10)⊕P(11)⊕P(12)⊕P(13)⊕P(14)⊕P(15) C(16)=P(17)⊕P(18)⊕P(19)⊕P(20)
Izračunati niz zaštitnih bitova: 10000. Zaštićeni niz bitova: 00100010100000110100. Niz nakon djelovanja pogreške: 00100010100000110110. Očitani niz zaštitnih bitova: 10000. Izračunati niz zaštitnih bitova: 00011. Pogreška je na 10000 XOR 00011 = 10011 = 19(10). Niz nakon ispravljanja pogreške: 00100010100000110100. 2.9. Zadatak Potrebno je zaštititi slijedeći niz bitova: 1111010001. Potrebno je koristiti Hammingov kod uz neparni paritet. Pogreška neka djeluje na 12. bit.
Potrebno je 4 zaštitnih bitova.
Zaštitno kodiranje. Brojevni sustavi. C(1)=Komplement( C(2)=Komplement( C(4)=Komplement( C(8)=Komplement(
35
P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13) ) P(3)⊕P(6)⊕P(7)⊕P(10)⊕P(11)⊕P(14) ) P(5)⊕P(6)⊕P(7)⊕P(12)⊕P(13)⊕P(14) ) P(9)⊕P(10)⊕P(11)⊕P(12)⊕P(13)⊕P(14) )
Izračunati niz zaštitnih bitova: 1100. Zaštićeni niz bitova: 00111111010001. Niz nakon djelovanja pogreške: 00111111010101. Očitani niz zaštitnih bitova: 1100. Izračunati niz zaštitnih bitova: 0000. Pogreška je na 1100 XOR 0000 = 1100 = 12(10). Niz nakon ispravljanja pogreške: 00111111010001. 2.10. Zadatak Poznato je da je 001100(2) ispravna Hammingova kodna riječ. Napišite sve preostale kodne riječi koje pripadaju tom kodu.
Kako bismo otkrili o kojem se Hammingovom kodu radi, potrebno je utvrditi broj podatkovnih bitova u riječi, broj zaštitnih bitova u riječi te korišteni paritet. Krenimo redom. Poznato je da navedena riječ pripada (nekom) Hammingovom kodu. To znači da je oblika: C 1 ?
C 2 ?
P 3
C 4 ?
P 5
P 6
Jednu kodnu riječ već znamo, pa je možemo upisati: C 1 0
C 2 0
P 3 1
C 4 1
P 5 0
P 6 0
Također znamo da je riječ ispravna. Ako je korišten parni paritet, tada mora vrijediti: C(1)=P(3)⊕P(5) C(2)=P(3)⊕P(6) C(4)=P(5)⊕P(6)
Provjerimo to. C(1) = P(3)⊕P(5) = 1⊕0 = 1 ≠ 0 (pročitano iz tablice) C(2) = P(3)⊕P(6) = 1⊕0 = 1 ≠ 0 (pročitano iz tablice) C(4) = P(5)⊕P(6) = 0⊕0 = 0 ≠ 1 (pročitano iz tablice)
Uz uporabu parnog pariteta nismo dobili zaštitne bitove kakvi se nalaze u zadanoj kodnoj riječi. Štoviše, dobili smo točno njihove komplemente, što upućuje na uporabu
36
Zbirka riješenih zadataka
neparnog pariteta. Provjerimo dakle koje bismo zaštitne bitove dobili da je korišten neparni paritet. Tada mora vrijediti: C(1)=Komplement(P(3)⊕P(5))=Komplement(1⊕0)=Komplement(1)=0 C(2)=Komplement(P(3)⊕P(6))=Komplement(1⊕0)=Komplement(1)=0 C(4)=Komplement(P(5)⊕P(6))=Komplement(0⊕0)=Komplement(0)=1
Vidimo da zaštitni bitovi izračunati uz pretpostavku neparnog pariteta odgovaraju zaštitnim bitovima u zadanoj kodnoj riječi, pa zaključujemo da se radi o Hammingovom kodu s neparnim paritetom. Iz zadane kodne riječi također možemo pročitati i koja je podatkovna riječ zaštićena. Radi se o riječi 100(2). Kako je to trobitna riječ, postoji još 7 mogućih riječi: 000(2), 001(2), 010(2), 011(2), 101(2), 110(2) te 111(2). Kako sada znamo da trebamo koristiti neparni paritet, odnosno da mora vrijediti: C(1)=Komplement(P(3)⊕P(5)) C(2)=Komplement(P(3)⊕P(6)) C(4)=Komplement(P(5)⊕P(6))
možemo izračunati zaštitne bitove i za preostale podatkovne riječi. Podatkovna riječ
Hammingova riječ
000(2) 001(2) 010(2) 011(2) 100(2) 101(2) 110(2) 111(2)
110100(2) 100001(2) 010010(2) 000111(2) 001100(2) 011001(2) 101010(2) 111111(2)
2.11. Zadatak Pretpostaviti da je kroz nesiguran komunikacijski kanal poslana Hammingova kodna riječ, a primljena je kodna riječ 000011011100101. Da li je nastupila pogreška? Na kojem mjestu, i kako se to matematički može izračunati? Kako glasi podatak koji je poslan (ako je najviši bit podatka spremljen na prvo moguće lijevo mjesto u Hammingovoj kodnoj riječi), i kolika je redundancija ovog kodiranja? Korišten je parni paritet.
Primljeni niz bitova: 000011011100101. Očitani niz zaštitnih bitova: 1000. Uz zadanu 15-bitnu riječ i parni paritet vrijede izrazi: C(1)=P(3)⊕P(5)⊕P(7)⊕P(9)⊕P(11)⊕P(13)⊕P(15) C(2)=P(3)⊕P(6)⊕P(7)⊕P(10)⊕P(11)⊕P(14)⊕P(15)
Zaštitno kodiranje. Brojevni sustavi.
37
C(4)=P(5)⊕P(6)⊕P(7)⊕P(12)⊕P(13)⊕P(14)⊕P(15) C(8)=P(9)⊕P(10)⊕P(11)⊕P(12)⊕P(13)⊕P(14)⊕P(15) Izračunati niz zaštitnih bitova na temelju ovih izraza glasi: 0010. Pogreška je tada na 1000 XOR 0010 = 1010 = 10(10). Dakle, pogreška je očito nastupila, i njezin položaj određen je temeljem razlike sindroma. Niz nakon ispravljanja pogreške: 000011011000101. Podatak koji je poslan: 01101000101. Redundancija kodiranja u ovom slučaju iznosi: R=
r 4 = = 0,27 n 15
2.12. Zadatak Zadan je broj x=177,296875(10) (u bazi 10). Potrebno je taj isti broj zapisati u slijedećim bazama: a) 2 b) 8 c) 16
a) Baza 2 Broj je potrebno promatrati kao cijeli broj plus decimalni ostatak. Cijeli broj pretvara se u drugu bazu postupkom uzastopnog dijeljenja novom bazom, a decimalni ostatak postupkom uzastopnog množenja novom bazom.
177 88 44 22 11 5 2 1
: : : : : : : :
Pretvorba cijelog broja rezultat ostatak baza dijeljenja dijeljenja 2 = 88 1 2 = 44 0 2 = 22 0 2 = 11 0 2 = 5 1 2 = 2 1 2 = 1 0 2 = 0 1
smjer čitanja
Kod postupka uzastopnog množenja decimalni se dio uzastopno množi s bazom. Ukoliko rezultat množenja postane veći ili jednak 1, cijeli dio se pamti, a u nastavak množenja ulazi samo decimalni ostatak.
38
Zbirka riješenih zadataka
0,296875 0,59375 0,1875 0,375 0,75 0,5 0
⋅ ⋅ ⋅ ⋅ ⋅ ⋅
Pretvorba decimalnog dijela broja cjelobrojni baza rezultat dijeljenja dio = 0,59375 0 2 = 1,1875 1 2 = 0,375 0 2 = 0,75 0 2 = 1,5 1 2 = 1 1 2
smjer čitanja
Možemo pisati: 177,296875(10) = 10110001,010011(2). b) Baza 8 Ponovimo postupak opisan u a).
baza 177 : 22 : 2 :
8 8 8
Pretvorba cijelog broja rezultat ostatak smjer čitanja dijeljenja dijeljenja = 22 1 = 2 6 = 0 2
Pretvorba decimalnog dijela broja cjelobrojni smjer čitanja baza rezultat dijeljenja dio = 2,375 0,296875 ⋅ 8 2 = 3 0,375 ⋅ 8 3 0 Možemo pisati: 177,296875(10) = 261,23(8). c) Baza 16 Ponovimo postupak opisan u a).
baza 177 : 11 :
16 16
Pretvorba cijelog broja rezultat ostatak smjer čitanja dijeljenja dijeljenja = 11 1 (1) = 0 11 (B)
Zaštitno kodiranje. Brojevni sustavi.
39
Pretvorba decimalnog dijela broja cjelobrojni baza rezultat dijeljenja dio 0,296875 ⋅ 16 = 4,75 4 (4) 0,75 ⋅ 16 = 12 12 (C) 0
smjer čitanja
Možemo pisati: 177,296875(10) = B1,4C(16). 2.13. Zadatak Potrebno je zapisati broj 261,23(8) u bazi: a) 2 b) 16 Brojeve čije su baze potencije istog broja (npr. 8=23 i 2=21) možemo pretvarati iz baze u bazu razvojem odnosno grupiranjem. a) Baza 2 Kako je 8=23, svaku ćemo znamenku broja zapisanog u bazi 8 pretvoriti u troznamenkasti broj prikazan u bazi 2 (tj. 21): 2 010
6 110
1 001
, ,
2 010
3 011
(8) (2)
Dakle, 2(8) se razvije u 010(2); na isti način razvijemo i ostale znamenke. 261,23(8) = 010110001,010011(2) = 10110001,010011(2) b) Baza 16 Kako je 16=24, za prikaz jedne znamenke trebamo 4 bita. Izvorno je broj zapisan u bazi 8=23, te za prikaz jedne znamenke treba 3 bita. Konverziju možemo obaviti posredno, prevodeći broj metodom razvoja iz oktalnog (baza 8) u binarni zapis (baza 2), pa metodom grupiranja iz binarnog u heksadekadski zapis (baza 16). Pretvorba u binarni oblik: 2 010
6 110
1 001
, ,
2 010
3 011
(8) (2)
40
Zbirka riješenih zadataka
Broj 10110001,010011(2) sada grupiramo u grupe od po četiri bita (počevši od decimalnog zareza na lijevo i desno). Na početak i kraj broja možemo dodati proizvoljan broj nula (masnim slovima u nastavku), pa imamo: 1011 B
0001 1
, ,
0100 4
1100 C
(2) (16)
tj. 261,23(8) = B1,4C(16). 2.14. Zadatak Potrebno je obaviti slijedeće pretvorbe: a) AE7,24(16) u dekadsku, binarnu i oktalnu bazu. b) 731,56(8) u dekadsku, binarnu i heksadekadsku bazu.
a) AE7,24(16) = 10⋅162+14⋅161+7⋅160+2⋅16-1+4⋅16-2 = 2791,140625(10). AE7,24(16) = 1010 1110 0111, 0010 0100(2) AE7,24(16) = 101 011 100 111, 001 001 000(2) = 5347,110(8) b) 731,56(8) = 7⋅82+3⋅81+1⋅80+5⋅8-1+6⋅8-2 = 473,71875(10) 731,56(8) = 111 011 001, 101 110(2) 731,56(8) = 0001 1101 1001, 1011 1000(2) = 1D9,B8(16)
ZADACI ZA VJEŽBU 1.
Brojeve: 12.15, 253 i 0.275 prikazati u binarnom, oktalnom i heksadekadskom obliku.
2.
Prijemnik je s komunikacijskog kanala primio sljedeće poruke: 000111, 011101, 111111. Ako je poznato da su primljene poruke podaci zaštićeni Hammingovim kodom, te uz pretpostavku da je broj pogrešnih poruka manji od broja ispravnih poruka, otkriti da li je za kodiranje korišten parni ili neparni paritet, te koji su podaci poslani.
3.
Pismeni ispit 21.09.2004. Poruku ABBA potrebno je zaštititi uporabom uzdužnog + poprečnog pariteta (koristiti neparni paritet). Za svako slovo šalje se njegov 8-bitni ASCII kod (A ima kod 65). Prikazati zaštićenu poruku, te izračunati redundanciju kodiranja. Pokazati kako se obavlja ispravljanje ako se uslijed djelovanja smetnje promijeni najznačajniji bit prvog slova poruke.
Osnovni logički sklopovi.
41
3. Osnovni logički sklopovi. 3.1. Zadatak Na slici je prikazan sklop ostvaren uporabom I i ILI logičkih sklopova. a
&
b
≥1
c
f
&
d
Koju funkciju ostvaruje taj sklop? a) Napišite logički izraz koji definira funkciju sklopa. b) Napišite VHDL opis temeljen na funkcijskom ponašanju sklopa. c) Napišite VHDL opis temeljen na strukturnoj građi sklopa.
a) Označimo s i1 i i2 interne međurezultate. a b
&
c d
i1
≥1
i2
&
f
Možemo pisati: i1 = a ⋅ b i 2 = i1 + c f = i 2 ⋅ d = (i1 + c ) ⋅ d = (a ⋅ b + c ) ⋅ d
b) Označimo "granice" sklopa, ulaze u sklop te izlaze iz sklopa. Nazovimo sklop "sklop1". U VHDL-u opis sklopa sastoji se od dva dijela: opis sučelja preko kojega sklop komunicira s vanjskim svijetom (ENTITY ključna riječ), te opis djelovanja sklopa (što je moguće ostvariti na dva načina: funkcijskim odnosno ponašajnim opisom te strukturnim opisom; ARCHITECTURE ključna riječ).
42
Zbirka riješenih zadataka
a b
&
sklop1
i1
c
≥1
d
i2
&
f
Opis sklopa u VHDL-u temeljen na funkcionalnosti sklopa prikazan je u nastavku. library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY sklop1 IS PORT( a, b, c, d: IN std_logic; f : OUT std_logic ); END sklop1; ARCHITECTURE funkcijska OF sklop1 IS BEGIN f <= ((A AND B) OR C) AND D; END funkcijska;
c) Kako bismo mogli opisati sklop na strukturnoj razini, najprije je potrebno definirati sve potrebne "pod"-sklopove. Dakle, najprije ćemo definirati ILI sklop - sklopOR (funkcijskim opisom), zatim I sklop - sklopAND (također funkcijskim opisom) i konačno traženi sklop - sklop1 strukturnim opisom. Opis ILI sklopa: library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY sklopOR IS PORT( x1, x2: IN std_logic; y : OUT std_logic ); END sklopOR; ARCHITECTURE funkcijskaOR OF sklopOR IS BEGIN y <=x1 OR x2; END funkcijskaOR;
Osnovni logički sklopovi.
43
Opis I sklopa: library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY sklopAND IS PORT( x1, x2: IN std_logic; y : OUT std_logic ); END sklopAND; ARCHITECTURE funkcijskaAND OF sklopAND IS BEGIN y <=x1 AND x2; END funkcijskaAND;
Opis zadanog sklopa: library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY sklop1 IS PORT( a, b, c, d: IN std_logic; f : OUT std_logic ); END sklop1; ARCHITECTURE strukturna OF sklop1 IS SIGNAL i1, i2: std_logic; COMPONENT sklopOR PORT( x1, x2: IN std_logic; y : OUT std_logic ); END COMPONENT; COMPONENT sklopAND PORT( x1, x2: IN std_logic; y : OUT std_logic ); END COMPONENT; BEGIN c1: sklopAND PORT MAP (a, b, i1);
--c2: sklopOR PORT MAP (i1, c, i2); --c3: sklopAND PORT MAP (x2 => d, x1 => i2, y => f); --END strukturna;
pozicijsko povezivanje pozicijsko povezivanje povezivanje putem imena
Kod povezivanja signala komponenti pomoću kojih se opisuje struktura sklopa s internim signalima koje koristi sam sklop ili s njegovim ulaznim/izlaznim vratima (ključna riječ PORT MAP) moguće je povezivanje na dva načina. Kod pozicijskog povezivanja navode se samo signali komponente koja se opisuje, a povezivanje je implicitno s vratima komponente i to onim redoslijedom kako je to definirano u COMPONENT dijelu opisa. Kod povezivanja preko imena eksplicitno se navodi koji signal komponente se spaja na koji signal sklopa, pri čemu redoslijed ovog nabrajanja ne mora slijediti redoslijed definiran u COMPONENT dijelu. Dodatak zadatku: kako bi se provjerilo da li se opisana komponenta doista ponaša u skladu s našim očekivanjima, potrebno je obaviti testiranje rada komponente (npr. putem generiranja test uzoraka s poznatim izlazima i provjerom podudarnosti s izlazima koje daje sklop za te uzorke).
44
Zbirka riješenih zadataka
Za vježbu. Ponovite zadatak za sklop prikazan na slijedećoj slici (sklop2). Provjerite uporabom Xilinx-ovog simulatora s laboratorijskih vježbi da li su opisi koje ste generirali rješavajući b) i c) dio zadatka jednaki na ponašajnoj razini. a
&
b
≥1 c
1
&
f
1
3.2. Zadatak Zadana je tranzistorska sklopka prema slici. Poznati su slijedeći podaci: U CC = −U BB = 5V RC = 1kΩ R1 = 10kΩ R2 = 100kΩ
hFE = 50 U CEzas = 0.3V U BEzas = 0.8V I CB 0 = 0.1µA
+UCC
RC
U ul1 = 4V U ul 2 = 0.3V
R1 Uizl Uul
R2
a) Provjeriti da li tranzistor ulazi u zasićenje i zapiranje prema očekivanju.
-UBB
b) Neka su tolerancije svih otpornika i izvora napajanja 10%. Provjerite da li i u najgorem slučaju sklopka funkcionira ispravno.
a) Kada je na ulaz sklopa spojena visoka naponska razina (Uul1) očekujemo da tranzistor vodi (štoviše, da se nalazi u zasićenju) i da je izlazni napon Uizl vrlo mali. Kada je tranzistor u zasićenju, napon baza – emiter iznosi otprilike 0.8V (UBEzas), a napon kolektor – emiter otprilike 0.3V (UCEzas). Kada na ulaz sklopa spojimo nisku naponsku razinu, očekujemo da tranzistor ode u zapiranje i ne vodi, čime izlazni napon skače otprilike na iznos od +UCC (ukoliko je izlaz neopterećen). Provjerit ćemo ova dva slučaja koristeći se oznakama napona i struja kao na slici.
+UCC
RC R1 Uul
I1
I CB 0 IB
I2
UBE
R2 -UBB
Provjera zasićenja. U zasićenju, na ulazu je Uul=Uul1, UBE=UBEzas, UCE=UCEzas, dok ICB0 ne postoji.
Uizl
Osnovni logički sklopovi.
45
Tranzistor je u zasićenju kada vrijedi:
IB ≥
IC hFE
odnosno kada je bazna struja barem dovoljna (a poželjno i veća) od struje potrebne za potporu kolektorske struje. Zato je potrebno izračunati ove struje i provjeriti da li prethodna nejednadžba vrijedi. I B = I1 − I 2 =
I Czas =
U R1 R1
−
U R2 R2
=
U ul1 − U BEzas U BB + U BEzas − = 0.262mA R1 R2
U CC − U CEzas = 4.7 mA RC
0.262mA ≥
4.7mA = 0.094mA 50
Vidimo da je nejednakost zadovoljena, pa je tranzistor doista u zasićenju. Provjera zapiranja. U zapiranju, na ulazu je Uul=Uul2, UBE=UBezap=? dok ICB0 sada postoji. U tom slučaju struju I2 možemo odrediti superpozicijom, pa zatim napon UBezap iznosi: U BEzap = I 2 ⋅ R2 − U BB
Superpozicija kaže da struju I2 možemo odrediti tako da gledamo utjecaj jednog po jednog naponskog odnosno strujnog izvora (dok su ostali naponski izvori kratko spojeni a strujni izvori otpojeni). U ulaznom krugu imamo slijedeće naponske izvore: Uul2 i UBB te strujni izvor ICB0. Možemo pisati:
I2 =
Utjecaj Uul2 kada je UBB kratko spojen a ICB0 otpojen
R1 U ul 2 U BB + + I CB 0 R1 + R2 R1 + R2 R1 + R2
Utjecaj UBB kada je Uul2 kratko spojen a ICB0 otpojen
Uvrštavanjem dobivamo: U ul 2 U BB R1 ⋅ R2 − U BB = −0.18V U BEzap = + + I CB 0 R1 + R2 R1 + R2 R1 + R2
Utjecaj ICB0 (strujno djelilo!) kada su Uul2 i UBB kratko spojeni
46
Zbirka riješenih zadataka
Tranzistor je sigurno u zapiranju jer je UBEzap manji od napona praga vođenja Uγ koji iznosi oko 0.3V. b) Uz zadane tolerancije potrebno je ponovno provjeriti da li je tranzistor u zasićenju odnosno u zapiranju, ovisno o ulaznom naponu. Provjera zasićenja. Najnepovoljniji slučaj za zasićenje je kada je struja baze minimalna, a struja kolektora maksimalna, jer se tada može dogoditi da više ne vrijedi odnos:
IB ≥
IC hFE
Minimalne vrijednosti označavat ćemo podvlakom, a maksimalne crticom iznad vrijednosti. Minimalna struja baze odnosno maksimalna struja zasićenja kada bi tranzistor trebao biti u zasićenju iznose (prepisujemo prethodne formule):
I Bzas = I1 − I 2 = =
I Czas = =
U R1 R1
−
U R2 R2
=
U ul1 − U BEzas U BB + U BEzas − R2 R1
U ul1 − U BEzas (1 + 0.1) ⋅U BB + U BEzas − = 0.221mA (1 + 0.1) ⋅ R1 (1 − 0.1) ⋅ R2 U CC − U CEzas RC (1 + 0.1) ⋅ U CC − U CEzas = 5.78mA (1 − 0.1) ⋅ RC
Vidimo da je tranzistor još uvijek u zasićenju, jer vrijedi: 0.221mA ≥
5.78mA = 0.1156mA 50
Provjera zapiranja. U U BB R1 ul 2 ⋅ R −U + + I CB 0 U BEzap = 2 BB R1 + R2 R1 + R2 R1 + R2 U ul 2 (1 − 0.1) ⋅U BB (1 − 0.1) ⋅ R1 ⋅ (1 + 0.1) ⋅ R2 − (1 − 0.1) ⋅ U BB = −0.062V = + + I CB 0 (1 − 0.1) ⋅ R1 + (1 + 0.1) ⋅ R2 (1 − 0.1) ⋅ R1 + (1 + 0.1) ⋅ R2 (1 − 0.1) ⋅ R1 + (1 + 0.1) ⋅ R2
Vidimo da je tranzistor i u najgorem slučaju sigurno u zapiranju jer je UBEzap manji od napona praga vođenja Uγ.
Osnovni logički sklopovi.
47
3.3. Zadatak Diodni I sklop spojen je s invertorom iz prethodnog zadatka kojemu je na ulaz dodana dioda. a) Provjerite da li taj sklop funkcionira i koju logičku funkciju ostvaruje. b) Ako na izlaz tog sklopa spojimo ulaze identičnih sklopova, postoji li kakvo ograničenje na njihov broj? Objasnite. c) Ponovite analizu za tolerancije otpora od 10%. +UCC
RC
+UCC
R
R1 Uizl
UulA
Uul
Uizl
UulB
R2 -UBB
Invertor s dodanom diodom
Diodni I sklop +UCC
+UCC
RC
R R1
UulA
Uizl
UulB
R2 -UBB
Diodni I sklop spojen na invertor s dodanom diodom Poznati su slijedeći podaci: U CC = −U BB = 5V RC = 1kΩ R1 = 10kΩ R2 = 100kΩ
hFE = 100 U CEzas = 0.3V U BEzas = 0.8V I CB 0 = 0µA
U ul1 = 5V U ul 2 = 0.3V R = 1kΩ
a) Sklop najprije računa logičku I operaciju ulaza, a zatim rezultat komplementira invertorom. Dakle, logička funkcija sklopa je NE( A I B ), tj.: f = A⋅ B = A + B
48
Zbirka riješenih zadataka
Analizirajmo rad sklopa. Označimo na slici dodatne napone koji će nam pomoći u analizi sklopa. +UCC +UCC
IR
RC
R D
UulA UulB
R1 Uizl
UAB
UD
UBE
R2 -UBB
Kada je na jednom ulazu sklopa niska razina, npr. UulA = Uul2 = 0.3V (vrijednost drugog ulaza neka je visoka razina), dotična dioda provede i na njoj je pad napona od 0.7V. Tada je: U AB = U ulA + U D = 0.3 + 0.7 = 1V Treba uočiti da druga dioda ne vodi jer je na njoj pad napona: U AB − U ulB = 1 − 5 = −4V < 0.7V Da bi tranzistor došao duboko u zasićenje, napon baza-emiter mora biti 0.8V (a minimalno 0.7V za početak zasićenja). Isto tako, dioda D mora provesti kako bi mogla poteći struja baze, što znači da na njoj mora također biti pad napona od 0.7V. Slijedi da bi napon UAB morao biti barem UBEzas+UD=0.7+0.7=1.4V (zapravo bi trebao biti još viši zbog pritezanja napona baze na –UBB preko R2). Međutim, napon UAB je samo 1V što nije dovoljno da provedu i dioda i tranzistor pa oni ne vode. Tranzistor je dakle u zapiranju i izlazni napon Uizl=UCC=+5V. Ista situacija bila bi kada bi UulB bio nizak a UulA visok, ili oba napona niska. Teče struja IR za koju osjenčani dio sheme uopće ne postoji, a njezin iznos je: IR =
U CC − U AB 5 − 1 = = 4mA R 1000
Tek kada su UulA i UulB oba visoka (UulA=UulB=Uul1=5V) ulazne diode ne vode. Sada je napon UAB dovoljno visok da provedu dioda D i tranzistor. Imamo slijedeću situaciju:
Osnovni logički sklopovi.
49 +UCC
+UCC
RC
R D UulA UulB
UAB
UD
R1 I1
IB I2
Uizl
UBE
R2 -UBB
Struje I1, I2 te IB iznose:
I1 =
U CC − U D − U BEzas 5 − 0.7 − 0.8 = 0.3182mA = R + R1 1k + 10k
I2 =
U BEzas + U BB 0.8 + 5 = = 0.058mA R2 100k
I B = I1 − I 2 = 0.3182m − 0.058m = 0.2602mA Napon UAB iznosi: U AB = U CC − I1 ⋅ R = 5 − 0.3182m ⋅ 1k = 4.6818V Budući da tranzistor vodi, struja kolektora iznosi: IC =
U CC − U CEzas 5 − 0.3 = = 4.7mA RC 1k
Provjerimo da je tranzistor doista u zasićenju: 4.7 mA = I C ≤ hFE ⋅ I B = 26.02mA b) Promotrimo najprije situaciju kada je izlaz iz sklopa visoka naponska razina, tj. kada je barem jedan od ulaza u sklop spojen na nisku naponsku razinu:
50
Zbirka riješenih zadataka
+UCC
R
+UCC +UCC
RC
I1 1
R
IR
D UulA
R1 Uizl
UulB
UAB
UD
+UCC
R
UBE
R2
I1
-UBB n
Kako je Uizl visoka naponska razina, ulazne diode slijedećeg stupnja ne vode. Struja kolektora tada je nula, i broj ulaza slijedećeg stupnja koji je spojen nema nikakvog utjecaja. Ako se na oba ulaza spoji visoka naponska razina, imamo slijedeću situaciju: +UCC
IR
+UCC +UCC
R
RC
1
I1 D
UulA
R1 Uizl
UulB
UAB
R
UD
+UCC
IR
UBE
R2
R
-UBB n
Struje I1, I2 i IB izračunali smo već u prethodnom dijelu zadatka. Međutim, sada struja kolektora izlaznog tranzistora više nije uvjetovana samo Strujom kroz otpor RC, već i strujama IR koje teku iz ulaznog stupnja sklopova povezanih na izlaz! Struja kolektora tada iznosi:
IC =
U CC − U CEzas + n ⋅ IR RC
Struja IR iznosi: IR =
U CC − U D − U CEzas = 4mA R
Osnovni logički sklopovi.
51
Uvrštavanjem izraza za IR u izraz za IC slijedi:
U CC − U CEzas U − U D − U CEzas + n ⋅ CC RC R Prisjetimo se, da bi tranzistor bio u zasićenju, struja kolektora IC ograničena je strujom baze IB! Mora vrijediti: IC =
I C ≤ hFE ⋅ I B Uvrstimo li izraz za IC u prethodnu nejednadžbu, možemo izraziti n:
U − U D − U CEzas U CC − U CEzas + n ⋅ CC ≤ hFE ⋅ I B R RC
→ n≤
U CC − U CEzas RC = 5.33 − U D − U CEzas R
hFE ⋅ I B − U CC
Zaključujemo da n mora biti manji ili jednak 5 da bi sklop ispravno funkcionirao. Ukoliko bi n bio veći od 5, struja kolektora bila bi prevelika za struju baze te bi, da se uspostavi ravnoteža, tranzistor izašao iz zasićenja i ušao u aktivno područje, čime bi se napon UCE znatno povećao. Povećanje ovog napona bilo bi toliko koliko je potrebno da se struja kolektora izjednači sa strujom koju može podržati bazna struja, odnosno dok ne bi vrijedilo: I C = hFE ⋅ I B Naime, uvidom u izraz koji opisuju IC, vidi se da je ta struja građena od komponente kroz otpor RC i struje IR (tj. n⋅ IR). Obje ove komponente padaju povećanjem napona UCE. U digitalnoj elektronici ograničenje ovog tipa naziva se fan-out, odnosno faktor grananja na izlazu koji govori koliko se maksimalno ulaza istovjetnih sklopova može spojiti na izlaz sklopa, a da sklop i dalje funkcionira ispravno. c) Kada je barem jedan od ulaza u sklop na niskoj naponskoj razini, tranzistor je u zapiranju, i već smo vidjeli da nema posebnih ograničenja na rad sklopa. Kada su oba ulaza na visokoj naponskoj razini, tranzistor će provesti. U najgorem slučaju. Struja baze biti će minimalna, a struja kroz kolektor tranzistora maksimalna. Izračunajmo te struje za najgori slučaj.
I B = I1 − I 2 =
U CC − U D − U BEzas U BEzas + U BB − R + R1 R2
Minimalna struja baze bit će (uz tolerancije otpora):
52
Zbirka riješenih zadataka
I B = I1 − I 2 =
U CC − U D − U BEzas U BEzas + U BB − = 0.2248mA R2 R + R1
Struja kolektora određena je sa:
IC =
U − U D − U CEzas U CC − U CEzas + n ⋅ CC R RC
Što je maksimalno ako su svi otpori R sklopova spojenih na izlaz minimalni, kao i otpor RC u izlaznom krugu tranzistora. IC =
U CC − U CEzas U − U D − U CEzas + n ⋅ CC RC R
Uvrštavanjem u nejednadžbu:
I C ≤ hFE ⋅ I B može se izračunati n: U CC − U CEzas RC = 3.883 − U D − U CEzas R
hFE ⋅ I B − n≤
U CC
Dakle, ako se dopuste tolerancije otpora od 10%, u najgorem slučaju faktor grananja iznosi samo 3 sklopa! 3.4. Zadatak Za neki logički sklop zadani su sljedeći podaci: UILmax = 2V, UIHmin = 3.5V, UOLmax = 0.5V, UOHmin = 4.2V. Odredite granice istosmjerne smetnje tog sklopa. Ako se izlaz sklopa pri niskoj naponskoj razini može nadomjestiti otporom RL = 100Ω prema masi, a izlaz sklopa pri visokoj naponskoj razini otporom RH = 1000Ω prema napajanju UCC, izračunajte koliko iznose struje IOLmax i IOHmax. Neka je UCC = 5V. Ako je poznato da su IIHmax = 0.16 mA te IILmax = 0.8 mA, izračunajte koliko iznosi faktor grananja izlaza (fan-out) zadanog sklopa. UILmax predstavlja maksimalni napon koji će se na ulazu još uvijek protumačiti kao niska naponska razina. UOLmax predstavlja maksimalnu vrijednost napona koju će sklop generirati na izlazu u slučaju kada je izlaz nizak. UOLmax tipično je manji od UILmax, a njihova razlika čini granicu istosmjerne smetnje pri niskoj razini: U GS , L = U IL max − U OL max = 2 − 0.5 = 1.5V
Osnovni logički sklopovi.
53
UIHmin predstavlja minimalni potreban napon na ulazu koji će se protumačiti kao visoka naponska razina. UOHmin predstavlja minimalnu vrijednost napona koju će sklop generirati na izlazu u slučaju kada je izlaz visok. UOHmin tipično je veći od UIHmin, a njihova razlika čini granicu istosmjerne smetnje pri visokoj razini: U GS , H = U OH min − U IH min = 4.2 − 3.5 = 0.7 V
Granica istosmjerne smetnje tada se definira kao manja od ove dvije vrijednosti, pa vrijedi: U GS = min(U GS ,L , U GS , H ) = min(1.5, 0.7) = 0.7 V
Struju IOLmax možemo izračunati iz sljedećeg razmatranja. Po pretpostavci zadatka izlaz sklopa u slučaju kada je na izlazu niska naponska razina može se nadomjestiti otporom RL prema masi, kao što je prikazano na nadomjesnoj shemi (slika 1-a). +UCC RH IOLmax
IOHmax
Uizl ≤ UOLmax
RL
Uizl ≥ UOHmin
a) izlaz je L
b) izlaz je H
Slika 1. Nadomjesna shema izlaznog stupnja sklopa
Struja IOL ulazi u sklop i na otporu RL stvara pad napona U izl = I OL ⋅ RL podižući tako napon na izlazu sklopa. Kako taj napon ne smije prerasti UOLmax koji je unaprijed zadan, može se izračunati kolika je maksimalna struja IOL koja će na izlazu podići napon na UOLmax, i tu ćemo struju nazvati IOLmax:
U OL max = I OL max ⋅ RL
⇒
I OL max =
U OL max 0.5 = = 5 mA RL 100
Struju IOHmax možemo izračunati koristeći pretpostavku da se izlaz sklopa u slučaju kada je na izlazu visoka naponska razina može se nadomjestiti otporom RH prema napajanju, kao što je prikazano na nadomjesnoj shemi (slika 1-b). Struja IOH izlazi iz sklopa i na otporu RH stvara pad napona rušeći tako napon na izlazu sklopa U izl = U CC − I OH ⋅ RH . Kako taj napon ne smije pasti ispod UOHmin koji je unaprijed zadan, može se izračunati kolika je maksimalna struja IOH koja će na izlazu spustiti napon na UOHmin, i tu ćemo struju nazvati IOHmax: U OH min = U CC − I OH max ⋅ RH
⇒
I OH max =
U CC − U OH min 5 − 4.2 0.8 = = = 0.8 mA RH 1000 1000
54
Zbirka riješenih zadataka
Prilikom izračuna faktora grananja izlaza zapravo nas zanima koliko istovjetnih sklopova možemo priključiti na izlaz jednog sklopa (a da sklop, dakako, radi ispravno). Tu moramo provjeriti opet dva slučaja. Kada je izlaz sklopa na niskoj naponskoj razini, on može primati struju ne veću od IOLmax. No u tom slučaju iz svakog od ulaza sklopova priključenih na izlaz promatranog sklopa u najgorem slučaju dolazi struja IILmax. Kako za ispravan rad sklopa suma tih struja ne smije prekoračiti iznos IOLmax slijedi:
nL ⋅ I IL max ≤ I OL max
⇒
nL =
I OL max 5 = = 6.25 I IL max 0.8
nL je faktor grananja izlaza za slučaj kada je napon na izlazu nizak. Kada je izlaz sklopa na visokoj naponskoj razini, on može davati struju ne veću od IOHmax. U tom slučaju u svaki od ulaza sklopova priključenih na izlaz promatranog sklopa u najgorem slučaju ulazi struja IIHmax. Kako za ispravan rad sklopa suma tih struja ne smije prekoračiti iznos IOHmax slijedi:
nH ⋅ I IH max ≤ I OH max
⇒
nH =
I OH max 0.8 = =5 I IH max 0.16
nH je faktor grananja izlaza za slučaj kada je napon na izlazu visok. Kako se faktor grananja definira kao najveći broj ulaza sljedećeg stupnja pri kojem svi sklopovi još rade ispravno (neovisno o stanju izlaza), za njegov izračun treba uzeti manji od izračunatih faktora:
n = min( nL , nH ) = min( 6.25,5) = 5
Osnovni logički sklopovi.
55
3.5. Zadatak Kao priprema za sljedeće zadatke, izvedite izraz za izlazni napon naponskog dijelila zadanog slikama. +UCC +UCC
R1 R1
R2 R2
UX
UX
U2
a) jednostavno naponsko dijelilo
b) naponsko dijelilo s dva izvora
Slučaj a)
Slučaj b)
Struja kroz dijelilo iznosi:
Struja kroz dijelilo iznosi:
I=
U CC R1 + R2
I=
Slijedi:
U X = I ⋅ R2 = U CC
U CC − U 2 R1 + R2
Slijedi:
R2 R1 + R2
U X = U 2 + I ⋅ R2 = U 2 + (U CC − U 2 ) = U CC − I ⋅ R1 = U CC − (U CC
R2 R1 + R2 R1 − U2 ) R1 + R2
3.6. Zadatak Na slici su prikazani neopterećeni/opterećeni diodni I sklop kod kojeg su svi ulazu blokirani (ne utječu na rad sklopa) osim jednog. Nacrtajte ovisnost napona UD o naponu Uul, ovisnosti svih struja u sklopu o naponu Uul te prijenosne karakteristike za sklopove sa slike. Pretpostavite da se napon Uul može mijenjati od 0V do UCC=5V. Diodu promatrati kao idealni element (pri vođenju UD=0.7V i otpor je 0Ω, pri nevođenju predstavlja beskonačni otpor). R=1kΩ, RT=4kΩ.
56
Zbirka riješenih zadataka +UCC I
+UCC I
R
UD
I2
R I1
Uul
UD
UX
a) neopterećen izlaz
Uul
RT
UX
b) opterećen izlaz
Slučaj a) Krenimo u razmatranje od Uul=UCC. Napon na diodi tada iznosi: U D = U X − U ul = U CC − U CC = 0 V i dioda ne vodi. U sklopu također ne teče nikakva struja. Počnemo li smanjivati Uul, napon na diodi počinje rasti. Struje i dalje ne teku, i napon UX ostaje jednak UCC. Kada UD dostigne vrijednost od 0.7V, dioda počinje voditi. To se dakle dogodi kod ulaznog napona Uul*: U D = U CC − U ul = 0.7V
⇒ U ul* = U CC − U D = 5 − 0.7 = 4.3V
Daljnjim smanjivanjem napona Uul napon na diodi ostaje konstantnih 0.7V jer dioda vodi. To za posljedicu ima spuštanje napona UX koji je do tada bio konstantan (iznosa UCC). Budući da dioda vodi, naponi UD, Uul i UX povezani su sljedećom relacijom: U ul + U D = U X Sada kroz sklop teče struja I određena relacijom: I=
U CC − U D − U ul R
Spuštanjem napona Uul ova je struja sve veća, zbog čega se na otporu R stvara sve veći pad napona, te izlazni napon UX pada, prema relaciji: U X = U CC − I ⋅ R = U ul + U D Kad napon Uul dođe do nule, UX je minimalan a struja I maksimalna, te iznose: U X = U ul + U D = 0 + 0.7 = 0.7 V I=
U CC − U D − U ul 5 − 0.7 − 0 4.3 = = = 4.3 mA R 1k 1k
Osnovni logički sklopovi.
57
Ovisnost napona UD o naponu Uul, ovisnost struje I o naponu Uul te ovisnost napona UX o naponu Uul (prijenosna karakteristika – UX je izlazni napon) prikazane su u nastavku. UD [V] 5 4 3 2 1 0.7
0
1
2
3
4 4.3
5
1
2
3
4 4.3
5
1
2
3
4 4.3
5
Uul [V]
UX [V] 5 4 3 2 1 0.7
0
Uul [V]
I [mA] 5 4.3
4 3 2 1 0
Uul [V]
Slučaj b) Krenimo u razmatranje od Uul=UCC. Otpori R i RT čine naponsko dijelilo, te uz pretpostavku da dioda ne utječe na napon UX, vrijedi:
U X = U CC
RT 4k =5 = 4V R + RT 1k + 4k
Napon na diodi tada iznosi: U D = U X − U ul = 4 − 5 = −1V .
Očito je da uz ovaj napon dioda doista ne vodi (pa time ne utječe na napon UX), te provedena analiza vrijedi. U ovom trenutku također vrijedi:
58
Zbirka riješenih zadataka
I = I2 =
U CC 5 = = 1 mA, I1 = 0 mA R + RT 1k + 4k
Počnemo li smanjivati ulazni napon, napon na diodi će polagano rasti. Pri tome sve struje i napon UX ostaju nepromijenjeni, sve do trenutka kada napon na diodi dosegne vrijednost 0.7V. U tom trenutku dioda počinje voditi. To se događa za ulazni napon koji je za 0.7 V manji od napona dijelila: U ul = U X − U D = 4 − 0.7 = 3.3V Daljnjim smanjivanjem ulaznog napona (a zbog vođenja diode) napon UX počinje padati, slijedeći ulazni napon prema formuli: U X = U ul + U D Zbog toga se konačno počinju mijenjati i struje u sklopu, te od ovog trenutka vrijede izrazi:
I=
U CC − U X R
I2 =
UX RT
I1 + I 2 = I
Napon na diodi ostaje konstantnih 0.7V. Smanjivanjem napona Uul do 0V napon UX također se linearno smanjuje do napona U X = U ul + U D = 0 + 0.7 = 0.7 V , struja I raste do iznosa: I=
U CC − (U ul + U D ) 5 − ( 0 + 0.7) 4.3 = = = 4.3 mA , R 1k 1k
struja I2 pada do iznosa
I2 =
U X 0.7 = = 0.175 mA , RT 4k
a struja I1 raste do vrijednosti: I1 = I − I 2 = 4.3 − 0.175 = 4.125 mA Ovisnost napona UD o naponu Uul, ovisnost struja I, I1 i I2 o naponu Uul te ovisnost napona UX o naponu Uul (prijenosna karakteristika – UX je izlazni napon) prikazane su u nastavku.
Osnovni logički sklopovi.
59
UD [V] 5 4 3 2 1
0.7
0
1
2
3 3.3
4
5
0 1 I [mA]
2
3 3.3
4
5
0 1 I1 [mA]
2
3 3.3
4
5
0 1 I2 [mA]
2
3 3.3
4 4.3
5
0
2
3 3.3
4 4.3
5
-1
Uul [V]
UX [V] 5 4 3 2 1 0.7
Uul [V]
5 4.3
4 3 2 1 Uul [V]
5 4.125
4 3 2 1
Uul [V]
5 4.3
4 3 2 1 0.175
1
Uul [V]
60
Zbirka riješenih zadataka
3.7. Zadatak Zadan je sklop prema slici. Grafički prikažite ovisnosti napona UX i struja I, I1 i I2 o naponu Uul. Prikažite prijenosnu karakteristiku. Pretpostavite da su svi elementi idealni. Objasnite kako se može odrediti UIHmin ovog sklopa i komentirajte njegov utjecaj na faktor grananja izlaza. R=1kΩ, RB=5kΩ, RC=1kΩ, UCC=5V, UBEzas=0.7V, UCEzas=0.3V, UD=UD1=0.7V, hFE=100. +UCC +UCC
RC
R Uizl
RB
D1 UulA UulB
Kao pomoć u rješavanju zadatka označimo na slici još i potrebne struje i napone. Isto tako, pretpostavimo da su sve ulazne diode trajno blokirane (tako da ne smetaju) osim jedne na koju dovodimo ulazni napon. +UCC +UCC
RC
R
I
I1
I2
D1
RB
Uul
Uizl UD
UD1 UX
UBEzas
Krenimo u analizu uz pretpostavku da je ulazni napon Uul=UCC. Ako pretpostavimo da je time dioda blokirana (ne vodi), tada ona ne utječe na napon UX. Budući da je tada baza tranzistora preko otpora R i RB i diode D1 spojena na UCC, tranzistor očito vodi, pa vrijedi:
U D1 = 0.7 V , U BEzas = 0.7 V , I = I2 =
U CC − U D1 − U BEzas 5 − 0.7 − 0.7 3.6 = = = 0.6 mA , I1 = 0 mA 1k + 5k 6k R + RB
Napon UX tada se može izračunati kao napon dijelila s dva izvora (jedan od prethodnih zadataka):
Osnovni logički sklopovi.
61
U X = (U BEzas + U D1 ) + (U CC − (U BEzas + U D1 )) ⋅ = ( 0.7 + 0.7) + ( 5 − ( 0.7 + 0.7) ) ⋅ = 4.4 V
RB R + RB
5k 1k + 5k
Budući da vrijedi izraz: U X = U ul + U D slijedi da je napon na diodi D u ovom slučaju negativan: U D = U X − U ul = 4.4 − 5 = −0.6 V Zbog toga dioda D ne vodi, ne utječe na napon UX pa smo potvrdili prethodnu pretpostavku i valjanost računa. Ulazni napon bez ikakvih promjena u radu sklopa možemo smanjivati sve do trenutka kada napon na diodi UD ne dosegne 0.7V, što se dogodi pri naponu: U ul = U X − U D = 4.4 − 0.7 = 3.7 V Od tog trenutka daljnje smanjivanje ulaznog napona povlači za sobom pad napona UX (UD je konstantnih 0.7V a vrijedi U X = U ul + U D ), porast struja I i I1 te pad struje I2. Kad napon UX padne na vrijednost ispod 1.4V, tj.: U X < U D1 + U BEzas = 1.4 V dioda D1 i tranzistor se isključuju, čime struja I2 postaje 0. Ovo se događa kod ulaznog napona: U ul = U X − U D = 1.4 − 0.7 = 0.7 V . Od tog trenutka nadalje vrijede sljedeće relacije za struje: I = I1 =
U CC − (U ul + U D ) , I 2 = 0 mA R
U točki isključenja tranzistora (UX=1.4V) struje I i I1 su iznosile: I = I1 =
U CC − U X 5 − 1.4 3.6 = = = 3.6 mA R 1k 1k
Smanjivanjem ulaznog napona do vrijednosti 0V napon UX postaje 0.7V a struje:
62
Zbirka riješenih zadataka
I = I1 =
U CC − U X 5 − 0.7 4.3 = = = 4.3 mA . R 1k 1k
Prijenosnu karakteristiku dobit ćemo praćenjem izlaznog napona, što će odgovarati praćenju struje I2 koja će ovdje odgovarati struji baze tranzistora, pa će u nastavku biti preimenovana u IB. Počnimo analizu opet od Uul=UCC. Tranzistor je u zasićenju, IB=0.6 mA, UCEzas=0.3V.
IC =
U CC − U CEzas 5 − 0.3 = = 4.7 mA RC 1k
Kako je I C = 4.7 mA ≤ I B ⋅ hFE = 60 mA tranzistor je doista u zasićenju. Dok je tranzistor u zasićenju, izlazni se napon ne mijenja (iznosi UCEzas). Kritični trenutak nastupa kada se dogodi:
I C = 4.7 mA = I B ⋅ hFE
⇒
IB =
IC 4.7 = = 0.047 mA . hFE 100
Naime, daljnjim smanjivanjem struje IB tranzistor više nije u zasićenju već je u NAP-u, i izlazni napon počinje rasti. Pogledajmo kod kojeg se ulaznog napona događa ova promjena. Kombiniranjem izraza za napon UX: U X = U ul + U D s izrazom za struju IB=I2:
IB =
U X − U D 1 − U BEzas RB
uz IB=0.047mA slijedi:
IB =
U ul + U D − U D1 − U BEzas RB
⇒ U ul = I B RB − U D + U D1 + U BEzas = 0.935V
Padom ulaznog napona pada i struja baze, pa je struja kolektora određena izrazom: I C = hFE I B i pada zajedno sa strujom baze. Kako mora vrijediti naponska jednadžba izlaznog kruga: U izl = U CE = U CC − I C RC padom kolektorske struje izlazni napon raste. Ovaj porast izlaznog napona ići će do iznosa UCC u trenutku kada se tranzistor isključuje uz struju baze 0 mA (što smo već
Osnovni logički sklopovi.
63
prethodno izračunali da se događa kod napona Uul=0.7V). Daljnjim smanjivanjem ulaznog napona izlazni se napon ne mijenja. Prijenosna karakteristika prikazana je u nastavku. Uizl [V] 5 4 3 2 1 0.3
0
0.7
1
2
3
4
5
1
2
3
3.7 4
5
1
2
3
3.7
4
5
1
2
3
3.7
4
5
Uul [V]
0.935
Traženi grafički prikazi slijede. UD [V] 5 4 3 2 1
0.7
0 -0.6
Uul [V]
-1
UX [V] 5 4 3 2 1 0.7
0
Uul [V]
I [mA] 5 4.3
4 3 2 1
0.6
0
Uul [V]
64
Zbirka riješenih zadataka I1 [mA] 5 4.3
4 3 2 1 0
1
2
3
3.7
4 4.3
5
1
2
3
3.7
4 4.3
5
Uul [V]
I2 [mA] 5 4.3
4 3 2 1 0.6
0
Uul [V]
Na određivanje napona UIHmin utječe više faktora. Prvi i osnovni faktor jest ispravan rad sklopa. U ovom zadatku analiziran je diodni NI sklop. Kod tog sklopa uz pretpostavku da su svi ulazi na visokoj logičkoj razini, izlaz mora biti nizak. Pogledamo li prijenosnu karakteristiku sklopa, odmah vidimo da za taj slučaj ulazni napon ne smije biti manji od 0.935V (jer inače napon izlaza više nije nizak, tj. 0.3V). Ovime je određen minimalni iznos parametra UIHmin. Međutim, bitno je za uočiti da pri naponu od 0.935V kroz bazu teče upravo dovoljna struja da podrži kolektorsku struju koju generira RC. Priključivanjem bilo kakvog opterećenja na izlaz sklopa (koje generira dodatnu struju) struja koju bi tranzistor trebao "progutati" postala bi veća od one koju podržava bazna struja. To se, naravno, neće dogoditi, već će izlazni napon porasti (tranzistor ulazi u NAP) kako bi osigurao da i dalje kroz tranzistor teče onolika struja kolika je podržana baznom strujom. Vidimo dakle da je faktor grananja uz ovaj odabir UIHmin jednak 0. Zbog toga se pri odabiru vrijednosti za parametar UIHmin uzimaju u obzir i drugi parametri poput željenog faktora grananja i sl. Naime, povećanjem vrijednosti UIHmin povećava se i struja baze koja će u najgorem slučaju teći kroz tranzistor, i time osigurati željeni faktor grananja. Dakako, slično razmatranje vrijedi i za odabir ostalih parametara sklopa.
Booleova algebra.
65
4. Booleova algebra. 4.1. Zadatak Navedite aksiome Booleove algebre. Njihovom uporabom pokažite da vrijedi: A ⋅ (A + A ⋅ B ) = A ⋅ B
A.1. Neutralni element a) A + 0 = A b) A ⋅1 = A A.2. Komplement a) A + A = 1 b) A ⋅ A = 0
A.3. Komutativnost a) A + B = B + A b) A ⋅ B = B ⋅ A A.4. Distributivnost a) A ⋅ ( B + C ) = A ⋅ B + A ⋅ C b) A + B ⋅ C = ( A + B) ⋅ ( A + C ) A ⋅ (A + A ⋅ B )
= A ⋅ (( A + A) ⋅ ( A + B )) = A ⋅ ((A + A )⋅ (A + B )) = A ⋅ (1 ⋅ (A + B )) = A ⋅ (( A + B ) ⋅ 1) = A ⋅ (A + B ) = (A ⋅ A ) + ( A ⋅ B ) = 0 + (A ⋅ B) = (A ⋅ B) + 0 = A⋅ B
Za vježbu.
Ponovite postupak ali u prvom koraku primijenite A.4a.
A.4b A.3a A.2a A.3b A.1b A.4a A.2b A.3a A.1a
66
Zbirka riješenih zadataka
4.2. Zadatak
Koristeći samo aksiome A.1. – A.4. pokažite da vrijedi A ⋅ 0 = 0 . Za svaki korak navedite aksiome koje koristite. A⋅0
= A⋅0 + 0 = A⋅0 + A⋅ A = A ⋅ (0 + A )
A.1 A.2 A.4
= A⋅ A =0
A.1 A.2
4.3. Zadatak
Koristeći samo aksiome A.1. – A.4. pokažite da vrijedi A ⋅ A = A . Za svaki korak navedite aksiome koje koristite.
A⋅ A
= = = = =
A⋅ A + 0 A⋅ A + A⋅ A A ⋅ ( A + A) A ⋅1 A
A.1 A.2 A.4 A.2 A.1
4.4. Zadatak Booleove funkcije možemo prikazivati tablicom kombinacija. Zadana je funkcija f ( A, B, C ) = AB + ABC + AB C . Prikažite funkciju tablicom kombinacija.
f ( A, B, C ) = AB + ABC + AB C Neka je f1 = AB , f 2 = ABC te f 3 = AB C . Tada je f = f1 + f 2 + f 3 : Tablica 1. Tablični prikaz Booleove funkcije
A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
A 1 1 1 1 0 0 0 0
B 1 1 0 0 1 1 0 0
C 1 0 1 0 1 0 1 0
f1
f2
f3
AB 0 0 0 0 1 1 0 0
ABC 0 0 0 0 0 0 0 1
AB C 0 0 0 0 0 1 0 0
f f1 + f 2 + f 3 0 0 0 0 1 1 0 1
Booleova algebra.
67
4.5. Zadatak Booleova funkcija zadana je Tablica 1. Prikažite tu funkciju: a) sumom standardnih produkata (minterma) b) umnoškom standardnih suma (maksterma) a) u tablici promatramo one retke za koje je vrijednost funkcije f = 1 . A 0 0 0 0
B 0 0 1 1
C 0 1 0 1
f
mintermi
0 0 0 0
m0 m1 m2 m3
1
0
0
1
m4
1
0
1
1
m5
1
1
0
0
m6
1
1
1
1
m7
To su mintermi m4 , m5 i m7 pa je f = m4 + m5 + m7 . U retku koji pripada mintermu m4 vrijednosti varijabli su slijedeće: A=1, B=0, C=0. Budući da minterm odgovara umnošku varijabli, a u tom retku funkcija mora poprimiti vrijednost 1, slijedi da umnožak mora biti 1, tj. m4 = 1 = 1 ⋅ 1 ⋅ 1 = A ⋅ B ⋅ C . Sličnim razmatranjem dobije se: m5 = A ⋅ B ⋅ C i m7 = ABC . Tražena funkcija tada glasi: f = m4 + m5 + m7 = AB C + AB C + ABC .
b) u tablici promatramo one retke za koje je vrijednost funkcije f = 0 . A
B
C
f
makstermi
0
0
0
0
M0
0
0
1
0
M1
0
1
0
0
M2
0
1
1
0
M3
1 1
0 0
0 1
1 1
M4 M5
1
1
0
0
M6
1
1
1
1
M7
68
Zbirka riješenih zadataka
To su makstermi M 0 , M 1 , M 2 , M 3 i M 6 , te je f = M 0 ⋅ M 1 ⋅ M 2 ⋅ M 3 ⋅ M 6 . U retku koji pripada makstermu M 0 vrijednosti varijabli su slijedeće: A=0, B=0, C=0. Budući da maksterm odgovara zbroju varijabli, a u tom retku funkcija mora poprimiti vrijednost 0, slijedi da suma mora biti 0, tj. M 0 = 0 = 0 + 0 + 0 = A + B + C . Sličnim razmatranjem dobije se: M 1 = A + B + C , M 2 = A + B + C , M 3 = A + B + C i M 6 = A + B + C . Tražena funkcija tada glasi: f = M 0 ⋅ M1 ⋅ M 2 ⋅ M 3 ⋅ M 6 = ( A + B + C) ⋅ (A + B + C ) ⋅ ( A + B + C) ⋅ ( A + B + C ) ⋅ ( A + B + C)
4.6. Zadatak Funkcija f ( A, B, C ) zadana je tablično. a) Zapišite funkciju kao sumu minterma. b) Zapišite funkciju kao produkt maksterma. c) Zapišite komplement funkcije kao sumu minterma. d) Zapišite komplement funkcije kao produkt maksterma. e) Kakva je veza između kanonskih oblika f i f ?
a) f
A 0 0 0 0 1 1
B 0 0 1 1 0 0
C 0 1 0 1 0 1
1 1
1 1
0 1
f 1 0 0 1 1 0 1 0
mintermi m0 m1 m2 m3 m4 m5 m6 m7
= m0 + m3 + m4 + m6
= A B C + A BC + AB C + A B C = ∑ (0,3,4,6 ) b) f
= M1 ⋅ M 2 ⋅ M 5 ⋅ M 7 = ( A + B + C ) ⋅ ( A + B + C) ⋅ (A + B + C ) ⋅ ( A + B + C ) = ∏ (1, 2,5,7 )
makstermi M0 M1 M2 M3 M4 M5 M6 M7
Booleova algebra. c) f
69
= m1 + m2 + m5 + m7 = A B C + A BC + AB C + ABC = ∑ (1,2,5,7 )
d) f
= M0 ⋅ M3 ⋅ M4 ⋅ M6 = ( A + B + C ) ⋅ ( A + B + C ) ⋅ ( A + B + C ) ⋅ ( A + B + C) = ∏ (0,3,4,6)
e)
f = ∑ mi ⇔ f = ∏ M i , f = ∑ mi i∈S
i∈S
i∉S
f = ∏ M i ⇔ f = ∑ mi , f = ∏ M i i∈R
i∈R
i∉R
Vezu možemo iskazati i riječima: ako funkcija sadrži mintermi mi, komplement funkcije sadrži odgovarajući maksterm Mi, ili alternativno, sadrži sve one minterme koje sama funkcija ne sadrži. Isto tako, ako funkcija sadrži maksterm Mi, tada komplement sadrži minterm mi, ili alternativno, sadrži sve one maksterme koje sama funkcija ne sadrži. 4.7. Zadatak Zadana je funkcija f = AC + BD + C D . a) Prikažite ovu funkciju kao sumu standardnih produkata. b) Prikažite ovu funkciju kao umnožak standardnih suma. c) Prikažite funkciju tablično. d) Očitajte iz tablice g = f u obliku sume standardnih produkata. e) Očitajte iz tablice g = f u obliku umnoška standardnih suma. f) Prikažite funkciju uporabom NI operacije. g) Nacrtajte sklop koji obavlja funkciju f pomoću NI sklopova.
a)
f
= AC + BD + C D = A ⋅1⋅ C ⋅1 + 1⋅ B ⋅1⋅ D + 1⋅1⋅ C D = A ⋅ ( B + B ) ⋅ C ⋅ ( D + D ) + ( A + A ) ⋅ B ⋅ (C + C ) ⋅ D + ( A + A ) ⋅ ( B + B ) ⋅ C D = ABC D + AB C D + AB C D + ABC D + ABCD + A BCD + A BC D + A B C D = m13 + m8 + m9 + m12 + m15 + m7 + m5 + m1 = ∑ (1,5,7,8,9,12,13,15)
b)
70
Zbirka riješenih zadataka
Poslužimo se činjenicom da je:
[ f ]D
[[ f ]D ]D
[[ f ]D ]D =
f.
= ( A + C )( B + D )(C + D ) = A( B + D )(C + D) + C ( B + D)(C + D ) = AB(C + D) + AD(C + D) + C B(C + D ) + C D(C + D) = ABC + ABD + ADC + ADD + C BC + C BD + C DC + C DD = ABC + ABD + ADC + AD + C B + C BD + C D = C B( A + 1 + D ) + AD( B + C + 1) + C D = C B + AD + C D
= (C + B)( A + D )(C + D ) = (0 + B + C + 0)( A + 0 + 0 + D )(0 + 0 + C + D ) = ( AA + B + C + DD )( A + BB + CC + D)( AA + BB + C + D ) = ( A + B + C + D )( A + B + C + D )( A + B + C + D )( A + B + C + D ) ⋅ ⋅ ( A + B + C + D)( A + B + C + D )( A + B + C + D )( A + B + C + D ) = M 2 ⋅ M 3 ⋅ M 10 ⋅ M 11 ⋅ M 0 ⋅ M 4 ⋅ M 6 ⋅ M 14 = ∏ (0, 2,3,4,6,10,11,14)
c)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
f 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1
g= f 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0
d)
g = ∑ (0,2,3,4,6,10,11,14 ) = A B C D + A B CD + A B CD + A BC D + A BCD + AB CD + AB CD + ABCD
Booleova algebra.
71
e)
g = ∏ (1,5,7,8,9,12,13,15)
= ( A + B + C + D )( A + B + C + D )( A + B + C + D )( A + B + C + D ) ⋅ ⋅ ( A + B + C + D )( A + B + C + D )( A + B + C + D )( A + B + C + D )
f) f = AC + BD + C D f = f = AC + BD + C D = AC ⋅ BD ⋅ C D = ACC ⋅ BD ⋅ CC D
g) Zadatak rješavamo metodom supstitucije. A C
&
1
B
& D
≥1
f
1 &
Vrijedi:
&
1
A = A⋅ A
& &
≥1
&
A+ B = A⋅B
72
Zbirka riješenih zadataka
&
&
&
A⋅ B = A⋅ B Zamjenom I, ILI i NE logičkih sklopova u shemi sklopa dobijemo:
A
&
&
&
&
&
&
&
&
&
&
C
B
&
D
&
Odnosno: A
& C
&
B
&
&
f
D
& &
Za vježbu. Prikažite funkciju uporabom NILI operacije. Nacrtajte sklop koji obavlja funkciju f pomoću NILI sklopova.
f
Booleova algebra.
73
4.8. Zadatak Zadana je
f ( A, B , C ) = ∑ (1,2,4,7) poznata pod nazivom «neparni paritet». Napišite
algebarski izraz ove funkcije uporabom samo ⊕ operacije.
f ( A, B, C )
= m1 + m2 + m 4 + m7
= A B C + A BC + AB C + ABC = C (A B + AB ) + C ( A B + AB ) = C (A ⊕ B ) + C (A ≡ B )
(
= C (A ⊕ B) + C A ⊕ B = (A ⊕ B) ⊕ C = A⊕ B ⊕C
)
4.9. Zadatak
Napišite dualne funkcije od a) f1 = AB + ABC + AB C b) f 2 = 1⋅ A ⋅ B + 0 ⋅ C a) [ f1 ]D = ( A + B ) ⋅ ( A + B + C ) ⋅ ( A + B + C ) b) [ f 2 ]D = (0 + A + B ) ⋅ (1 + C ) 4.10. Zadatak
Uporabom dualne funkcije odredite komplemente od a) f1 = AB + ABC + AB C b) f 2 = 1⋅ A ⋅ B + 0 ⋅ C
[
]
[
]
a) f1 ( A, B, C ) = f1 ( A , B , C ) D = ( A + B )⋅ ( A + B + C )⋅ ( A + B + C ) b) f 2 ( A, B , C ) = f 2 ( A , B , C ) D = (0 + A + B )⋅ (1 + C )
74
Zbirka riješenih zadataka
4.11. Zadatak
Da li su funkcije f1 = AB + ABC + AB C i f2 = ( A + B + C) ⋅ ( A + B + C ) ⋅ ( A + B + C) ⋅ ( A + B + C ) ⋅ ( A + B + C) logički jednake?
a) Navedene funkcije korištene već su korištene u prethodnim zadacima te obje imaju identičan tablični prikaz (Tablica 1). Zbog toga su te funkcije jednake. b) Algebarska metoda
f1
= AB + ABC + AB C = AB ⋅ 1 + ABC + AB C = AB ⋅ (1 + C ) + ABC = AB ⋅ 1 + ABC = AB + ABC
= A ⋅ (B + BC ) = A ⋅ (B + B ) ⋅ (B + C )
= ( A + B ) ⋅ ( A + B ) ⋅ (B + C )
= (( A + B ) ⋅ 1) ⋅ ((A + B ) ⋅ 1) ⋅ ((B + C ) ⋅ 1)
= (( A + B ) ⋅ (C + C )) ⋅ (( A + B ) ⋅ (C + C )) ⋅ ((B + C ) ⋅ (A + A ))
= ( A + B + C ) ⋅ (A + B + C ) ⋅ ( A + B + C ) ⋅ (A + B + C ) ⋅ (B + C + A) ⋅ (B + C + A ) = ( A + B + C ) ⋅ (A + B + C ) ⋅ ( A + B + C ) ⋅ (A + B + C ) ⋅ (A + B + C ) = f2
4.12. Zadatak Zadana je funkcija f = A C D + AC D + BC . Objasnite kako biste sklopovski realizirali njezin komplement, ako su na raspolaganju sve varijable i komplementi, jedan višeulazni I sklop, te potreban broj ILI sklopova.
Kako imamo na raspolaganju samo jedan višeulazni I sklop, funkciju koju je potrebno realizirati očito treba prikazati u obliku umnoška parcijalnih suma. Dakle, ako realiziramo funkciju g = f , funkcija g treba biti zapisana u produktnom obliku. U tu svrhu komplement ćemo realizirati kao dualnu funkciju u komplementiranim varijablama, pa imamo: g = ( A + C + D ) ⋅ ( A + C + D ) ⋅ (B + C ) Iz ovog oblika realizacija je trivijalna!
Booleova algebra.
75
4.13. Zadatak Sve se logičke funkcije mogu prikazati tablicom kombinacija i zatim kao suma minterma ili produkt maksterma. Pri tome se koriste samo operacije I, ILI i NE pa zaključujemo da su te tri operacije dovoljne za prikaz bilo koje druge funkcije. Da li se taj skup funkcija može smanjiti na: a) I, NE b) ILI, NE c) NI d) NILI Prikažite f = AB + ABC + AB C algebarski i grafički.
Tražena funkcija izvodi se na slijedeći način:
A B
& 1 ≥1
f
&
C
& 1
a) ako se uporabom I i NE može prikazati ILI, onda nam je i taj skup dovoljan. Krenimo od De Morganovog zakona:
A+ B = A⋅B Komplementiranjem ovog izraza dobivamo: A+ B = A⋅B
Primjenom zakona involucije slijedi: A + B = A ⋅ B = NE (I ( NE ( A ), NE (B )))
Zaključujemo da je skup {I, NE} dovoljan.
76
Zbirka riješenih zadataka
= AB + ABC + AB C
f
= AB + ABC + AB C = AB ⋅ ABC ⋅ AB C = NE (I ( NE ( I ( A, NE (B ))), NE (I ( A, B, C )), NE ( I ( A, NE (B ), C ))))
Grafički funkciju možemo prikazati samo uporabom baznih funkcija metodom supstitucije. Najprije je potrebno svaki ne-baznu funkciju prikazati baznima, i zatim obaviti supstituciju. {I, NE} 1 ≥1
&
1
1
Obavimo supstituciju:
A B
&
1
1 &
C
&
1
&
1
1
1
Ovime je postupak završen te je pokazano kako se izvorna funkcija može izvesti samo uporabom I i NE logičkih sklopova. b) ako se uporabom ILI i NE može prikazati I, onda nam je i taj skup dovoljan. Krenimo od De Morganovog zakona:
A⋅ B = A + B Komplementiranjem dobivamo: A⋅ B = A + B Primjenom zakona involucije slijedi:
f
Booleova algebra.
77
A ⋅ B = A + B = NE (ILI ( NE ( A ), NE (B )))
Zaključujemo da je skup {ILI, NE} dovoljan.
= AB + ABC + AB C
f
= AB + ABC + AB C
= A + B + A + B +C + A + B+C = ILI ( NE (ILI ( NE ( A), B )), NE (ILI ( NE ( A), NE (B ), NE (C ))), NE (ILI ( NE ( A), B, NE (C ))
{ILI, NE} 1 ≥1
&
1
1
Supstitucija: 1
A
B
1
≥1
1
≥1
1
≥1
1
1
1
1
1
C
1
1
1
1
≥1
f
78
Zbirka riješenih zadataka
Kako je komplement od komplementa sama vrijednost, dva uzastopna invertora možemo izbaciti, pa konačna shema sklopa izgleda: 1
A
≥1
1
≥1
1
≥1
1
B
1
1
1
C
1
1
c) Potrebno je sve tri operacije izraziti preko NI.
A = A + A = A + A == A ⋅ A = NI ( A, A) A + B = A ⋅ B = NI ( NI ( A, A), NI (B , B ))
A ⋅ B = A ⋅ B = NE ( NI ( A, B)) = NI ( NI ( A, B), NI ( A, B)) f
= AB + ABC + AB C = AB + ABC + AB C = AB ⋅ ABC ⋅ AB C = NI ( NI ( A, NI (B, B )), NI ( A, B, C ), NI ( A, NI (B, B ), C ))
≥1
f
Booleova algebra.
79
{NI} 1
&
& ≥1
&
&
&
&
&
Supstitucija: A B
&
&
&
& &
C
&
&
&
&
&
&
&
Primjenom zakona involucije slijedi: A B
& & & &
C
&
&
f
f
80
Zbirka riješenih zadataka
d) Potrebno je sve tri operacije izraziti preko NILI. A = A ⋅ A = A ⋅ A == A + A = NILI ( A, A) A + B = A + B = NE ( NILI ( A, B)) = NILI ( NILI ( A, B), NILI ( A, B)) A ⋅ B = A + B = NILI ( NILI ( A, A), NILI (B, B ))
f
= AB + ABC + AB C = AB + ABC + AB C
= AB + ABC + AB C
= A + B+ A + B +C + A + B+C NILI ( NILI ( A, A), B ), NILI NILI ( NILI ( A, A), NILI (B, B ), NILI (C , C )), , NILI ( NILI ( A, A), B, NILI (C , C )) = NILI NILI ( NILI ( A, A), B ), NILI NILI ( NILI ( A, A), NILI (B, B ), NILI (C , C )), NILI ( NILI ( A, A), B, NILI (C , C ))
{NILI}
≥1
1
≥1
≥1
≥1
≥1 ≥1
&
≥1
Booleova algebra.
81
Supstitucija: ≥1
A
≥1
B
≥1
≥1
≥1 ≥1 ≥1 ≥1
≥1
f
≥1
≥1
f
≥1
C
≥1 ≥1 ≥1
≥1 ≥1
Nakon primjene zakona involucije: A
≥1 ≥1
B
≥1 ≥1 ≥1
C
≥1
≥1 ≥1
≥1
82
Zbirka riješenih zadataka
4.14. Zadatak
Zadana je funkcija f = ( AB + C ) ⋅ (B + D ) + E . a) Prikažite sklop koji realizira ovu funkciju. b) Koliko razinski je taj sklop? Zašto je to bitno? c) Može li se ista funkcija realizirati dvorazinskim sklopom? Objasnite i prikažite rješenje.
a) A B
&
≥1
C
&
≥1
D
≥1
E
f
b) Sklop je 4-razinski. Ovaj podatak bitan je kod fizičke implementacije funkcija zbog toga što svaki logički sklop ima određeno vrijeme kašnjenja. Što je više razina, to će proći više vremena prije no što se konačan rezultat pojavi na izlazu sklopa.
&
≥1
& ≥1
≥1
c) Svaka Booleova funkcija može se u najgorem slučaju prikazati kao suma produkata ili produkt suma, što se može direktno realizirati dvorazinskim sklopom.
Booleova algebra.
83
= ( AB + C ) ⋅ (B + D ) + E = AB + ABD + BC + CD + E = AB(1 + D ) + BC + CD + E = AB + BC + CD + E
f
4.15. Zadatak
Konstruirati sklop koji kodira trobitni binarni broj u Gray-ev kod. Pri tome se koristiti isključivo EX-ILI sklopovima. Opisati sklop VHDL-om. Modelirati vrijeme prolaska signala kroz sklop kašnjenjem od 20 ns.
Prikažimo tablično funkciju sklopa: n 0 1 2 3 4 5 6 7
b2 0 0 0 0 1 1 1 1
b1 0 0 1 1 0 0 1 1
b0 0 1 0 1 0 1 0 1
g2 0 0 0 0 1 1 1 1
g1 0 0 1 1 1 1 0 0
g0 0 1 1 0 0 1 1 0
Vrijedi: g2=f2(b2,b1,b0), g1=f1(b2,b1,b0), g0=f0(b2,b1,b0). Pronađimo te funkcije!
g 2 = b2b1b0 + b2b1b0 + b2b1b0 + b2b1b0 = b2 (b1b0 + b1b0 + b1b0 + b1b0 )
= b2 (b1 (b0 + b0 ) + b1 (b0 + b0 ) ) = b2 (b1 + b1 ) = b2
g1 = b2b1b0 + b2b1b0 + b2b1b0 + b2b1b0 = b2b1 (b0 + b0 ) + b2b1 (b0 + b0 )
= b2b1 + b2b1 = b1 ⊕ b2 g 0 = b2b1b0 + b2b1b0 + b2b1b0 + b2b1b0 = b1b0 (b2 + b2 ) + b1b (b2 + b2 )
= b1b0 + b1b0 = b1 ⊕ b0
84
Zbirka riješenih zadataka
b2 b1
b0
g2
=1
g1
=1
g0
Novost u odnosu na dosad viđeni VHDL kod predstavlja uporaba tipa std_logic_vector, naredbe case te varijabli (varijable). library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY sklopBinGray IS PORT( b: IN std_logic_vector(2 downto 0); g: OUT std_logic_vector(2 downto 0) ); END sklopBinGray; ARCHITECTURE funkcijska2BinGray OF sklopBinGray IS BEGIN p1: PROCESS(b) IS VARIABLE x, y, z: std_logic; BEGIN -- izracun izlaza x := b(2); y := (b(1) AND NOT b(2)) OR (NOT b(1) AND b(2)); z := (b(0) AND NOT b(1)) OR (NOT b(0) AND b(1)); -- pridjeljivanje izlaza g(2) <= x AFTER 20 ns; g(1) <= y AFTER 20 ns; g(0) <= z AFTER 20 ns; -- alternativa: -- g <= (x, y, z) AFTER 20 ns; END PROCESS; END funkcijska2BinGray; ARCHITECTURE funkcijskaBinGray OF sklopBinGray IS BEGIN p1: PROCESS(b) IS BEGIN CASE b IS WHEN "000" => g <= "000" AFTER 20 ns; WHEN "001" => g <= "001" AFTER 20 ns; WHEN "010" => g <= "011" AFTER 20 ns; WHEN "011" => g <= "010" AFTER 20 ns; WHEN "100" => g <= "110" AFTER 20 ns; WHEN "101" => g <= "111" AFTER 20 ns; WHEN "110" => g <= "101" AFTER 20 ns; WHEN "111" => g <= "100" AFTER 20 ns; WHEN OTHERS => g <= "000"; END CASE; END PROCESS; END funkcijskaBinGray;
Booleova algebra.
85
Napomena: dan je VHDL opis sklopa pri čemu su ponuđene dvije implementacije arhitekture. Arhitektura funkcijskaBinGray opisuje funkciju sklopa temeljeći se na case naredbi, dok arhitektura funkcijska2BinGray opisuje funkciju sklopa uporabom osnovnih logičkih funkcija. Konačni VHDL opis treba sadržavati samo jednu od navedenih arhitektura. Za vježbu. Napišite VHDL opis ovog sklopa: a) ponašajni (tj. funkcijski) model, ali bez uporabe bloka PROCESS b) strukturni model Za vježbu. Komunikacijskim medijem prenose se okteti. Konstruirajte sklop koji će na ulazu primati oktete, a na izlazu generirati Hammingovu kodnu riječ koja sadrži taj oktet. Sklop ima dodatni ulaz P, koji kada je u 1 znači da na izlazu treba biti Hammingova kodna riječ dobivena uporabom parnog pariteta. Kada je P jednak 0, na izlazu treba biti Hammingova kodna riječ dobivena uporabom neparnog pariteta. 4.16. Zadatak Projektirati i napisati VHDL ponašajni opis sklopa koji trobitni broj kodiran Grayevim kodom pretvara u njegov binarni ekvivalent. Napisati funkcijsku ovisnost izlaza sklopa o ulazima.
Prikažimo funkciju sklopa tablično. g2 0 0 0 0 1 1 1 1
g1 0 0 1 1 1 1 0 0
g0 0 1 1 0 0 1 1 0
b2 0 0 0 0 1 1 1 1
b1 0 0 1 1 0 0 1 1
b0 0 1 0 1 0 1 0 1
Sklop dakle ima tri izlaza. Iz tablice direktno možemo očitati izraze za svaki od izlaza: b2 = g2 b1 = g2 ⊕ g1 b0 = g2 ⊕ g1 ⊕ g0 Ponašajni opis sklopa tada je prikazan u nastavku.
86
Zbirka riješenih zadataka
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY graybin IS PORT ( g2, g1, g0 : IN std_logic; b2, b1, b0 : OUT std_logic); END graybin; ARCHITECTURE Behavioral OF graybin IS BEGIN b2 <= g2; b1 <= g2 XOR g1; b0 <= g2 XOR g1 XOR g0; END Behavioral;
4.17. Zadatak Na ulaz A sklopa sa slike dovodi se niz pravokutnih simetričnih impulsa periode T = 50 ns. Kašnjenje svakog logičkog sklopa je 10 ns. a) Odrediti koju logičku funkciju obavlja sklop (zanemarite kašnjenja). Nacrtati valne oblike A i f koji odgovaraju toj logičkoj funkciji.
=1 =1 =1
b) Nacrtati valne oblike napona A, napona f, te napone na izlazima svih ostalih logičkih sklopova u trajanju od 150 ns, ako se u obzir uzmu i kašnjenja pojedinih sklopova. (Napomena: zanemariti sve pojave osim kašnjenja). c) Napisati u VHDL-u ponašajni model upotrijebljenog logičkog sklopa, te njegovom uporabom strukturni model cijelog sklopa.
a) Logička funkcija koju obavlja sklop glasi: f = A ⊕ ( A ⊕ ( A ⊕ 1)) = A ⊕ (A ⊕ A ) = A ⊕ 1 = A Traženi valni oblici su:
Booleova algebra.
87
A
t f
t
0
25
50
75
100
125
150
b) Uvedimo dodatne oznake u shemi sklopa.
=1 =1 =1
U slučaju da promatramo i kašnjenja pojedinih sklopova dobivamo sljedeće valne oblike: A
t B
t C
t f
t
0
25
50
75
100
125
150
88
Zbirka riješenih zadataka
c) VHDL opis sklopa prikazan je u nastavku. library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY sklopXOR IS PORT( x1, x2: IN std_logic; y : OUT std_logic ); END sklopXOR; ARCHITECTURE funkcijskaXOR OF sklopXOR IS BEGIN y <= transport x1 XOR x2 after 10 ns; END funkcijskaXOR; library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY sklop2 IS PORT( a : IN std_logic; f : OUT std_logic ); END sklop2; ARCHITECTURE strukturna OF sklop2 IS SIGNAL b, c: std_logic; COMPONENT sklopXOR PORT( x1, x2: IN std_logic; y : OUT std_logic ); END COMPONENT; BEGIN c1: sklopXOR PORT MAP (a, '1', b); c2: sklopXOR PORT MAP (a, b, c); c3: sklopXOR PORT MAP (a, c, f); END strukturna;
Kašnjenje se modelira transportnim modelom, što je definirano ključnom riječi transport. Kod transportnog modela svaka promjena na ulazu (ma kako kratka), imat će utjecaj na izlaz sklopa. 4.18. Pismeni ispit, 10. 10. 2003, 2. zadatak Sklop s ulazima a i b te izlazom c opisan je VHDLom. Arhitektura sklopa sastoji se od internih signala x, y i z te proces bloka zadanog slikom. Svi signali su tipa std_logic. U trenutku t = 0 ns signali a i b postavljaju se na vrijednost 0, a u trenutku t = 5 ns signal a prelazi u 1. Nacrtati vremenski dijagram svih signala sklopa za period 0 ns ≤ t ≤ 10 ns kakav bi se dobio simulacijom u Xilinx WebISE alatu. Objasnite odziv sklopa.
process (a,b) begin x <= a or b; y <= x or b; z <= x and y; c <= z; end process;
U trenutku t=0 ns, svi su postavljeni na U. U trenutku t=0+ ns signali a i b postavljaju se na vrijednost nula. Zbog toga se ulazi u process blok (jer se u listi osjetljivosti nalaze signali a i b). U prvom prolazu kroz taj
Booleova algebra.
89
blok x postaje 0, y ostaje U (naime, U or 0 = U), z ostaje U (U and U = U), te c ostaje U. Kako se a ili b ovime nisu promijenili, izvođenje process bloka ovime završava, i simulacija se nastavlja. U trenutku t=5 ns signal a prelazi u 1, čime se ponovno pokreće izvođenje process bloka (jer je a u njegovoj listi osjetljivosti). U prvom prolazu signal x postavlja se na 1 (1 or 0 = 1), signal y postavlja se na 0 (0 or 0 = 0), signal z postavlja se na 0 (0 and U = 0), a signal c i dalje ostaje U. Kako se niti sada nije promijenila niti jedna varijabla iz liste osjetljivosti process bloka, ne ulazi se ponovno u njegovo izračunavanje, i simulacija se nastavlja. Grafički prikaz dat je u nastavku.
4.19. Zadatak +UCC
Digitalni sklop (slika 2) izveden je bipolarnom tehnologijom. Napisati Booleovu funkciju koju ostvaruje sklop: a) u pozitivnoj logici, b) u negativnoj logici. Kakve su te dvije funkcije međusobno?
UulA Uf
UulB +UCC UulC
Prema naponskim razinama sklop obavlja sljedeću funkciju: A L L L L H H H H
B L L H H L L H H
C L H L H L H L H
f H H H H H H H L
90
Zbirka riješenih zadataka
a) ako L tumačimo kao 0, a H kao 1 (pozitivna logika) imamo funkciju: f = A + B +C b) ako L tumačimo kao 1, a H kao 0 (negativna logika) imamo funkciju: f = ABC Funkcije su međusobno dualne. 4.20. Pismeni ispit, 25. 02. 2004, 8. zadatak +UCC
Koju funkciju obavlja sklop prikazan na slici u negativnoj logici, a koju u pozitivnoj logici? U kakvom su odnosu te dvije funkcije?
Uf UA UB UC
Zadatak možemo riješiti na više načina. Možda je najjednostavniji direktnim očitanjem. Naime, u pozitivnoj logici A i B spojeni su na I sklop (dvije diode i otpor prema napajanju). Izlaz tog I sklopa spojen je na invertor, pa se zapravo računa NE ( A I B ), tj. A NI B. Izlaz invertora zajedno s varijablom C spojeni su na ILI sklop (dvije diode i otpor prema masi). Dakle, sklop ostvaruje funkciju (A NI B) ILI C: f = A⋅ B + C = A + B + C
Funkcija koju sklop ostvaruje u negativnoj logici dualna je funkciji koju sklop ostvaruje u pozitivnoj logici, i glasi: f = A+ B ⋅C = A ⋅ B ⋅C
Drugi način rješavanja jest analiza izlaznog napona sklopa: UA Nisko Nisko Nisko Nisko Visoko Visoko Visoko Visoko
UB Nisko Nisko Visoko Visoko Nisko Nisko Visoko Visoko
UC Nisko Visoko Nisko Visoko Nisko Visoko Nisko Visoko
Uf Visoko Visoko Visoko Visoko Visoko Visoko Nisko Visoko
Booleova algebra.
91
U pozitivnoj logici niskoj naponskoj razini odgovara logička nula, a visokoj logička jedinica. Primjenimo li to na naponsku tablicu, slijedi:
A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
f 1 1 1 1 1 1 0 1
Funkcija se očito može zapisati kao jednočlani produkt maksterma: f = M6 = A + B + C
U negativnoj logici niskoj naponskoj razini odgovara logička jedinica, a visokoj logička nula. Primjenimo li to na naponsku tablicu, slijedi: A 1 1 1 1 0 0 0 0
B 1 1 0 0 1 1 0 0
C 1 0 1 0 1 0 1 0
f 0 0 0 0 0 0 1 0
Funkcija se očito može zapisati kao jednočlana suma minterma (u dobivenoj tablici minterm m0 nalazi se na dnu!): f = m1 = A ⋅ B ⋅ C ,
čime smo potvrdili prethodno rješenje. Osim toga, pokazali smo i da su funkcije međusobno dualne (jer su minterm m1 i maksterm M6 međusobno dualni).
92
Zbirka riješenih zadataka
4.21. Zadatak Dvorazinskom logikom projektirajte sklop koji uspoređuje dva 4-bitna binarna broja, i kao rezultat vraća 1 ako su oni jednaki, 0 inače. Komentirajte rješenje za opći slučaj usporedbe kbitnih brojeva.
Budući da se kao rezultat očekuje rješenje koje ima najviše dvije razine logike (suma parcijalnih produkata ili produkt parcijalnih suma), rješavanju zadatka pristupit ćemo preko tablice istinitosti. Neka je prvi broj A=a3a2 a1a0 a drugi broj B=b3b2 b1 b0. Tablica istinitosti funkcije e(a3,a2,a1,a0,b3,b2,b1,b0) tada će imati 28=256 redaka. Međutim, nema potrebe da ispisujemo cijelu tablicu: kratkim promišljanjem možemo zaključiti da će tablica istinitosti biti vrlo rijetko popunjena s 1! Zbog toga možemo napisati djelomičnu tablicu istinitosti – samo one retke u kojima funkcija poprima vrijednost 1: A a3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
a2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
B a1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
a0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
b3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
b2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
b1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
b0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
e 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
inače
(
m m0 m17 m34 m51 m68 m85 m102 m119 m136 m153 m170 m187 m204 m221 m238 m255 ostali
)
Funkcija dakle sadrži sve minterme oblika n ⋅ 2 k + n = n ⋅ 2 k + 1 gdje je n neka vrijednost broja a k broj bitova broja. U našem slučaju k=4, pa n može poprimiti broj iz intervala [0, 2k-1]=[0,15], i ukupno imamo upravo 2k=16 takvih minterma. Traženo rješenje tada glasi: e(a3 , a 2 , a1 , a 0 , b3 , b2 , b1 , b0 ) = m0 + m17 + m34 + m51 + m68 + m85 + m102 + m119 + + m136 + m153 + m170 + m187 + m204 + m221 + m238 + m 255 Komentirajmo još i rješenje. Za realizaciju jednog minterma trebamo jedan I sklop s 2 ⋅ k ulaza (u ovom slučaju 8 ulaza). Funkcija ukupno sadrži 2k minterma (u ovom slučaju to iznosi 16), pa trebamo jedan ILI sklop s 2k ulaza (dakle, s 16 ulaza). Međutim, kako je broj razina logike ograničen na 2, sklop će relativno brzo izračunavati
Booleova algebra.
93
točan rezultat usporedbe. Negativna strana ovakve direktne realizacije jest problem eksponencijalnog broja potrebnih ulaza, što takvu realizaciju čini neprimjerenom. Npr. za usporedbu 32 bitnih brojeva trebali bismo za realizaciju minterma I sklopove s 64 ulaza, te jedan ILI sklop s 4294967296 ulaza jer bi funkcija sadržavala upravo toliko minterma. 4.22. Zadatak Neka se funkcija e, čiji su argumenti dva k-bitna broja A i B, realizira kao suma minterma. Izračunati koliko će ta funkcija sadržavati minterma, i kako će izgledati njezina direktna realizacija, ako je funkcija definirana (i) e = (A>B), (ii) e = (A≥B).
Do rješenja se dolazi jednostavnim razmatranjem. U prvom slučaju, funkcija poprima 1 ako je vrijednost broja A strogo veća od vrijednosti broja B. Svaki od tih brojeva može poprimiti vrijednost iz intervala [0, 2k-1]. Ako fiksiramo vrijednost broja A na vrijednost n, tada broj B može poprimiti točno n različitih vrijednosti, a da vrijedi A>B. Npr. ako je vrijednost broja A n=5, tada B može poprimiti vrijednosti {0,1,2,3,4} pri čemu je zadovoljeno A>B. Kako n može biti iz intervala [0, 2k-1], ukupan broj kombinacija za koje vrijedi A>B, što predstavlja i broj minterma funkcije e, iznosi: 2 k −1
∑n =
(2
k
n =0
)(
)
(
)
− 1 2 k − 1 + 1 2k 2 k − 1 = 2 2
Npr. funkcija e=(A>B) za 4-bitne brojeve sadržavala bi 120 minterma. Njezina direktna realizacija zahtijevala bi 120 8-ulaznih I sklopova, te jedan 120 ulazni ILI sklop. Što je sa slučajem za k=32? U drugom slučaju, gdje je e definiran s e = (A≥B), do rezultata možemo doći na dva načina. Ako fiksiramo vrijednost broja A na n, tada B može poprimiti n+1 vrijednost a da vrijedi A≥B. Npr. za n=5 B može poprimiti vrijednosti {0,1,2,3,4,5}. Sumiranjem po svim vrijednostima broja A slijedi: t = n +1 2k 2k ⋅ 2 k + 1 + = = ⇒ = 1 0 1 = = ( n ) n t t ∑ ∑ 2 n =0 n = 2 k − 1 ⇒ t = 2 k t =1
(
2 k −1
)
Alternativno, broj slučajeva za koje vrijedi (A≥B) možemo dobiti i kao sumu broja slučajeva za koje vrijedi (A>B) i (A=B) jer su ti slučajevi međusobno disjunktni. Prvo smo već izračunali, a drugo iznosi upravo 2k, pa sumiranjem slijedi:
(
)
(
)
2k 2k − 1 2k 2k +1 + 2k = 2 2
Npr. funkcija e=(A≥B) za 4-bitne brojeve sadržavala bi 136 minterma. Njezina direktna realizacija zahtijevala bi 136 8-ulaznih I sklopova, te jedan 136 ulazni ILI sklop. Što je sa slučajem za k=32?
94
Zbirka riješenih zadataka
4.23. Zadatak Projektirajte sklop koji uspoređuje dva 4-bitna binarna broja, i kao rezultat vraća 1 ako su oni jednaki, 0 inače. Broj razina logike nije bitan, ali dizajn mora raditi i za višebitne brojeve (k>4). Komentirajte rješenje za opći slučaj usporedbe k-bitnih brojeva.
Kako sada imamo potpunu slobodu u dizajnu sklopa, pogledajmo najprije kako bismo riješili analogan problem: napisati program koji uspoređuje dva k-bitna broja i vraća 1 ako su oni jednaki! Pseudokod rješenja prikazan je u nastavku. Usporedi(A, B): returns Jednaki Jednaki = true For i = 0 to k-1 begin bitoviJednaki = (A(i) == B(i)) Jednaki = Jednaki AND bitoviJednaki End For End Usporedi Promotrimo sada jednu iteraciju petlje: uspoređuju se i-ti bitovi brojeva, i nova vrijednost rezultata (Jednaki) definira se kao logičko I vrijednosti rezultata iz prošle iteracije, i trenutne usporedbe i-tih bitova. Za konačan, unaprijed poznat broj ponavljanja, ovu petlju možemo "raspetljati" po indeksu k. Npr. za k=4 možemo pisati: Usporedi(A, B): returns Jednaki(3) Jednaki(-1) = true // 0. iteracija bitoviJednaki(0) = (A(0) == B(0)) Jednaki(0) = Jednaki(-1) AND bitoviJednaki(0) // 1. iteracija bitoviJednaki(1) = (A(1) == B(1)) Jednaki(1) = Jednaki(0) AND bitoviJednaki(1) // 2. iteracija bitoviJednaki(2) = (A(2) == B(2)) Jednaki(2) = Jednaki(1) AND bitoviJednaki(2) // 3. iteracija bitoviJednaki(3) = (A(3) == B(3)) Jednaki(3) = Jednaki(2) AND bitoviJednaki(3) End Usporedi No kakve ovo ima veze s dizajnom funkcije? I funkciju možemo dizajnirati iterativno! Ako unutrašnjost For petlje gledamo kao crnu kutiju, tada su njeni ulazi Jednaki(i-1), A(i), B(i) a izlaz Jednaki(i). To možemo modelirati sklopovski:
Booleova algebra.
95 A(i) B(i)
&
=1
bitoviJednaki(i)
Jednaki(i-1)
&
Jednaki(i)
Naime, funkcija koja testira dva bita na jednakost upravo je EX-ILI (provjerite tablicom istinitosti). Zapravo, dizajn unutrašnjosti crne kutije može se shvatiti i kao poseban zadatak: projektirajte funkciju Jednaki(i)(A(i),B(i),Jednaki(i-1)) koja poprima vrijednost 1 samo kada su ulazi A(i) i B(i) jednaki, pri čemu još i ulaz Jednaki(i-1) mora biti 1. Mi ćemo u nastavku, radi kraćeg zapisa, funkciju Jednako(i) označavati s E. Funkcija E može se algebarski zapisati: E(Ai, Bi, Ei-1)=Ei-1 AND (Ai XOR Bi) Jednom kad smo dizajnirali unutrašnjost jednog stupnja, vrlo lagano možemo projektirati k-bitni komparator. Za slučaj k=4 imamo:
4-bitni komparator
A(3) B(3)
&
A(2) B(2)
A(1) B(1)
&
&
=1
=1
A(0) B(0)
& =1
=1 1
&
Jednaki(3)
&
&
&
Jednaki(2)
Jednaki(1)
Jednaki(0)
Jednaki
Cijela funkcija tada se može zapisati kao: E = E 2 AND ( A3 XOR B3 )
= (E1 AND ( A2 XOR B2 )) AND ( A3 XOR B3 )
= ((E0 AND ( A1 XOR B1 )) AND ( A2 XOR B2 )) AND ( A3 XOR B3 )
= ((( E−1 AND ( A0 XOR B0 )) AND ( A1 XOR B1 )) AND ( A2 XOR B2 )) AND ( A3 XOR B3 ) = (((1 AND ( A0 XOR B0 )) AND ( A1 XOR B1 )) AND ( A2 XOR B2 )) AND ( A3 XOR B3 )
Komentirajmo dobiveno rješenje. Neovisno o k, sklopovsko rješenje uvijek koristi dvoulazne I sklopove, i dvoulazne EX-ILI sklopove. Za k-bitni komparator, trebat ćemo
96
Zbirka riješenih zadataka
k EX-ILI sklopova i k I sklopova. U usporedbi s realizacijom iste funkcije u dvorazinskoj logici, sve navedeno čini se kao prednost. Štoviše, čak niti broj utrošenih sklopova ne raste eksponencijalno, već linearno s faktorom 1. Možemo li tada reći da je ovo najbolje rješenje? Odgovor je, dakako, ne. Naime, ovaj dizajn je izgubio jedno vrlo korisno svojstvo koje je realizacija dvorazinskom logikom garantirala: konstantno (i malo!) vrijeme izračuna rezultata. Kod iterativnog dizajna, vrijeme do pojave točnog rezultata funkcije ovisno je o broju stupnjeva (iteracija), a u našem primjeru trebamo jedan stupanj za svaki bit. Dakle, za 32-bitni komparator, vrijeme potrebno za pojavu točnog rezultata iznosit će 32 puta vrijeme potrebno za izračun rezultata jednog stupnja. Općenito, što je veći k, to ćemo duže čekati na odgovor sklopa! U današnje doba izrade brzih sklopova velika vremena reakcije sklopa neće se tolerirati, pa se za velike k sklopovi neće realizirati niti direktnom primjenom iterativnog dizajna. Jedno od rješenja koje se danas koristi jest hibridni pristup – problem se razbije na iterativni postupak, ali ne do kraja. Umjesto da završimo na stupnju koji računa rezultat nad jednim bitom, zaustavit ćemo se na stupnju koji direktno dvorazinskom logikom računa rezultat za npr. 4-bita. Postoje još neke modifikacije pristupa, o kojima će više riječi biti u poglavlju o Digitalnoj aritmetici.
Booleova algebra.
97
ZADACI ZA VJEŽBU 1.
Prikazati tablicom kombinacija i logičkim izrazom funkciju sklopa čiji je ulaz 4-bitni binarni broj, a izlaz je u logičkoj jedinici ako je broj nula u broju a) paran, b) veći od broja jedinica, c) jednak broju jedinica.
2.
Prikazati tablicom kombinacija i logičkim izrazom funkciju sklopa čiji je ulaz 4-bitni binarni broj, a izlaz je u logičkoj nuli ako u broju: a) postoje točno dvije uzastopne nule, b) postoje barem dvije uzastopne jedinice, c) ne postoje uzastopne nule niti jedinice.
3.
Prikazati tablicom kombinacija i logičkim izrazom funkciju sklopa čiji je ulaz 3-bitni binarni broj, a izlaz je u logičkoj jedinici ako je vrijednost broja na ulazu a) iz intervala [3, 6], b) nije iz skupa {1, 3, 7}.
4.
Ulaz sklopa su dva dvobitna broja A i B. Izlaz sklopa je u logičkoj jedinici ako je broj A veći od broja B. Prikazati tablicom kombinacija i logičkim izrazom funkciju ovog sklopa.
5.
Ulaz sklopa su dva dvobitna broja A i B. Izlaz sklopa je u logičkoj jedinici ako je rezultat zbrajanja ovih brojeva u intervalu [2,5]. Prikazati tablicom kombinacija i logičkim izrazom funkciju ovog sklopa.
6.
Prikažite sklop koji samo uporabom f ( A, B, C , D ) = A + B ⋅ ( A ⋅ C + C ⋅ D ) .
NI
sklopova
realizira
funkciju
7.
Prikažite sklop koji samo uporabom f ( A, B, C , D ) = A ⋅ B ⋅ C + A ⋅ B ⋅ D + A ⋅ C ⋅ D .
NI
sklopova
realizira
funkciju
8.
Prikažite sklop koji samo uporabom NILI f ( A, B, C , D ) = A ⋅ B ⋅ C + A ⋅ B ⋅ D + A ⋅ C ⋅ D .
sklopova
realizira
funkciju
9.
Prikažite sklop koji samo uporabom NI sklopova f ( A, B, C , D ) = ( A + B + C ) ⋅ ( A + B + D) ⋅ ( A + C + D ) .
realizira
funkciju
10.
Prikažite sklop koji samo uporabom NILI sklopova f ( A, B, C , D ) = ( A + B + C ) ⋅ ( A + B + D) ⋅ ( A + C + D ) .
realizira
funkciju
11.
Tablicom kombinacija provjeriti da su funkcije f i g jednake. Funkcije su zadane sljedećim izrazima: f ( A, B, C , D) = A ⋅ C ⋅ D + A ⋅ C + B ⋅ C ⋅ D ,
g ( A, B, C , D) = ( A + C ) ⋅ ( A + C + D ) ⋅ ( B + C + D ) . 12.
Zadana je funkcija f ( A, B, C ) = A ⋅ B ⋅ C + A ⋅ B ⋅ C + A ⋅ B ⋅ C + A ⋅ B ⋅ C . Algebarskom metodom pokažite da se ta funkcija može zapisati kao f ( A, B, C ) = A ⋅ C + A ⋅ B .
13.
Algebarskom metodom pokažite da je ( A + C ) ⋅ ( B + C ) ⋅ ( A + B) ( A + C ) ⋅ ( B + C ) . Navedite aksiome koji su pri tome korišteni.
14.
Zadana je funkcija f ( A, B, C ) = A ⋅ C + A ⋅ B . Algebarskom metodom pokažite da je to ( )( ) ista funkcija kao i g ( A, B, C ) = A + B ⋅ A + C .
jednako
98
15.
Zbirka riješenih zadataka
Uporabom dualne funkcije direktno zapišite komplement od f ( A, B, C ) = A ⋅ C + A ⋅ B .
16.
Projektirati kombinacijski sklop koji ispituje da li je na ulaz dovedena ispravna BCD znamenka. Nacrtati shemu sklopa. Napisati ponašajni opis sklopa u VHDL-u.
17.
Za Booleovu algebru definiranu na kraju dodatka 2 uporabom tablica istinitosti dokažite da su operatori ILI (Def1) i KOMPLEMENT (Def2) ispravno definirani.
18.
Koristeći aksiome Booleove algebre definirane na kraju dodatka 2, pokažite da vrijedi: a) svi aksiomi "naše" definicije Booleove algebre koji nisu aksiomi ove "nove" Booleove algebre (npr. X + 0 = X , X + X = 1 , X + Y = Y + X ). b) Idempotentnost ILI operatora: X + X = X c) Asocijativnost ILI operatora: ( X + Y ) + Z = X + (Y + Z )
d) e) f) g)
Veza između 1 i 0: 1 = 0 , te 0 = 1 X ⋅ 0 = 0 , X +1 = 1 Distributivnost: X ⋅ (Y + Z ) = ( X ⋅ Y ) + ( X ⋅ Z ) , X + (Y ⋅ Z ) = ( X + Y ) ⋅ ( X + Z ) Veza varijable i komplementa: X ⋅ X = 0 , X + X = 1
h) X = X i) Drugi zapis ILI operatora: X ⊕ Y = X ⋅ Y + X ⋅ Y , X ⊕ Y = ( X + Y ) ⋅ ( X + Y )
j) DeMorganov zakon: X ⋅ Y = X + Y , X + Y = X ⋅ Y k) Zakon simplifikacije: X ⋅ ( X + Y ) = X , X + X ⋅ Y = X l) X ⋅ ( X + Y ) = X ⋅ Y , X + X ⋅ Y = X + Y . 19. Pokazati da se samo uporabom sklopova sa slike (te logičke nule i jedinice) mogu ostvariti sve Booleove funkcije.
20. Projektirajte sklop koji obavlja funkciju e usporedbe dva 4-bitna binarna broja A i B: e=(A>B). Odabran način rješavanja mora biti primjenjiv i na višebitne brojeve (k>4). 21. Projektirajte sklop koji obavlja funkciju e usporedbe dva 4-bitna binarna broja A i B: e=(A≤B). Odabran način rješavanja mora biti primjenjiv i na višebitne brojeve (k>4). 22. Pismeni ispit 07. 02. 2005. Zadana je Booleova funkcija f (α , β , χ ) = (α → (β → χ )) → ((α → β ) → (α → χ )) . Pronađite njezin minimalni oblik.
Minimizacija logičkih funkcija.
99
5. Minimizacija logičkih funkcija. 5.1. Zadatak Prikažite funkciju f = ∑ (0,2 ) pomoću K-tablice, i zatim odredite minimalni oblik funkcije. Usporedite s analitičkom minimizacijom.
AB
A B
0
AB
0
1
1
1
B B
1 A
f = A B + AB = ( A + A) B = B 5.2. Zadatak Prikažite funkciju f = ∏ (1,3) pomoću K-tablice, i zatim odredite minimalni oblik funkcije. Usporedite s analitičkom minimizacijom.
A+ B
A 0 B
A+B
1 B
0 1
0
0
B
A
Direktno: upisati maksterme, minimizirati i pročitati kao komplement od minimizacije koja bi se radila da su upisane jedinice. f = ( A + B )( A + B ) = ( AA + B ) = B Indirektno: upisati maksterme i "praviti se" da su mintermi (dakle, jedinice), odnosno raditi sa komplementarnom funkcijom. Obaviti minimizaciju, pa kao rezultat vratiti komplement dobivenoga!
100
Zbirka riješenih zadataka
AB
A 0 B
AB
1 B
0 1
1
B
1 A
f =B f = f =B
5.3. Zadatak Minimizirajte funkciju f = ∑ (0, 4,9,11,13,15) pomoću K-tablice.
ACD
AB CD
00
00
01
1
1
01
11
10
1
1 D
11
1
1 C
10 B
f = A C D + AD
AD
A
Minimizacija logičkih funkcija.
101
5.4. Zadatak Minimizirajte funkciju f = ∑ (0,2,4,6,8,10 ) pomoću K-tablice.
AB CD AD
00
00
01
1
1
11
10 BD
1
01 D
11 10
1
1
C
1 A
B f = AD + BD 5.5. Zadatak
Minimizirajte funkciju f = ∑ m(0,1,4,6,15) + ∑ d (5,7,8,10,11) pomoću K-tablice.
AB CD
00
01
00
1
1
01
1
x
AC
x
10
1
f = A C + A B + BCD
10
x
BCD
D
11
AB
11
1
x x
B
A
C
102
Zbirka riješenih zadataka
5.6. Zadatak Minimizirajte funkciju f = ∏ (0,2,3,7 ) pomoću K-tablice.
AC
AB C
0
00
01
0
0
11
BC
0
1
10
0
C A
B f = A C + BC f = f = ( A + C )( B + C )
5.7. Zadatak Minimizirajte funkciju f = ∏ (0,5,7,8,12,13,15) pomoću K-tablice.
BCD
AC D
AB 00 CD
00
01
0
01 11
0
11
10
0
0 BD
0 D
0
0 C
10 B
f = BD + AC D + B C D f = f = ( B + D )( A + C + D )( B + C + D)
A
Minimizacija logičkih funkcija.
103
5.8. Zadatak Zadana je funkcija minimizirati:
f = A B C + AC + ABC + A B C + AB C .
Funkciju
a) algebarskom metodom b) uporabom komplementa funkcije c) uporabom dualne funkcije d) K-tablicom e) metodom Quine-McCluskey
a) algebarska metoda
f = A B C + AC + ABC + A B C + AB C = A B (C + C ) + AC (B + B ) + AC
= A B + AC + AC = A B + A(C + C ) = AB + A
= (A + A )⋅ (A + B ) = A+ B b) uporaba komplementa: f = f
f = A B C + AC + ABC + A B C + AB C = A B C ⋅ AC ⋅ ABC ⋅ A B C ⋅ AB C
= ( A + B + C ) ⋅ (A + C )⋅ (A + B + C )⋅ (A + B + C ) ⋅ (A + B + C ) = ( A + B + C ) ⋅ ( A + B + C ) ⋅ ( A + C + B ) ⋅ ( A + C + B ) ⋅ (A + C )
= ( A + B + CC ) ⋅ ( A + C + BB ) ⋅ (A + C ) = ( A + B ) ⋅ (A + C ) ⋅ ( A + C ) = ( A + B ) ⋅ (A + CC )
= (A + B ) ⋅ A
= A⋅ A + B ⋅ A = A⋅B
f = f = A⋅B = A+ B c) uporabom dualne funkcije f = [ f D ]D
je
potrebno
104
Zbirka riješenih zadataka
f D = (A + B + C ) ⋅ ( A + C ) ⋅ (A + B + C ) ⋅ ( A + B + C ) ⋅ ( A + B + C ) = (A + B + C ) ⋅ (A + B + C ) ⋅ (A + C + B ) ⋅ ( A + C + B ) ⋅ ( A + C ) = (A + B + CC ) ⋅ ( A + C + BB ) ⋅ ( A + C ) = (A + B ) ⋅ ( A + C ) ⋅ ( A + C )
= (A + B ) ⋅ ( A + CC ) = (A + B ) ⋅ A = AA + AB = AB
f = [AB ]D = A+ B d) Ukoliko je funkcija zadana kao suma minterma, funkcija se može direktno upisati u K-tablicu. Ako to nije ispunjeno, funkciju možemo svesti na sumu minterma: f = A B C + AC + ABC + A B C + AB C = A B C + A( B + B )C + ABC + A B C + AB C = A B C + ABC + AB C + ABC + A B C + AB C
= ∑ (0,7,5,6,1, 4) = ∑ (0,1,4,5,6,7 )
Drugi način ako je funkcija zapisana kao suma produkata koji nisu nužno mintermi jer analiza član po član. Jedini član zadane funkcije koji nije minterm jest AC. Zaključujemo da je funkcija jednaka 1 kada su A i C jednaki 1, neovisno o ostalim varijablama (u ovom slučaju o varijabli B). Pogledom u tablicu pronalazimo polja za koja su A i C jednaka 1 i u njih upisujemo jedinice. Ostali članovi su mintermi, pa njih možemo upisati direktno. Dobijemo sljedeću K-tablicu: B
AB 00 C
01
A
11
10
0
1
1
1
1
1
1
1
C
U K-tablici potrebno je pronaći što veća pravokutna područja prekrivena jedinicama. Važno je napomenuti da dimenzije stranica pravokutnika mogu biti isključivo potencije broja dva. Pogledajmo u K-tablici polje ABC=110 (tu se nalazi upisana jedinica). Susjedno polje na istoku (ili desno) također ima jedinicu. Zaokružimo li ova dva polja, dobili smo pravokutnik dimenzija 1×2. Ta dva polja odgovaraju mintermima ABC + AB C . Ovaj izraz može se minimizirati: ABC + AB C = AC ( B + B ) = AC ! To
Minimizacija logičkih funkcija.
105
također vidimo i u K-tablici. Naime, to zaokruženje cijelo se nalazi na području varijable A, i na području od C , dok se dio nalazi na području od B a dio na području od B . Dakle, možemo zaključiti da B nema utjecaja i ostaje nam područje određeno presjekom A i C , odnosno AC . No da li je to najbolje što smo mogli minimizirati? Očito je da smo mogli cijelu desnu stranu tablice obuhvatiti pravokutnikom dimenzija 2×2, tj. polja ABC = 110, 111, 100 i 101, kao što to prikazuje sljedeća tablica: B
AB 00 C
A
01
11
10
0
1
1
1
1
1
1
1
C
A Ovo zaokruženje nalazi se isključivo na području varijable A, dok o B i C ne ovisi jer se proteže i kroz njihove komplemente. Dakle, ovo zaokruženje odgovara funkciji f1=A. Još nismo gotovi jer je ostalo još nezaokruženih jedinica. Npr. polje ABC = 000. Polje južno također sadrži jedinicu pa ih možemo prekriti pravokutnikom dimenzija 2×1. Međutim, treba uočiti da ovo područje ima susjede na istoku prekrivene jedinicama. To su polja ABC=100 i 101, pa sve zajedno možemo obuhvatiti pravokutnikom dimenzija 2×2, kao na sljedećoj slici: B
AB 00 C
A
01
11
10
0
1
1
1
1
1
1
1
B
C
A
To zaokruženje u potpunosti se nalazi na području od B , a ne ovisi o A i C, pa je: f 2 = B . Time smo, preko f1 i f2, pokrili sve jedinice u tablici, pa konačna minimizirana funkcija glasi: f = f1 + f 2 = A + B e) Quine-McCluskey metoda U d) dijelu zadatka raspisali smo funkciju f kao sumu minterma:
106
Zbirka riješenih zadataka
f = A B C + AC + ABC + A B C + AB C = ∑ (0,1,4,5,6,7 )
Grupirajmo ove minterme prema broju jedinica (odgovara broju varijabli bez komplementa u mintermu) i zapišimo to tablično: Minterm 000 001 100 101 110 111
(0) (1) (4) (5) (6) (7)
Minimizacija se provodi tako da se promatraju mintermi iz dviju susjednih grupa, te kombiniraju, ako je to moguće. Tijekom cijelog postupka smiju se kombinirati samo oni mintermi koji se razlikuju u jednom bitu. Kombiniranjem nastaje prikaz koji na mjestu na kojem se pojavila razlika u bitu ima x (često se umjesto x još piše '-'). Npr. Usporedimo prvi član prve grupe sa prvim članom druge grupe: 000 i 001. Razlikuju se u jednom bitu, pa dobivamo 00x. Radimo novu tablicu u koju upisujemo dobivene kombinacije kao i oznake minterma koje smo kombinirali. Budući da smo uspjeli kombinirati minterme 000 i 001, to označavamo zvjezdicom: Minterm 000 001 100 101 110 111
* *
(0) (1) (4) (5) (6) (7)
00x
(0,1)
Prvi minterm prve grupe možemo još kombinirati i s drugim mintermom druge grupe (000 i 100 daju x00), pa i to zabilježimo i označimo 100. Zatim ponovimo postupak uspoređujući svaki minterm iz druge grupe sa svakim mintermom iz treće grupe, itd. Dobije se: Minterm 000
*
(0)
001 100
* *
(1) (4)
101 110 111
* * *
(5) (6) (7)
00x x00 x01 10x 1x0 1x1 11x
(0,1) (0,4) (1,5) (4,5) (4,6) (5,7) (6,7)
Sada ponavljamo postupak koristeći novoizgrađenu tablicu. Međutim, od sada na dalje je potrebno upamtiti slijedeće: kombiniranje je moguće samo ako postoji razlika u jednom bitu (pri čemu x-evi, ako postoje, moraju biti prisutni kod oba podatka koje kombiniramo na istim mjestima, i tu ne može biti razlike). Dodatno pravilo kaže da ako x koji smo umetnuli nije najljeviji u odnosu na već postojeće oznake x, tu kombinaciju nećemo zapisivati u novoj tablici (ali u staroj označavamo da smo napravili tu
Minimizacija logičkih funkcija.
107
kombinaciju). Razlog za ovo pravilo je izbjegavanje duplikata. Naime, pokazuje se da će se ista pokrata dobiti i na zahtijevani način. Npr. 00x i x01 ne možemo kombinirati jer postojeći x-evi nisu na istim mjestima. 00x i 10x možemo kombinirati, i dobijemo x0x, što bilježimo u novoj tablici, a u staroj uz 00x i 10x stavljamo zvjezdice. x00 i x01 također možemo kombinirati, pri čemu dobijemo x0x. Međutim, treba uočiti da smo novi x stavili iza već postojećeg, pa tu kombinaciju ne upisujemo u novu tablicu (već smo je dobili u prethodnom koraku), a u staroj tablici stavljamo zvjezdice uz x00 i x01. Nastavimo li kombinirati do kraja, dobiti ćemo: Minterm 000
*
(0)
001 100
* *
(1) (4)
101 110 111
* * *
(5) (6) (7)
00x x00 x01 10x 1x0 1x1 11x
* * * * * * *
(0,1) (0,4) (1,5) (4,5) (4,6) (5,7) (6,7)
x0x
(0,1,4,5)
1xx
(4,5,6,7)
Pokušamo li ponovno kombinirati dobivene članove, vidimo da to više ne možemo, i tu zaustavljamo postupak. Sada je potrebno pronaći one članove koje nismo koristili u nekom od koraka (dakle, koji nemaju zvjezdicu). To su samo x0x i 1xx, odnosno B i A. Iz ovih članova kreiramo novu tablicu: stupci odgovaraju mintermima kojima je zadana funkcija, a retci dobivenim članovima iz prethodnog koraka. U tablici se ujedno označi koje minterme sadrži (odnosno pokriva) koji član.
B A
(0,1,4,5) (4,5,6,7)
0 9
1 9
4 9 9
5 9 9
6
7
9
9
Slijedeći korak je pronalaženje onih članova koji jedini pokrivaju neki minterm. Npr. vidimo da B jedini pokriva minterm 0. To znači da je on primarni član, i moramo ga uzeti. No, ako smo uzeli njega, onda smo automatski pokrili i minterme 1, 4 i 5. Označimo to:
B A
(0,1,4,5) (4,5,6,7)
0 9 8
1 9 8
4 9 9 8
5 9 9 8
6
7 8
9
9
Desno smo označili da smo uzeli B , a na dnu tablice smo označili koje smo sve minterme pokrili. Ostali su nepokriveni mintermi 6 i 7, a njih sadrži član A. Kako je on jedini koji ih sadrži, on je također primaran član. Uzmimo i njega, pa označimo što je sve pokrio:
B A
(0,1,4,5) (4,5,6,7)
0 9 8
1 9 8
4 9 9 8
5 9 9 8
6 9 8
7 9 8
8 8
108
Zbirka riješenih zadataka
Kako su svi mintermi pokriveni, zaustavljamo postupak, i očitavamo minimizirani oblik funkcije: f = A+ B
5.9. Zadatak Minimizirajte funkciju f = ∑ (0,1,2,3,4,6,7,12,13,15) pomoću Quine-McCluskey metode.
Prvi dio postupka obuhvaća iterativnu primjenu zakona simplifikacije Aϕ + A ϕ = ϕ . Minterm 0000 *
(0)
0001 0010 0100
* * *
(1) (2) (4)
0011 0110 1100 0111 1101 1111
* * * * * *
(3) (6) (12) (7) (13) (15)
000x 00x0 0x00 00x1 001x 0x10 01x0 x100 0x11 011x 110x x111 11x1
* * * * * * * * *
(0,1) 00xx (0,2) 0xx0 (0,4) (1,3) 0x1x (2,3) (2,6) (4,6) (4,12) (3,7) (6,7) (12,13) (7,15) (13,15)
(0,1,2,3) (0,2,4,6) (2,3,6,7)
Drugi dio postupka pronalazi primarne članove (one koji jedini prekrivaju neki od minterma), te zatim od preostalih članova pronalazi najmanji broj onih koji pokrivaju sve ostale minterme. Tablica preostalih članova: 0
BC D ABC BCD ABD AB AD AC
1
2
3
(4,12)
4 9
6
7
(12,13) (7,15) (13,15) (0,1,2,3) (0,2,4,6)
12 9 9
13 9
9 9 9 9
9
(2,3,6,7)
8
8
9 9 9 8
9
15
9 9 8
9 9 8
Nepokriveni su mintermi: 4, 6, 7, 12, 13 i 15.
9 9
9
P0 P1 P2 P3 P4 P5 P6
Minimizacija logičkih funkcija.
109
Kako imamo nepokrivenih minterma, potrebno je odlučiti koje još produkte treba uključiti kako bismo dobili potpuno pokrivanje. Naravno, pri tome treba paziti da se odabere upravo minimalno potreban broj. Postoji više načina za donošenje ove odluke, a jedan od njih bit će opisan u nastavku, i poznat je pod nazivom Pyne-McCluskey pristup. Kao što ćemo vidjeti, moguće je da u minimalnom obliku funkcija ima više mogućih prikaza, koji su svi jednakovrijedni. . Pyne-McCluskey pristup Svim članovima dajemo imena Pi, i=0, ..., 6. Definiramo funkciju pokrivenosti minterma p, koja se izvodi iz zahtjeva da svi mintermi koji nisu pokriveni primarnim članovima budu pokriveni. p = (P0 + P5 )(P5 + P6 )(P2 + P6 )(P0 + P1 )(P1 + P3 )(P2 + P3 ) = (P0 + P1P5 )(P6 + P2 P5 )(P3 + P1P2 ) = P0P3P6 + P1P2 P5 + ostalo (ostalo su članovi s četiri ili više varijabli) Dakle, dvije su mogućnosti. Možemo uključiti još članove P0, P3 i P6, ili članove P1, P2 i P5. Ovisno o tome, dobiju se slijedeće funkcije: f = A B + BC D + ABD + A C ili f = A B + ABC + BCD + A D Napomena: kod funkcije p tražimo produkt koji sadrži minimalni broj članova. To je opet minimizacijski problem jer će produkt sa minimalnim brojem članova sigurno biti dio minimalnog zapisa funkcije. Zbog toga prethodno opisani pristup gdje se sve izmnoži ne mora uvijek odgovarati minimalnom skupu, već se ovaj podproblem može ponovno napasti nekim od minimizacijskih postupaka (čak i Quinne-McCluskey metodom). Za vježbu. Minimizirati ovu funkciju K-tablicom. Ako se rezultat ne slaže, gdje je pogreška?
110
Zbirka riješenih zadataka
5.10. Zadatak Metodom Quine-McCluskey minimizirati funkciju f = ∑ (4,5,7,8,9,10,11,12,15) .
Minterm 0100 1000
0101 1001 1010 1100 0111 1011 1111
* *
* * * * * * *
(4) (8)
(5) (9) (10) (12) (7) (11) (15)
010x x100 100x 10x0 1x00 01x1 10x1 101x
* *
* *
x111 1x11
(4,5) (4,12) (8,9) (8,10) (8,12) (5,7) (9,11) (10,11)
10xx
(8,9,10,11)
(7,15) (11,15)
Ostali su sljedeći nekombinirani članovi: 010x, x100, 1x00, 01x1, x111, 1x11 i 10xx, što odgovara redom: A BC , BC D , AC D , A BD , BCD , ACD i AB . Napravimo tablicu pokrivenosti minterma:
A BC BC D AC D A BD BCD ACD AB
(4,5) (4,12)
4 9 9
5 9
7
8
9
10
11
9
(5,7) (7,15) (11,15)
9 9 9
(8,9,10,11)
15
9 9
9
(8,12)
12
9
9
9 9
9 9
Minterm 9 pokriven je samo s jednim članom ( AB ), pa je taj član primarni. Označimo što je sve pokriveno tim članom:
A BC BC D AC D A BD BCD ACD AB
(4,5) (4,12)
4 9 9
5 9
7
9
(8,12) (5,7) (7,15) (11,15) (8,9,10,11)
8
9
9 9
9
10
11
12
15
9 9 9 9
P0 P1 P2 P3 P4 P5 P6
9 9 9 9 9 8 8 8 8 8 Svi ostali nepokriveni mintermi pokriveni su s više od jednog preostalog člana, pa se postavlja pitanje koje još članove odabrati, tako da se pokriju svi mintermi, a zadrži minimalnost funkcije? Rješenje nudi Pyne-McCluskeyev pristup: iskaz "potrebno je pokriti preostale članove" treba zapisati kao Booleovu funkciju, i pronaći onaj produktni
Minimizacija logičkih funkcija.
111
član te funkcije koji sadrži minimalni broj varijabli. U prethodnoj tablici svi su članovi imenovani (P0 = A BC , P1=...). Da bismo pokrili minterm 4, trebamo uzeti P0 ili P1, i da bismo pokrili minterm 5, trebamo uzeti P0 ili P3, i da bismo pokrili minterm 7, trebamo uzeti P3 ili P4, i da bismo pokrili minterm 12, trebamo uzeti P1 ili P2, i da bismo pokrili minterm 15, trebamo uzeti P4 ili P5. Ovo možemo zapisati u obliku funkcije (obratiti pažnju na podebljane 'i' i 'ili' u prethodnoj rečenici): p = (P0 + P1 )(P0 + P3 )(P3 + P4 )(P1 + P2 )(P4 + P5 ) = P0 P1P3P4 + P0 P1P3P5 + P0 P2 P3P4 + P0 P2 P3P5 + P0 P1P4 + P0 P1P4 P5 + P0 P2 P4 + P0 P2 P4 P5 + P0 P1P3 P4 P5 + P0 P2 P3P4 P5 + P0 P1P2 P3P4 + P0 P1P2 P3 P5 + P0 P1P2 P4 + P0 P1P2 P4 P5 + P1P3P4 + P1P3P5 + P1P2 P3P4 + P1P2 P3P5 + P1P3 P4 P5 + P1P2 P3P4 P5 Minimalni broj varijabli u produktima iznosi 3, i to u dva slučaja. Dakle, možemo uzeti još sljedeće članove: • • • •
P0, P1 i P4, tj. P0, P2 i P4, tj. P1, P3 i P4, tj. P1, P3 i P5, tj.
A BC , A BC , BC D , BC D ,
BC D AC D A BD A BD
i i i i
BCD BCD BCD ACD
Tada su minimalni oblici funkcije redom: f = AB + A BC + BC D + BCD f = AB + A BC + AC D + BCD f = AB + BC D + A BD + BCD f = AB + BC D + A BD + ACD Svi ovi oblici su minimalni. 5.11. Zadatak Metodom K-tablica minimizirati funkciju: f = ∑ m(0,4,10,17,21,26,27,31) + ∑ d (1,5,7,8,11,16,19,20,23,24,25) .
Osim što imamo zadan popis minterma (za koje funkcija poprima 1), imamo zadan i popis kombinacija za koje nam je vrijednost funkcije nebitna (npr. jer se takav ulaz nikada neće niti dogoditi), što je označeno sumom d-članova. Budući da nam na tim mjestima vrijednost funkcije nije bitna, na nekim mjestima ćemo smatrati da funkcija poprima 1, a na nekima 0, kako bismo dobili što minimalniji oblik. Minimizacija se provodi na standardni način, s time da zaokruženja smijemo širiti i na područja prekrivena x-evima (smatrajući da tamo piše 1). No, kao i uvijek, postupak je potrebno provoditi tako dugo dok se ne pokriju sve jedinice. Ako neki od x-eva ostane nepokriven, smatrati ćemo da je vrijednost funkcije na tom mjestu baš nula, pa to nećemo niti trebati pokrivati.
112
Zbirka riješenih zadataka BD
ABC DE
000
001
00
1
1
01
X
X
011
010
100
101
X
X
X
X
1
1
X
X
X
ADE
111
110
E
11
X
X
10
1
1
D
1
B
C
1
C
E D
B
BC D
Koristili smo tablicu za 5 varijabli koja se temelji na 3D prikazu, a ne direktno na Grayevom kodu (vidi dodatak K-tablice). Npr. x-eve na 10000 i 10100 promatrali smo kao jedinice, kako bismo dobili što veće zaokruženje kod jedinica 10001 i 10101, dok smo x-eve na 01000 i 00111 zanemarili.
5.12. Zadatak Metodom K-tablica minimizirati funkciju: f = ∏ (0,2,3,6,7,8,10,11) .
BD
AB 00 CD
00
01
11
0
10
AC
0
BC
01 D
11
0
0
0
10
0
0
0 B
C
A
Prilikom minimizacije nule gledamo kao jedinice, i obavimo klasičnu minimizaciju, čime zapravo dobijemo minimizirani komplement funkcije:
Minimizacija logičkih funkcija.
113
f = AC + BD + BC pa je: f = f = ( A + C )( B + D)( B + C )
Komentar: Zašto su polja 0000, 1000, 0010 i 1010 susjedna? Sigurno znamo da su polja 0000 i njegovo zapadno polje 1000 susjedni. Međutim, ta dva polja imaju na sjeveru polja 0010 i 1010 sa kojima su susjedna, pa se ta četiri polja mogu obuhvatiti pravokutnikom dimenzija 2×2. 5.13. Zadatak Metodom K-tablica minimizirati funkciju: f = ∑ m(5,9,12,15) + ∑ d (2,7,8,10,13) .
BD AC
AB 00 CD
01
00
1
01
10
1
X
X
1 D
11 10
11
X
1
X
X B
C
A
f = AC + BD 5.14. Zadatak
Metodom K-tablica minimizirati funkciju f ( A, B, C , D ) = ∑ m(0,2, 4,7,8,9,10,11,13,15) : a) kao minimalnu sumu parcijalnih produkata, b) kao minimalne produkte parcijalnih suma.
a) Pronalaženje minimalne sume parcijalnih produkata:
114
Zbirka riješenih zadataka BD
AB CD
00
00
01
1
1
11
1
01 ACD
11 10
10
1
1
1
1
1
1
AD
1
BCD f = B D + BCD + AD + A C D
b) Pronalaženje minimalog produkta parcijalnih suma:
AB 00 CD
ABD
01
11
10
0
00 01
0
11
0
10
0 0
ACD
ABD
0
BCD
f = ABD + A B D + A C D + BCD f = ( A + B + D )( A + B + D )( A + C + D )(B + C + D ) 5.15. Zadatak
K-tablicama minimizirati funkciju f ( A, B, C , D) = ∑ m(1,3,12,13,14,15) ako je poznato da za ulazne varijable uvijek vrijedi B + D = 1 .
Minimizacija logičkih funkcija.
115
Iz činjenice da će za ulazne varijable uvijek vrijediti izraz B + D = 1 , zaključujemo da se nikada neće dogoditi da na sklop koji realizira zadanu funkciju dođe ulaz za koji tvrdnja ne vrijedi, tj:
B + D =1⇒ B + D ≠ 1 ⇒ B ⋅ D ≠ 0 ⇒ B ⋅ D =1 Ovaj je umnožak jednak 1 kada su oba njegova elementa istovremeno jednaka 1, dakle B = 1 ∧ D = 1 , odnosno B = 0 ∧ D = 0 (neovisno o A i C), što daje minterme oblika ABCD = ×0×0, dakle minterme m0, m2, m8, m10. Kako se ti mintermi nikada neće pojaviti, u svrhu minimizacije možemo ih tretirati kao don't care. Tada je postupak minimizacije prikazan u nastavku.
AB
AB
AB 00 CD
01
11
10
X
00
X
1
01
1
1
11
1
1
10
X
1
X
f = AB + A B 5.16. Zadatak Zadana je funkcija f ( A, B, C , D, E ) = ∑ m(0,4,10,17,21,26,27,31) + ∑ d (1,5,7,8,11,16,19,20,23,24,25) Minimizirati funkciju uporabom Quine-McCluskey metode.
Postupak rješavanja sličan je standardnom postupku, uz neke modifikacije: 1. Uz svaki se produkt vodi status produkta (u postupku će biti označen D: zastavicom gdje će vrijednost bita 1 označavati da je cijeli produkt zanemariv, tj. dontcare, a vrijednost 0 da je produkt nezanemariv, odnosno sadrži barem jednu jedinicu koja je bitna za funkciju). 2. Prilikom kombiniranja produkata u svrhu minimizacije, D: polje rezultata je logička I operacija D: polja kombiniranih produkata (što je intuitivno jasno minimizirani produkt je i dalje zanemariv samo ako su oba produkta koja su se minimizirala bili zanemarivi).
116
Zbirka riješenih zadataka
Postupak započinje tako da se generira početna tablica koja sadrži sve navedene minterme (bitne i zanemarive) – naravno, označene D: zastavicom. Nakon što se provede prvi korak do kraja, u drugom se koraku generira klasična tablica koja u stupcima sadrži samo one minterme koji nisu bili zanemarivi, a u retcima samo one produkte koji nisu bili označeni, i dodatno, koji nemaju zastavicu D: postavljenu na 1. Evo rješenja: 4) 1) 8) 16)
X0X00 * D:0 (0, 4, 00X0X * D:0 (0, 1, X000X * D:0 (0, 1, XX000 D:0 (0, 8,
16, 20) 4, 5) 16, 17) 16, 24)
00000 * D:0 (0)
00X00 0000X 0X000 X0000
* * * *
D:0 D:0 D:0 D:0
(0, (0, (0, (0,
00100 00001 01000 10000
* * * *
D:0 D:1 D:1 D:1
(4) (1) (8) (16)
0010X X0100 X0001 00X01 010X0 X1000 1000X 10X00 1X000
* * * * * * * * *
D:0 D:0 D:0 D:1 D:0 D:1 D:0 D:1 D:1
(4, 5) (4, 20) (1, 17) (1, 5) (8, 10) (8, 24) (16, 17) (16, 20) (16, 24)
X010X * D:0 (4, 5, 20, 21) X0X01 * D:0 (1, 5, 17, 21) X10X0 D:0 (8, 10, 24, 26) 10X0X * D:0 (16, 17, 20, 21) 1X00X D:0 (16, 17, 24, 25)
01010 10001 00101 10100 11000
* * * * *
D:0 D:0 D:1 D:1 D:1
(10) (17) (5) (20) (24)
X1010 0101X 10X01 100X1 1X001 X0101 001X1 1010X 110X0 1100X
* * * * * * * * * *
D:0 D:0 D:0 D:0 D:0 D:0 D:1 D:0 D:0 D:1
(10, 26) (10, 11) (17, 21) (17, 19) (17, 25) (5, 21) (5, 7) (20, 21) (24, 26) (24, 25)
X101X 10XX1 1X0X1 X01X1 110XX
10101 11010 00111 01011 10011 11001
* * * * * *
D:0 D:0 D:1 D:1 D:1 D:1
(21) (26) (7) (11) (19) (25)
101X1 1101X X0111 X1011 1X011 10X11 110X1
* * * * * * *
D:0 D:0 D:1 D:0 D:0 D:1 D:0
(21, 23) 1XX11 (26, 27) (7, 23) (11, 27) (19, 27) (19, 23) (25, 27)
D:0 D:0 D:0 D:0 D:0
X0X0X D:0 (0,1,4,5,16,17,20, 21)
(10, 11, 26, 27) (17, 19, 21, 23) (17, 19, 25, 27) (5, 7, 21, 23) (24, 25, 26, 27)
D:0 (19, 23, 27, 31)
11011 * D:0 (27) 11X11 * D:0 (27, 31) 10111 * D:1 (23) 1X111 * D:0 (23, 31) 11111 * D:0 (31)
Pogledajmo kako smo primjenjivali pojedina pravila. U prvoj koloni tablice nalaze se samo mintermi (dakle, produkti s maksimalnim brojem varijabli) grupirani po broju jedinica. Prvi minterm u prvoj grupi ima D: 0; to je zato što je taj minterm naveden u popisu bitnih minterma (dakle, nije dontcare). Drugi minterm u drugoj grupi (00001) ima D: 1 jer je to minterm 1 koji je naveden u listi dontcare funkcije f. Pogledajmo sada drugi stupac. Kombiniranjem minterma 0 i 1 dobili smo minterm 0000X uz D: 0. To je zato što je u tu kombinaciju uključen implikant 0 koji je bitan za funkciju pa je i cijeli produkt bitan za funkciju, odnosno nije dontcare. Međutim, kada smo kombinirali minterme 1 i 5, dobili smo produkt 00X01 koji ima D: 1, tj. cijeli produkt je zanemariv. Razlog leži u činjenici da smo kombinirali minterme 1 i 5 koji su oba zanemarivi, pa je i nastali produkt zanemariv. No zašto su nam uopće potpuno zanemarivi produkti bitni? Postoji mogućnost da će se u budućnosti neki takav nebitni produkt ipak spojiti s nekim bitnim što će pomoći u minimizaciji funkcije. Da je to istina, pogledajmo upravo na nebitnom produktu (1,5). U trećem stupcu taj smo produkt
Minimizacija logičkih funkcija.
117
kombinirali s nezanemarivim produktom (0,4), i dobili produkt (0,1,4,5) koji je također nezanemariv. Pogledajmo sada i drugi korak. 0 c'd'e' (0, 8, 16, 24) bc'e' (8, 10, 24, 26) ac'd' (16, 17, 24, 25) bc'd (10, 11, 26, 27) ab'e (17, 19, 21, 23) ac'e (17, 19, 25, 27) b'ce (5, 7, 21, 23) abc' (24, 25, 26, 27) ade (19, 23, 27, 31) b'd' (0, 1, 4, 5, 16, 17, 20, 21)
4 10 17 21 26 27
31
8 8
8 8
8
8 8 8
8
8 8 8 8
8 9
8 9
8 9
8 9
8 8
8
9
9
P0 P1 P2 P3 P4 P5 P6 P7 9 P8 9 P9
Uočavamo da postoje neoznačeni mintermi. Zbog toga primjenjujemo Pyne-McCluskey pristup za pronalaženje minimalnog broja produkata koji ih pokriva. Zahtjev: p = (P1 + P3)(P1 + P3 + P7 )
Rješenje jednadžbe: p = P1 + P1 ⋅ P3 + P1 ⋅ P7 + P3 + P3 ⋅ P7
Rješenja s minimalnim brojem članova su: P1 P3 Postoje dakle dva minimalna oblika funkcije f: 1. f = bc'e' + ade + b'd' 2. f = bc'd + ade + b'd'
5.17. Zadatak Zadane su funkcije f1 = ∑ (0,1,2,4,5,11,15) , f 2 = ∑ (0,2,4,13,15) , f 3 = ∑ (0,1,3, 4,5,7,13,15) . Pronaći minimalni oblik ovih funkcija takav da je ukupni broj produkata u svim funkcijama minimalan.
Ovaj problem može se riješiti uporabom Quine-McCluskey postupka opisanog u nastavku. Postupak je sličan standardnom postupku, uz neke modifikacije:
118
Zbirka riješenih zadataka •
Uz svaki se produkt vodi popis pripadnosti tog produkta pojedinim funkcijama (u postupku će biti označen F: poljem gdje će i-ti bit označavati pripadnost (1) ili odsustvo (0) i-toj funkciji. Prilikom kombiniranja produkata u svrhu minimizacije, F: polje rezultata je logička I operacija F: polja kombiniranih produkata (što je intuitivno jasno minimizirani produkt pripada i-toj funkciji samo ako oba produkta koja su se minimizirala pripadaju i-toj funkciji). Ukoliko je F: polje rezultata jednako 0, tada se taj minimizirani produkt odbacuje. Prilikom kombiniranja produkata u svrhu minimizacije označavaju se samo oni produkti čije je F: polje jednako F: polju kombiniranog produkta! Inače se produkt ne označava (iako je iskorišten za kombiniranje).
•
•
Uz ove napomene postupak je sljedeći. U prvoj fazi pronalaze se primarni implikanti (produkti). Zatim se konstruira tablica pokrivanja primarnih implikanata i minterma za sve funkcije. Traže se bitni primarni implikanti. Ukoliko sve funkcije nakon pronalaženja bitnih primarnih implikanata nisu pokrivene, provodi se Pyne-McCluskey kako bi se dobilo potpuno pokrivanje s minimalnim brojem preostalih implikanata. Konačno se u zadnjem koraku traži minimalno pokrivanje za svaku funkciju posebno, a ukoliko to nije odmah vidljivo, može se ponoviti Pyne-McCluskey samo za određenu funkciju. 0000 * F:111 (0)
0001 0010 0100 0101 0011
* * * * *
F:101 F:110 F:111 F:101 F:001
000X 00X0 0X00 0X01 00X1 010X X101 01X1 0X11 1X11 11X1 X111
(1) (2) (4) (5) (3)
1011 * F:100 (11) 1101 * F:011 (13) 0111 * F:001 (7) 1111 F:111 (15)
* F:101 F:110 F:111 * F:101 * F:001 * F:101 * F:001 * F:001 * F:001 F:100 F:011 * F:001
(0, 1) (0, 2) (0, 4) (1, 5) (1, 3) (4, 5) (5, 13) (5, 7) (3, 7) (11, 15) (13, 15) (7, 15)
f1 0
1
2
4
11
15
0
2
4
a'c'd'
8
8 8
F:001 (5, 7, 13, 15)
0
1
3
4
8
8
8 8
8
8 8
bd 9
9
9
9
13
15
8
8
9
7
8
a'd
9
5
8
8
8 8
15
8
abd 8
X1X1
8
8 8
8
F:001 (1, 3, 5, 7)
8 8
acd
a'c'
0XX1
f3 13
8 8
F:101 (0, 1, 4, 5)
f2 5
abcd a'b'd'
0X0X
9
9
9
9
9
9
9
9
9
9
8
8 8
8
8
8
8
8
9
9
9
9
P0 9
P1
9
P2
9
P3
9
P4
9
P5
9
P6 P7
Minimizacija logičkih funkcija.
119
Pronađeni bitni primarni implikanti P1-P6 pokrivaju sve minterme i dovoljni su za realizaciju svih funkcija (produkti P0 i P7 automatski se ne smiju koristiti želimo li zaista minimalni zapis funkcija). Sada treba samo uporabom dozvoljenih produkata (P1-P6) pokriti svaku funkciju, ali na minimalan način. Provedemo li postupak odabira bitnih primarnih implikanata u prethodnoj tablici samo za f1, dobiti ćemo potpuno pokrivanje, i minimalni oblik: f1 = a'b'd' + acd + a'c' Provjera za f2 također daje jednoznačan rezultat: f2 = a'b'd' + a'c'd' + abd Međutim, kod f3 nemamo potpuno pokrivanje. Ostanu nam mintermi 0, 4, 13 i 15 koje treba pokriti. Primjenom Pyne-McCluskey metode dobijemo: p = ( P 2 + P5)( P2 + P5) = P 2 + P5 + P2 ⋅ P5
Rješenja s minimalnim brojem članova su P2 i P5, što vodi na dvije moguće minimalne implementacije funkcije f3: f3 = a'c'd' + abd + a'd f3 = abd + a'c' + a'd 5.18. Zadatak Minimizirati funkciju f =
∑ m(3,4,5,7,9,13,14,15) .
Na ovom primjeru pokazat ćemo jednu od čestih pogrešaka koje se događaju prilikom minimizacije. Krenimo u minimizaciju tako da pronađemo najveće moguće zaokruženje – minterme 5, 7, 13 i 15, kao što je prikazano na slici. BD
AB 00 CD
01
11
10
1
00
1
01
1
1
1
1
11
D
1
10
C
1 B
A
120
Zbirka riješenih zadataka
Minimizirajmo i preostale članove: BD
A BC
AB 00 CD
01
00
1
01
1
11
AC D
11
10
1
1 D
1
1
1
10
C
1 A
B
A CD
ABC
Na prvi pogled izgleda da je rezultat minimizacije funkcija: f = BD + ABC + A CD + A BC + AC D No analizirajmo sada malo bolje prvo zaokruženje koje smo napravili. Osnovna ideja minimizacije jest pokriti sve minterme, ali tako da se u svakom zaokruženju nalazi barem jedan minterm kojeg ne pokriva niti jedno drugo zaokruženje – to je uvjet minimalnosti. No kao što vidimo, minterm 5 spojen je i s mintermom 4, minterm 7 i s mintermom 3, minterm 13 i s mintermom 9 a minterm 15 i s mintermom 14. Dakle, svaki od ta četiri minterma dodatno je pokriven nekim drugim zaokruženjem, te je stoga redundantan. To veliko zaokruženje treba izbaciti iz dobivenog izraza, kako bismo dobili minimalni oblik. Konačni rezultat minimizacije prikazan je slikom: A BC
AB 00 CD
01
00
1
01
1
11
AC D
11
10
1
1 D
1
1
1
10
A CD
Minimalni oblik zadane funkcije tada je:
C
1 B
A
ABC
Minimizacija logičkih funkcija.
121
f = ABC + A CD + A BC + AC D Pokušajmo sada razmišljati na drugi način. Izbacili smo najveće zaokruženje, a ostavili manja (dakle, koja ovise o više varijabli). Možemo li nekako ipak to najveće zaokruženje ostaviti, a manja proglasiti redundantima? Npr. pokušajmo sa zaokruženjem koje obuhvaća minterme 3 i 7. Kada bi veliko zaokruženje ostalo, ono bi pokrivalo minterm 7. No minterm 3 nitko drugi ne pokriva! A budući da prilikom minimizacije uvijek tražimo najveća moguća zaokruženja, minterm 3 nužno ćemo pokriti zaokruženjem koje se proteže preko minterma 7. Dakle, zaokruženje 3 i 7 nužno ostaje. Sličnu analizu možemo provesti i za ostala dvočlana zaokruženja. Svako od njih pokriva jedan minterm koji nitko drugi ne pokriva. Konačan rezultat analize slaže se, dakle, s prethodnim rješenjem – potrebno je odbaciti veliko zaokruženje. Ovakve pogreške vrlo su česte u rješavanju zadatka minimizacije. Zbog toga je nakon postupka minimizacije uvijek potrebno provjeriti uvjet minimalnosti: Uvjet minimalnosti – svako zaokruženje koje ulazi u minimalni oblik funkcije mora imati barem jedan minterm (ili maksterm) koji je pokriven isključivo njime. Iz ovog pravila slijedi i uvjet redundantnosti: Uvjet redundantnosti – zaokruženje čiji je svaki minterm (ili maksterm) pokriven još nekim zaokruženjem jest redundantno. 5.19. Zadatak Minimizirati funkciju f = ∑ m(0,2,8,9,10,11,13,15) .
Pokažimo opet "točan" način rješavanja:
BD
AD
AB 00 CD
00
01
11
1
10
1
01
1
1
11
1
1
10
1
1
AB
122
Zbirka riješenih zadataka
Dakle, imamo veliko zaokruženje skroz desno ( AB ), veliko zaokruženje u sredini ( AD ), i veliko zaokruženje minterma u kutevima tablice ( B D ). Rješenje je, dakako, krivo! Pažljivom analizom može se uočiti da je prvo zaokruženje ( AB ) redundantno (možete li objasniti zašto?). Ispravno rješenje tada je:
BD
AD
AB 00 CD
00
01
11
1
10
1
01
1
1
11
1
1
10
1
1
Minimalni oblik funkcije glasi: f = B ⋅ D + A⋅ D
5.20. Zadatak Zadana je funkcije f koja za ulazni trobitni binarno kodirano broj određuje da li je broj djeljiv sa 4. a) pronaći minimalni oblik funkcije f, b) pronaći minimalni oblik funkcije f, ako je poznato da će sklop koji obavlja ovu funkciju ulaz dobivati sa sklopa koji obavlja kvadriranje.
a) prikažimo funkciju tablično: n 0 1 2 3 4 5 6 7
b2 0 0 0 0 1 1 1 1
b1 0 0 1 1 0 0 1 1
b0 0 1 0 1 0 1 0 1
f 1 0 0 0 1 0 0 0
Minimizacija logičkih funkcija.
b1 ⋅ b0
b1b0 00 b2
123
0
1
1
1
01
11
10
b2 b1
b0 f = b1 ⋅ b0
b) ako je ulaz sklopa koji ostvaruje funkciju f spojen na izlaz sklopa koji obavlja kvadriranje, tada se na njegovom izlazu mogu pojaviti samo brojevi 0, 1 i 4 jer su to jedini kvadrati cijelih brojeva koji se mogu u binarnom zapisu zapisati pomoću tri bita. No to znači da nam je rezultat funkcije f bitan samo u ta tri slučaja, a ostalo nas nije briga. Zbog toga tablični prikaz funkcije korigiramo kao što je prikazano u nastavku. n 0 1 2 3 4 5 6 7
b1 0 0 1 1 0 0 1 1
b2 0 0 0 0 1 1 1 1
b0 0 1 0 1 0 1 0 1
b0
b1b0 00 b2
0
1
1
1
01
× b0
f = b0
11
10
×
×
×
× b1
b2
f 1 0 × × 1 × × ×
124
Zbirka riješenih zadataka
5.21. Pismeni ispit, 25. 02. 2004, 1. zadatak Zadana je dvoizlazna funkcija f=[f1, f2] pri čemu su izlazi definirani sljedećim izrazima: f1 ( A, B, C , D ) = ∑ m(0,1, 2,6,8,10) i f 2 ( A, B, C , D ) = ∏ M (0,1,2,3,4,5,9,11,12,13,14,15) . Pronaći njezin minimalni oblik koristeći Quine-McCluskey metodu minimizacije za višeizlazne funkcije.
Funkcija f2 nije zadana u prikladnom obliku za Quinne-McCluskey metodu – trebamo njezin zapis u obliku sume minterma. Slijedi: f 2 = ∑ m(6,7,8,10) .
Dalje je postupak standardan. 0000 * F:10 (0)
0001 0010 1000 0110 1010 0111
X0X0
000X F:10 (0, 1) 00X0 * F:10 (0, 2) X000 * F:10 (0, 8) 0X10 F:10 (2, 6) X010 * F:10 (2, 10) 10X0 F:11 (8, 10) 011X F:01 (6, 7)
* F:10 (1) * F:10 (2) * F:11 (8) F:11 (6) * F:11 (10) * F:01 (7)
f1 0 a'bcd' a'b'c' a'cd' ab'd' a'bc b'd'
8
1
2
f2 6 8
8
10
6 8
7
8
10
8
9 8
8 8
8 9
F:10 (0, 2, 8, 10)
8
8 9
9
8 8 9
8
8
9
9
8
8
9
9
9 9
P0 P1 P2 P3 P4 P5
Iz tablice se vidi da postoje neki neoznačeni mintermi. Potrebno je primijeniti PyneMcCluskey pristup za pronalaženje minimalnog broja produkata koji ih pokriva, a još nisu označeni (P0, P2, P5). p = ( P2 + P5) ⋅ ( P0 + P 2) = P 2 + P0 ⋅ P 2 + P0 ⋅ P5 + P 2 ⋅ P5
Minimalno pokrivanje postiže se dodavanjem produkta P2. Produkte P0 i P5 tada se ne smije koristiti, pa ćemo ih izbaciti iz tablice: f1 a'b'c' a'cd' ab'd' a'bc
0 8
1 8
2 8
f2 6
8
10
6
7
8
10
8 8
8
8 8
8
8
P1 P2 P3 P4
Minimizacija logičkih funkcija.
125
Sada treba na temelju dobivene tablice minimizirati svaku funkciju posebno. Imamo: f1 a'b'c' a'cd' ab'd' a'bc
0 8
1 8
2 8
9
9
9
6
8
10
8
9
8
8
9
9
9 9
P1 P2 P3 P4
9 9 9
P1 P2 P3 P4
f1 = A B C + A CD + AB D f2 6 a'b'c' a'cd' ab'd' a'bc
8 9
7
8 9
8
10
8
8
9
9
f 2 = AB D + A BC 5.22. Pismeni ispit, 10. 10. 2003, 3. zadatak Funkcije f(A,B,C,D) i g(A,B,C,D) zadane su slikom. Metodom K-tablica izračunati minimalni oblik funkcije z = f ⊕ g , ako je poznato da će uvijek vrijediti: B (D + A ) ⋅ (B + A ⋅ D ) = 0 .
f AB CD 1 0 0 1 1 0 0 1
0 1 0 1
0 0 1 0
g AB CD 0 1 0 1 0 0 0 1
0 0 1 1
1 0 0 1
U slučaju da imamo tablični prikaz funkcija, zadatak možemo rješavati na dva načina. Prvi način podrazumijeva očitavanje algebarskog oblika svake od funkcija f i g, obavljanje zadane operacije nad njima kako je to definirano izrazom funkcije z, i zatim zapis funkcije z natrag u tablični oblik kako bismo mogli obaviti minimizaciju. Drugi način (koji ćemo i koristiti u nastavku) prestavlja direktan rad s tabličnim oblikom funkcija (čime se izbjegava pretvorba u algebarski oblik i vraćanje natrag). Naime, vrijedi sljedeće. Ako tablični zapis funkcije promatramo kao matricu, tada će (uz zadan izraz za z) vrijediti: z (i, j ) = f (i, j ) ⊕ g (i, j )
Dakle, definiranu operaciju treba jednostavno primijeniti za svaki par elemenata tablice. Dobije se sljedeći prikaz funkcije z:
126
Zbirka riješenih zadataka AB
z: CD
0 1 0 1
0 1 1 1
1 0 0 1
0 1 0 0
Prije no što krenemo na minimizaciju, moramo još iskoristiti sve što bi moglo dodatno pridonijeti minimizaciji. Budući da znamo da će uvijek vrijediti izraz: B ( D + A) ⋅ ( B + A ⋅ D ) = 0
slijedi: (B + A ⋅ D ) ⋅ ( B + A ⋅ D ) = 0 ⇒ A ⋅ D (B + B ) = 0 ⇒ A ⋅ D = 0 Odavde možemo očitati koje se kombinacije ulaznih varijabli nikada neće pojaviti kod funkcije, te ih možemo proglasiti don't care vrijednostima. Ako to još nije očito, možemo si pomoći i dalje. Naime, ako će prethodni izraz uvijek vrijediti, tada njegov komplement nikada neće vrijediti: A ⋅ D = 0 ⇒ A ⋅D ≠ 0 ⇒ A+ D ≠1⇒ A+ D = 0 Dakle, nikad neće biti A+D jednako 0, što znači da su oni mintermi kod koji su A i D istovremeno jednaki 0 (jer je tada i A ILI D jednako 0) zapravo don't care mintermi. To su redom m0, m2, m4 i m6. Označimo te minterme u tablici, i krenimo na minimizaciju. Minimizacijom tada slijedi:
AB
z: CD
AB 00
01
11
00
×
×
1
01
1
1
1
1 ×
×
C
1 B
z = A B + BD + B C D
BCD
D
11 10
10
A
BD
Minimizacija logičkih funkcija.
127
5.23. Zadatak Zadana je funkcija f ( A, B, C ) = ∑ (1,5,6,7) . Funkciju je potrebno realizirati uporabom I, ILI i NE logičkih sklopova. Pri tome pretpostaviti da izlaz svakog od osnovnih logičkih sklopova kasni 10 ns. a) Analizirati rad sklopa koji direktno realizira funkciju. b) Minimizirati funkciju, prikazati sklopovsku realizaciju i opet analizirati rad. c) Kako se može ukloniti hazard u sklopu?
a) Raspišimo funkciju algebarski: f ( A, B, C ) = A B C + AB C + ABC + ABC Direktna realizacija ove funkcije prikazana je na slici.
A
&
i1
1 B 1
&
i2
C
≥1
1
&
&
f
i3
i4
Za analizu rada poslužit ćemo se Xilinx WebISE alatom. Svaki od osnovnih sklopova opisan je kao komponenta u VHDL-u kod koje izlaz kasni za ulazom 10 ns, a opis cijelog sklopa prikazan je u nastavku. library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity sklop1 is Port ( a : in std_logic; b : in std_logic; c : in std_logic; f : out std_logic); end sklop1; architecture Behavioral of sklop1 is component sklopNOT is Port ( a : in std_logic; z : out std_logic); end component; component sklopOR4 is
128
Zbirka riješenih zadataka
Port ( a, b, c, d : in std_logic; z : out std_logic); end component; component sklopAND3 is Port ( a, b, c : in std_logic; z : out std_logic); end component; signal ac, bc, cc, i1, i2, i3, i4: std_logic; begin ac1: bc1: cc1: i11: i21: i31: i41: o11:
sklopNOT PORT MAP (a,ac); sklopNOT PORT MAP (b,bc); sklopNOT PORT MAP (c,cc); sklopAND3 PORT MAP (ac,bc,c,i1); sklopAND3 PORT MAP (a,bc,c,i2); sklopAND3 PORT MAP (a,b,c,i3); sklopAND3 PORT MAP (a,b,cc,i4); sklopOR4 PORT MAP (i1, i2, i3, i4, f);
end Behavioral;
Kako se sklop ponaša, najbolje se vidi iz simulacije. Pri tome nisu simulirani svi mogući ulazi, već samo neki. Rezultat je prikazan na slici.
Da li je izlaz u skladu s očekivanjima? Očito nije jer se na mjestima gdje bi funkcija trebala biti stalno u '1' pojavljuju kratkotrajni impulsi '0'. Pogledamo li još malo bolje valne oblike, vidimo čak da ne vrijedi jedan od temeljnih zakona Booleove algebre, tj. ne vrijedi A + A = 1 (npr. prvi signal je A, drugi je njegov komplement; u određenim trenucima oba signala imaju iste vrijednosti)! Analizirajmo sada detaljnije jedan konkretan slučaj. U trenutku t = 300 ns signali A, B i C imaju vrijednost '1'. U trenutku t = 400 ns signal C pada na vrijednost '0'. Nedugo nakon toga izlaz funkcije je pogrešan. Krenimo analizirati sklop od samog izlaza. Izlaz cijelog sklopa je ILI sklop koji će na svome izlazu dati '1' kada mu je barem jedan od ulaza u '1'. No kako izlaz padne u '0' to očito u jednom trenutku nije bilo zadovoljeno. U trenutku t = 400 ns izlaz je bio u '1' jer je sklop i3 na svom izlazu držao '1'. Promjenom signala C na '0' u tom trenutku započinje propagacija novog izlaza i3, koji u ovom slučaju iznosi '0'. Ta nula na izlaz sklopa i3 stigne u trenutku t = 410 ns (jer izlaz sklopa kasni za ulazom 10 ns). Pogledamo li sada izlaze sklopova i1, i2, i3 i i4, svi su u '0'! Zbog toga će se 10 ns kasnije, dakle u trenutku t = 420 ns pojaviti izlaz '0'. Međutim, ovo dakako nije stabilno stanje. Pogledamo li što se događa s izlazom i4, vidimo da on u trenutku t = 420 ns prijeđe u '1'. Time je ponovno na ulazu ILI sklopa prisutna jedinica, te izlaz ILI sklopa 10 ns kasnije prelazi u '1', gdje i ostaje. Iz ove analize vidimo da je vrijeme trajanja pogrešnog izlaza jednako 10 ns, a pogreška se je pojavila zbog toga što je jedinica na izlazu i3 nestala prije no što se je pojavila jedinica na izlazu i4, pa je konačni rezultat pojava hazarda. Hazard ovog tipa, gdje je
Minimizacija logičkih funkcija.
129
izlaz stalno u '1' (osim kada kratkotrajno prijeđe u '0') naziva se statički '1' hazard. No zašto je izlaz i4 kasnio? Analizirajmo što se događa s njegovim ulazima. Prva dva ulaza spojena su na signale A i B. U trenutku t = 400 ns oni se ne mijenjaju. Na treći se ulaz dovodi signal C . No on postaje '1' tek u trenutku t = 410 ns, a ne odmah kada C padne na '0'! Zbog toga sklop i4 na svojim ulazima dobije sve '1' tek u trenutku t = 410 ns te se njegov odziv '1' dobije 10 ns kasnije, dakle u trenutku t = 420 ns. Očito je glavni krivac za cijeli događaj invertor! Naime, u trenutku t = 400 ns kad je C pao na '0' invertor koji generira signal C ovu promjenu zakasni 10 ns, tako da na ulaz sklopa i4 signali A i B dođu odmah (u t = 400 ns), a ispravan signal C stigne tek u t = 410 ns. Razlog pojave hazarda dakle je u različitom vremenu potrebnom da svi signali prođu kroz sklop do izlaza (signali A, B i C to učine nakon dva sklopa, a njihovi komplementi tek nakon tri sklopa). Opisani hazard nastupio je pri prijelazu ABC="111" u ABC="110". Da li se događa hazard na suprotnom prijelazu, tj. ako se iz ABC="110" vratimo natrag u ABC="111"? Ova se promjena može pogledati u trenutku t = 500 ns. Hazard se nije dogodio! Zašto? Pogledajmo kako su se sada mijenjali izlazi sklopova i3 i i4. Sklop i3 prešao je u '1' već u trenutku t = 410 ns, dok je sklop i4 ostao na '1' sve do t = 420 ns, nakon čega je pao na '0'. Očito je na ulazima ILI sklopa cijelo vrijeme bila prisutna jedinica i nije došlo do pojave hazarda (iako se može uočiti da je sklop i4 opet kasnio čak 20 ns s promjenom; no, sada to kašnjenje nije rezultiralo pogrešnim radom sklopa). Koji se zaključak može izvesti iz ove analize? Ako je sklop realiziran kao u zadatku (na izlazu ILI koji dobiva izlaze I sklopova), hazard će se javiti prilikom one promjene ulaza kod koje jedan od ulaznih signala iz '1' prelazi u '0'. Kako se ovdje svaki minterm realizira jednim I sklopom, broj hazardnih prijelaza je relativno velik, što potvrđuju i rezultati simulacije. Neki od prijelaza kod kojih se javlja hazard prikazani su u tablici, kao i strelicama u K-tablici.
f:
BC 00 A
Prijelaz "101"→"001" "111"→"110" "111"→"101" "111"→"001" "110"→"001"
0
1
1
1
Razlog hazarda A pada u '0' C pada u '0' B pada u '0' A i B padaju u '0' A i B padaju u '0'
b) Minimizirajmo funkciju. Dobije se: f = B C + AB
01
11
10
1
1
Vidljivo gdje? t = 200 ns t = 400 ns t = 600 ns t = 800 ns t = 1200 ns
130
Zbirka riješenih zadataka
VHDL model sklopa koji realizira ovu funkciju prikazan je u nastavku. library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity sklop2 is Port ( a, b, c : in std_logic; f : out std_logic); end sklop2; architecture Behavioral of sklop2 is component sklopNOT is Port ( a : in std_logic; z : out std_logic); end component; component sklopOR2 is Port ( a, b : in std_logic; z : out std_logic); end component; component sklopAND2 is Port ( a, b : in std_logic; z : out std_logic); end component; signal bc, i1, i2: std_logic; begin bc1: i11: i21: o11:
sklopNOT PORT MAP (b,bc); sklopAND2 PORT MAP (bc,c,i1); sklopAND2 PORT MAP (a,b,i2); sklopOR2 PORT MAP (i1, i2, f);
end Behavioral;
Simulacijom ponašanja sklopa na istu pobudu kao u prvom slučaju dobivamo sljedeći rezultat:
Broj hazardnih impulsa manji je nego u prvom slučaju! Hazardi koji su ostali prikazani su u tablici: Prijelaz "111"→"101" "111"→"001" "110"→"001"
Razlog hazarda B pada u '0' A i B padaju u '0' A i B padaju u '0'
Vidljivo gdje? t = 600 ns t = 800 ns t = 1200 ns
Nestali su hazardi pri prijelazu "101"→"001" kao i pri prijelazu "111"→"110". Pogledamo li kako izgleda ova funkcija prikazana u K-tablici, razlog njihovog nestanka odmah će biti jasan.
Minimizacija logičkih funkcija.
f:
131
BC 00 A
01
0
1
1
1
11
10
1
1
Sivim strelicama označeni su uklonjeni hazardi. Gdje se je to dogodilo? Odgovor je unutar svakog produkta! Pogledajmo npr. produkt B C . Izvorno je hazard nastajao kada je A prelazio iz '1' u '0', uz B='0' i C='1'. Kako sada ova oba minterma pokriva jedan produkt B C (koji uopće ne ovisi o A), ne dolazi do hazarda. Međutim, hazardi između pojedinih produkata ostali su i dalje. c) Što se još može učiniti kako bismo dodatno uklonili pojavu hazarda? Često se na promjene ulaza funkcije može postaviti sljedeći uvjet (i): dozvoljena je istovremena promjena samo jedne ulazne varijable. To u K-tablici znači da će se ulazi mijenjati samo u susjedna polja. Na taj način nestaju još dva hazarda: "111"→"001" i "110"→"001":
f:
BC 00 A
01
0
1
1
1
11
10
1
1
Na ovaj su način preostali još samo hazardi koji nastaju kada ulazi prelazi iz jednog produkta u susjedno polje koje pokriva neki drugi produkt. Takvi se hazardi mogu ukloniti uvođenjem redundancije; naime, trebamo uvesti novi produkt koji će sadržavati susjedne minterme između kojih nastaje hazard. U zadatku to konkretno znači da treba uvesti redundantni produkt AC :
f:
BC 00 A
01
0
1
1
1
11
10
1
1
Time funkcija poprima oblik f = B C + AB + AC i više očito nije minimalna. No, ako vrijedi prethodno uveden uvjet, tada ovako realizirana funkcija više nema statičkog '1' hazarda. VHDL model sklopa koji realizira funkciju prikazan je u nastavku:
132
Zbirka riješenih zadataka
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity sklop3 is Port ( a, b, c : in std_logic; f : out std_logic); end sklop3; architecture Behavioral of sklop3 is component sklopNOT is Port ( a : in std_logic; z : out std_logic); end component; component sklopOR3 is Port ( a, b, c : in std_logic; z : out std_logic); end component; component sklopAND2 is Port ( a, b : in std_logic; z : out std_logic); end component; signal bc, i1, i2, i3: std_logic; begin bc1: i11: i21: i31: o11:
sklopNOT PORT MAP (b,bc); sklopAND2 PORT MAP (bc,c,i1); sklopAND2 PORT MAP (a,b,i2); sklopAND2 PORT MAP (a,c,i3); sklopOR3 PORT MAP (i1, i2, i3, f);
end Behavioral;
Rezultat simulacije uz istu pobudu kao i u prethodnom primjeru prikazan je u nastavku.
Kao što se vidi iz simulacije, jedini preostali hazardi javljaju se pri promjenama ulaza kod kojih se mijenja više od jedne varijable istovremeno (čime uvjet (i) nije zadovoljen). Za sve promjene ulaza koje zadovoljavaju uvjet (i) hazard se ne pojavljuje. U ovom zadatku provedena je analiza rada sklopa koji funkciju realizira kao sumu produkata. Pri tome se mogu razmatrati četiri različita slučaja: • • •
ulazne varijable mijenjaju se iz polja gdje funkcija poprima '0' u polje gdje funkcija poprima '0', ulazne varijable mijenjaju se iz polja gdje funkcija poprima '0' u polje gdje funkcija poprima '1', ulazne varijable mijenjaju se iz polja gdje funkcija poprima '1' u polje gdje funkcija poprima '0' te
Minimizacija logičkih funkcija. •
133
ulazne varijable mijenjaju se iz polja gdje funkcija poprima '1' u polje gdje funkcija poprima '1'.
Prilikom analize promatrali smo samo zadnji slučaj. Za vježbu. Funkcija f iz zadatka može se također prikazati i realizirati kao produkt suma f = ∏ (0, 2,3,4) . Sklopovska realizacija funkcije tada će na izlazu imati I sklop. Analizirajte pri kojim se prijelazima u ovom slučaju javlja hazard (za sva četiri tipa prijelaza), i to za slučaj kada se svaki maksterm realizira zasebnim sklopom, te za slučaj kada se obavi minimizacija. Uklonite sve preostale hazarde, uz pretpostavku da će za promjene ulaznih varijabli vrijediti uvjet (i). 5.24. Zadatak Kada vršimo minimizaciju funkcije K-tablicom, tražimo minimalni zapis funkcije prema kojim kriterijima? Da li je dobiven prikaz funkcije najminimalniji?
Definirajmo ρ(f,z) mjeru složenosti implementacije funkcije f kao sumu broja potrošenih logičkih sklopova i broja ulaza na svakom od tih sklopova, uz neki zapis z funkcije f. K-tablicama se dobiva onaj zapis z' funkcije f za koji je ρ(f) minimalno uz dodatni uvjet da se funkcija implementira kroz maksimalno dvorazinsku logiku (ne računajući invertore). Pogledajmo to na primjeru funkcije f ( A, B, C , D ) = ABC + ABCD + ABC + AB CD . Za realizaciju ove funkcije (uz zadani zapis z) potrošili bismo 4 I logička sklopa (2 troulazna i 2 četveroulazna) te jedan četveroulazni ILI sklop. Tada je očito mjera složenosti funkcije jednaka ρ(f,z)=4+1+2⋅3+2⋅4=19. Nakon minimizacije K-tablicom funkcija f poprima zapis z': f ( A, B, C , D ) = AB + ACD . Mjera složenosti funkcije sada je jednaka ρ(f,z')=2+1+2⋅2+1⋅3=10. Ovime je pronađen minimalni zapis funkcije u obliku sume parcijalnih produkata. No može li se pronaći zapis funkcije z'' za koji je mjera složenosti još manja? Generalno govoreći, potrebno je izbaciti dodatni uvjet koji postoji kod minimizacije K-tablicom: funkcija više ne mora biti izvedena kroz najviše dvije razine logike. Ako to uvažimo, funkciju f možemo dalje zapisati kao z'': f ( A, B, C , D ) = A ⋅ ( B + CD ) . Mjera složenosti funkcije sada je jednaka ρ(f,z'')=2+1+2⋅2+1⋅2=9. Dakle, pronašli smo zapis funkcije kod kojega je mjera složenosti ρ još manja. Međutim, treba napomenuti da dobiveno rješenje ima jednu manu u odnosu na rješenje K-tablica: povećan je broj razina logike, što u čisto logičkom smislu nema nikakvog utjecaja, no prilikom realizacije funkcije veći broj razina logike automatski znači i duže vrijeme prolaska signala kroz logičke sklopove i time kasnija reakcija samog sklopa.
134
Zbirka riješenih zadataka
5.25. Zadatak Objasnite sljedeće pojmove: implikant, primarni implikant, bitni primarni implikant na primjeru funkcije f ( A, B, C ) = ∑ m(1,3,6,7) .
Prikažimo funkciju pomoću K-tablice.
00 A
AC
ABC
BC 0
BC
01
11
1
1
10
1
1 AB
1
A BC
A
B
C ABC
ABC
Implikant je svaki produkt koji povlači da je vrijednost funkcije 1 (u tablici to su sva moguća zaokruženja). Npr. ova funkcija ima četiri implikanta (u tablici zasivljeno) koji ujedno odgovaraju i mintermima: A ⋅ B ⋅ C , A ⋅ B ⋅ C , A ⋅ B ⋅ C i A ⋅ B ⋅ C . Naime, čim je npr. A=0, B=0 i C=1 (što odgovara mintermu A ⋅ B ⋅ C ) funkcija je u 1 (dakle, taj produkt implicira vrijednost funkcije). Osim navedenih, ova funkcija ima još i sljedeće implikante: A ⋅ C , A ⋅ B i B ⋅ C . Od navedenih 7 implikanata, samo su tri primarna implikanta: A ⋅ C , A ⋅ B i B ⋅ C . Naime, primarni implikanti su oni implikanti koji nisu u cijelosti sadržani niti u jednom drugom implikantu. Tako npr. implikant A ⋅ B ⋅ C nije primarni jer je sadržan u implikantu A ⋅ C . Od navedena tri primarna implikanta zadana funkcija ima samo dva bitna primarna implikanta: A ⋅ C i A ⋅ B . Naime, bitni primarni implikant je primarni implikant koji sadrži barem jedan minterm koji nije sadržan niti u jednom drugom primarnom implikantu. Tako npr. bitni primarni implikant A ⋅ C sadrži minterm A ⋅ B ⋅ C koji nije sadržan niti u jednom drugom primarnom implikantu. Sada je jasno i zašto B ⋅ C jest primarni implikant, ali nije bitni primarni implikant: on sadrži minterme A ⋅ B ⋅ C i A ⋅ B ⋅ C , od kojih je prvi pokriven primarnim implikantom A ⋅ C a drugi primarnim implikantom A ⋅ B . Važno je uočiti da funkcija može biti zadana tako da nema niti jedan bitni primarni implikant! Vidi neriješene zadatke za primjer. ZADACI ZA VJEŽBU 1.
Pronaći sve implikante, primarne implikante te bitne primarne implikante funkcije f ( A, B, C , D) = ∑ m(0,1, 4,5,10,13,14) .
Minimizacija logičkih funkcija.
135
2.
Pronaći sve implikante, primarne implikante te bitne primarne implikante funkcije f ( A, B, C , D ) = ∑ m(0,1,3, 4,7,12,13,15) . (Naputak: ne postoje bitni primarni implikanti! Zašto?)
3.
Ako kao mjeru složenosti sklopa definiramo sumu broja logičkih sklopova i broja ulaza koje ti sklopovi moraju imati potrebnih za realizaciju funkcije sklopa u zapisu z, u kakvom su odnosu mjere složenosti: a) funkcije f zapisane u obliku minimalne sume parcijalnih produkata i funkcije f zapisane u obliku minimalnog produkta parcijalnih suma? b) funkcije f zapisane u obliku minimalne sume parcijalnih produkata i funkcije f zapisane u obliku minimalnog produkta parcijalnih suma? c) funkcije f zapisane u obliku minimalnog produkta parcijalnih suma i funkcije f zapisane u obliku minimalne sume parcijalnih produkata?
4.
Zadana je funkcija f ( A, B, C , D ) = ∑ m(4,5,6,7,8,9,10,11,12,13) . K-tablicom pronaći minimalni oblik funkcije. Naputak: budući da nije zadano treba li minimizirati nule ili jedinice, potrebno je pronaći onaj oblik funkcije koji troši minimalni broj logičkih sklopova.
5.
Može li se Quinne-McCluskey metoda (ili bolje rečeno ideja) primijeniti na pronalaženje minimalnog oblika funkcije u obliku produkta parcijalnih suma? Objasnite to na primjeru pokušaja minimizacije funkcije f ( A, B , C , D ) = ∏ M (0,1,4,5,8,10,11,15) . Što biste trebali dobiti možete provjeriti tako da istu funkciju minimizirate K-tablicom.
6.
Zadana
je
funkcija
f ( A, B, C , D, E ) = ∑ m(0,1,2,4,5,8,10,16,17,18,21,23, 24,26,31) .
Uporabom K-tablica pronaći minimalni zapis funkcije: a) u obliku sume parcijalnih produkata b) u obliku produkta parcijalnih suma 7. 8.
Algebarski minimizirajte funkciju f ( A, B, C , D, E ) = ∑ m(0,1,2,4,5,8,10,16,17,18,21,23, 24,26,31) . Zadana je funkcija f. Dvorazinskom logikom ostvariti sklop koji realizira ovu funkciju. Na raspolaganju su varijable, komplementi varijabli te osnovni logički sklopovi (I, ILI). Zadatak riješiti tako da se ne koristi više od 3 osnovna logička sklopa. Invertori nisu na raspolaganju, a f glasi: f ( A, B, C , D, E ) = ∑ (0,1,4,5,8,9,10,11,13,15,16,17,20,21, 24,25,26,27, 29,31)
9.
Projektirati kombinacijski sklop (tablicom) koji zbraja dva dvobitna binarna broja A i B te generira dvobitni rezultat i bit preljeva: cout r1 r0 = a1 a0 + b1 b0. Quine-McCluskey metodom pronaći minimalni zapis funkcija cout i r0 u obliku sume parcijalnih produkata. Svaku funkciju minimizirati zasebno.
10.
Pismeni ispit 13.09.2004. Funkcija f ( A, B, C , D ) = A B C D + A C D + A B D direktno je realizirana nekim sklopom S. Provjeriti ima li funkcija statički hazard, a ako ima, pronaći sve prijelaze gdje se on javlja, te nacrtati sklop S' koji nema statički hazard. Pretpostaviti da će se prilikom promjene ulaza uvijek mijenjati samo jedna varijabla.
Standardni kombinacijski moduli.
137
6. Standardni kombinacijski moduli. 6.1. Zadatak Prikazati logički simbol, tablicu istinitosti, logičku funkciju, shemu sklopa te VHDL ponašajni model multipleksora 2/1.
Logički simbol multipleksora:
s
d1
d0 y
Tablica istinitosti: S
D1
D0
Y
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
0 1 0 1 0 0 1 1
Logička funkcija: mux 21( S , D0, D1) = ∑ m(1,3,6,7) = S ⋅ D0 + S ⋅ D1
Shema sklopa: d0
1
& ≥1
s d1
VHDL ponašajni model: - Uporabom CASE naredbe ENTITY mux21 IS PORT ( D0, D1: IN std_logic; S: IN std_logic; Y: OUT std_logic); END ENTITY;
&
y
138
Zbirka riješenih zadataka
ARCHITECTURE ponasajna OF mux21 IS BEGIN PROCESS (D0, D1, S) BEGIN CASE S IS BEGIN WHEN '0' => Y <= D0; WHEN '1' => Y <= D1; WHEN OTHERS => Y <= D0; -- zbog kompletnosti CASE naredbe END CASE; END PROCESS; END ponasajna;
- direktno logičkom funkcijom ENTITY mux21 IS PORT ( D0, D1: IN std_logic; S: IN std_logic; Y: OUT std_logic); END ENTITY; ARCHITECTURE ponasajna2 OF mux21 IS BEGIN Y <= (NOT S AND D0) OR (S AND D1); END ponasajna2;
- konkurentnim WHEN izrazom ENTITY mux21 IS PORT ( D0, D1: IN std_logic; S: IN std_logic; Y: OUT std_logic); END ENTITY; ARCHITECTURE ponasajna2 OF mux21 IS BEGIN Y <= D0 WHEN S='0' ELSE D1; END ponasajna2;
6.2. Zadatak Prikazati logički simbol, tablicu istinitosti, logičku funkciju, shemu sklopa te VHDL ponašajni model dekodera 2/4.
Logički simbol dekodera:
Standardni kombinacijski moduli.
139
a1
y3
DEKODER 2/4
y2
a0
y1 y0
Tablica istinitosti: A1
A0
Y3
Y2
Y1
Y0
0 0 1 1
0 1 0 1
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
Logička funkcija: Y0 ( A1 , A0 ) = ∑ m( 0) = A1 ⋅ A0
Y1 ( A1 , A0 ) = ∑ m(1) = A1 ⋅ A0
Shema sklopa: a1
a0
Y2 ( A1 , A0 ) = ∑ m( 2) = A1 ⋅ A0 Y3 ( A1 , A0 ) = ∑ m( 3) = A1 ⋅ A0
VHDL ponašajni model: ENTITY dek24 IS PORT ( A0, A1: IN std_logic; Y0, Y1, Y2, Y3: OUT std_logic); END ENTITY; ARCHITECTURE ponasajna OF dek24 IS BEGIN Y0 Y1 Y2 Y3
<= <= <= <=
NOT A1 NOT A1 A1 AND A1 AND
AND NOT A0; AND A0; NOT A0; A0;
END ponasajna;
1
1
&
y3
&
y2
&
y1
&
y0
140
Zbirka riješenih zadataka
VHDL ponašajni model uporabom WHEN izraza: ENTITY dek24 IS PORT ( A: IN std_logic_vector(1 DOWNTO 0); Y: OUT std_logic_vector(3 DOWNTO 0)); END ENTITY; ARCHITECTURE ponasajna OF dek24 IS BEGIN Y <= "0001" WHEN A="00" ELSE "0010" WHEN A="01" ELSE "0100" WHEN A="10" ELSE "1000"; END ponasajna;
6.3. Zadatak Prikazati logički simbol, tablicu istinitosti, logičku funkciju, shemu sklopa te VHDL ponašajni model dekodera 1/2 s ulazom za omogućavanje.
Logički simbol dekodera:
a
DEKODER 1/2
y1 y0
E
Tablica istinitosti:
Logička funkcija: Y1 ( E , A) = ∑ m( 3) = E ⋅ A
Y0 ( E , A) = ∑ m( 2) = E ⋅ A
E
A
Y1
Y0
0 0 1 1
0 1 0 1
0 0 0 1
0 0 1 0
Shema sklopa: E a
1
&
y1
&
y0
Standardni kombinacijski moduli.
141
VHDL ponašajni model: ENTITY dek12E IS PORT ( A, E: IN std_logic; Y0, Y1: OUT std_logic); END ENTITY; ARCHITECTURE ponasajna OF dek12E IS BEGIN Y0 = NOT A AND E; Y1 = A AND E; END ponasajna;
6.4. Zadatak Prikazati logički simbol, tablicu istinitosti te logičku funkciju prioritetnog kodera 4/2. Koder 2n/n je sklop koji ima 2n ulaznih linija. Izlaz je n bitova čija binarna vrijednost odgovara broju one ulazne linije na kojoj se nalazi logička jedinica (tada je dodatni izlaz Z = '1'). Za slučaj da su svi ulazi u nuli, izlaz Z postavlja se u '0'. Kako se može dogoditi da je na više ulaza istovremeno prisutna jedinica, tipično se izvodi prioritetni koder kod kojega izlaz odgovara najvišem ulazu na kojem se nalazi logička jedinica. Logički simbol kodera: I3 I2
KODER 4/2
Y1 Y0
I1 I0
Z
Tablica istinitosti: I3 0 0 0 1 0
I2 0 0 1 × 0
I1 0 1 × × 0
I0 1 × × × 0
Y1 0 0 1 1 ×
Y0 0 1 0 1 ×
U tablici vrijednost '×' označava proizvoljnu vrijednost. Logička funkcija kodera: Y1 ( I 3 , I 2 , I 1 , I 0 ) = ∑ m(4,5,6,7,8,9,10,11,12,13,14,15) = I 3 ⋅ I 2 + I 3
Z 1 1 1 1 0
142
Zbirka riješenih zadataka
Y0 ( I 3 , I 2 , I 1 , I 0 ) = ∑ m(2,3,8,9,10,11,12,13,14,15) = I 3 ⋅ I 2 ⋅ I 1 + I 3
Z ( I 3 , I 2 , I 1 , I 0 ) = ∑ m(1, 2,3, 4,5,6,7,8,9,10,11,12,13,14,15) = I 3 + I 2 + I1 + I 0
6.5. Zadatak Uporabom multipleksora 4/1 i potrebnih osnovnih logičkih sklopova ostvarite logičku funkciju f = ∑ (1,2, 4,6,7 ) .
Prikažimo funkciju tablično. A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
f 0 1 1 0 1 0 1 1
Multipleksor 4/1 ima četiri podatkovna ulaza, odnosno dva selekcijska ulaza. Ako na selekcijske ulaze dovedemo varijable A i B, podatkovni ulaz D0 biti će proslijeđen na izlaz ako je A=0 i B=0; podatkovni ulaz D1 biti će proslijeđen na izlaz ako je A=0 i B=1; podatkovni ulaz D2 biti će proslijeđen na izlaz ako je A=1 i B=0; podatkovni ulaz D3 biti će proslijeđen na izlaz ako je A=1 i B=1. Možemo li odrediti što se treba pojaviti na izlazu kada je A=0 i B=0, odnosno na ulazu D0? Pogledajmo u tablicu. Kombinacija A=0 i B=0 selektira dva retka, dok se vrijednost funkcije u oba retka mijenja. Međutim, usporedimo vrijednost funkcije s vrijednostima koje poprimaju varijable koje nisu dovedene na selekcijske ulaze (u našem slučaju, varijablom C). U prva dva retka, vrijednost funkcije f upravo je jednaka vrijednosti varijable C! Zaključujemo da na prvi ulaz (D0) treba dovesti upravo varijablu C. Na sličan način možemo analizirati što trebamo dovesti na ulaz D1, koji je selektiran kod kombinacije A=0 i B=1. Ovime su opet selektirana dva retka (treći i četvrti), i vrijednost funkcije f opet se mijenja. Usporedimo li u ta dva retka vrijednost funkcije f i varijable C, vidimo da su oni upravo komplementarni: kada je C=0, tada je f=1 i obratno. Zaključujemo na na ulaz D1 moramo dovesti C . Sličnu analizu možemo ponoviti i za preostale dvije kombinacije varijabli A i B, pa ćemo dobiti: D2 = C i D3=1. Ovaj postupak obično se provodi direktno očitavanjem iz tablice kombinacija. U tablici se crtkanom linijom odvoje one varijable koje se dovode na selekcijske ulaze multipleksora (u našem slučaju varijable A i B), te se naznače grupe redaka u kojima se A i B ne mijenjaju. Zatim se proanalizira za svaku grupu posebno kakav je odnos
Standardni kombinacijski moduli.
143
između preostalih varijabli, i vrijednosti funkcije, i utvrde se logički izrazi koji opisuju taj odnos. Postupak je prikazan na slijedećoj slici. A B C f D0
A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
f 0 1 1 0 1 0 1 1
0 0
0 0
0 1
0 1
A
B
C
f
0 0
1 1
0 1
1 0
A
B
C
f
1 1
0 0
0 1
1 0
A
B
C
f
1 1
1 1
0 1
1 1
Konačan izgled sklopa je:
MUX 4/1
C
D0
C
D1
C 1
D2
f
D3 S1 S0 A
B
f =C D0 = f = C
D1 f =C D1 = f = C
D2 f =C D2 = f = C
D3 f =1 D3 = f = 1
144
Zbirka riješenih zadataka
6.6. Zadatak Uporabom multipleksora 8/1 ostvariti logičku funkciju: f = ∑ (3,5,6,7,8,12,13,14,17,18,19,20, 25, 26,27,28,29,30,31)
Ovaj multipleksor ima 8 podatkovnih ulaza, pa mora imati 3 selekcijska ulaza. Na njih ćemo spojiti varijable A, B i C. Napravimo tablicu kombinacija i označimo ovisnosti izlaza po grupama o preostalim varijablama (D i E). A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
B 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
D 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
E 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
f 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1
Ulazi mux-a D0 = D ⋅ E
D1 = D + E
D2 = D + E
D3 = D ⋅ E
D4 = D + E
D5 = D + E
D6 = D + E
D7 = 1
Standardni kombinacijski moduli.
D E
145
MUX 8/1
&
D0 D1 D2
≥1
D3 D4
1
D5
1
D6 D7
1
f
S2 S1 S0 A
B C
6.7. Zadatak Na raspolaganju je proizvoljan broj multipleksora 2/1. Samo njihovom uporabom potrebno je realizirati funkciju f ( A, B, C , D) = ∑ m(0,1,4,7,9,12,14,15) . Na raspolaganju su varijable i komplementi varijabli.
Uporabom multipleksora 2/1 (koji ima jednu adresnu liniju) potrebno je izgraditi multipleksor koji ima tri adresne linije – dakle, multipleksor 8/1. Tada se njegovom uporabom može direktno realizirati tražena funkcija. Prikažimo stoga funkciju tablično:
146
Zbirka riješenih zadataka A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
f 1 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1
Di D0 = 1
D1 = 0 D2 = D D3 = D D4 = D D5 = 0 D6 = D
D7 = 1
Shema spoja tada je:
1 0
d0 d1 z a0
D D
D 0
D 1
d0 d1 z
d0 d1 z
a0
a0
d0 d1 z
d0 d1 z
a0
a0
d0 d1 z a0
d0 d1 z a0
C
B
A
f
Standardni kombinacijski moduli.
147
Zadatak se je mogao riješiti i izgradnjom još većeg multipleksora: multipleksora 16/1. Tada bi svaki od adresnih ulaza došla jedna od varijabli, a na svaki od podatkovnih ulaza vrijednost funkcije (dakle, 0 ili 1). No budući da na raspolaganju imamo sve varijable i njihove komplemente, ekonomičnije je izgraditi minimalno velik multipleksor. 6.8. Zadatak Uporabom dekodera 3/8 ostvariti logičke funkcije: f1 = ∑ (0,3, 4,6,7 ) f 2 = ∑ (0,1, 2,5)
Kako izlazi iz dekodera direktno odgovaraju pojedinim mintermima, potrebno je samo odgovarajuće minterme "pokupiti" ILI sklopovima. A2 A1 A0 A2 A1 A0
≥1
f1
≥1
f2
A2 A1 A0 A2 A1 A0 A2 A1 A0 A2 A1 A0 A2 A1 A0
A2 A1 A0 A2 A1 A0
A B C 6.9. Zadatak Uporabom dekodera 3/8 čiji su izlazi komplementirani ostvariti logičke funkcije: f1 = ∑ (0,3, 4,6,7 ) f 2 = ∑ (0,1, 2,5)
Ovakav dekoder na izlazu ima aktivnu nulu, tj. kada je onemogućen, svi su izlazi u jedinici, a kada je omogućen, onaj izlaz koji je adresiran nalazi se u nuli dok su svi ostali izlazi u jedinici. Ako uočimo da su funkcije identične onima iz prethodnog zadatka, potrebno je samo smisliti kako pomoću ovakvog dekodera realizirati isto ponašanje.
148
Zbirka riješenih zadataka
U prethodnom smo zadatku na izlazima multipleksora direktno imali minterme pa smo ih samo pokupili ILI sklopom. U ovom slučaju na izlazima imamo komplemente od minterma; kako sada trebamo pokupiti izlaze? Prisjetimo se DeMorgana: X + Y = X ⋅ Y = NI ( X , Y )
Dakle, komplementirane izlaze treba "pokupiti" NI sklopovima, pa ćemo opet imati izvornu sumu minterma! Sklop je prikazan u nastavku: A2 A1 A0 A2 A1 A0
&
f1
&
f2
A2 A1 A0 A2 A1 A0 A2 A1 A0 A2 A1 A0 A2 A1 A0
A2 A1 A0 A2 A1 A0
A B C
6.10. Zadatak Realizirati sklop koji ostvaruje dvije funkcije: (i) generator parnog pariteta pp, (ii) generator neparnog pariteta pn, trobitnog podatka b2b1b0. a) uporabom dvostrukog dekodera/demultipleksora 2/4 b) uporabom dvostrukog multipleksora 4/1
a) uporaba dvostrukog dekodera 2/4 b2 0 0 0 0 1 1 1 1
b1 0 0 1 1 0 0 1 1
b0 0 1 0 1 0 1 0 1
pp 0 1 1 0 1 0 0 1
pn 1 0 0 1 0 1 1 0
Dvostruki dekoder 2/4 prikazan je na slijedećoj slici. To su dva dekodera sa zasebnim ulazima za omogućavanje, pri čemu su im adresne linije zajedničke.
Standardni kombinacijski moduli.
E
A1 A0 A1 A0 A1 A0 A1 A0
E
A1 A0 A1 A0 A1 A0 A1 A0
149
Dekoder 2/4 ima dva adresna bita (A1 i A0). Da bismo ostvarili funkciju od 3 varijable dvostrukim dekoderom, varijablom b2 (varijabla najveće težine u tablici) upravljat ćemo ulazom za omogućavanje pojedinog dekodera, tako da kada b2 bude 0, prvi dekoder će biti aktivan, a kada b2 bude 1, drugi dekoder će biti aktivan. Na adresne linije dovest ćemo preostale varijable b1 i b0. Ako dvostruki dekoder spojimo na upravo opisani način, izlazi dekodera zapravo će predstavljati minterme triju varijabli: b2, b1 i b0. Tada iz tablice možemo očitati da prva funkcija sadrži minterme 1, 2, 4 i 7 a druga minterme 0, 3, 5 i 6, što je i prikazano na shemi sklopa.
A1 A0
Dvostruki dekoder 2/4
b2b1b0
E
1
E
b2b1b0 b2b1b0 b2b1b0 b2b1b0 b2b1b0 b2b1b0
≥1
pp
≥1
pn
b2b1b0 A1 A0
b2
b1 b0
Realizacija funkcija uporabom dvostrukog dekodera 2/4
150
Zbirka riješenih zadataka
b) Uporaba dvostrukog multipleksora 4/1 Dvostruki multipleksor 4/1 prikazan je na slici. Sastoji se od dva multipleksora 4/1 koji imaju dijeljene selekcijske bitove. Varijable b2 i b1 najveće težine dovodit ćemo na selekcijske ulaze, a na podatkovne ulaze dovodit ćemo rezidualne funkcije od varijable b0 .
D0
D1 D2 D3
z
Prvi multipleksor koristit ćemo za realizaciju funkcije pp, a drugi za realizaciju funkcije pn. Analizom tablice kombinacija lako se može ustanoviti da na ulaze D0, ..., D3 prvog multipleksora treba dovesti redom b0 ,
D0
D1 D2 D3
z
b0 , b0 te b0 , a na ulaze D0, ..., D3 drugog
multipleksora treba dovesti redom b0 , b0 , b0 te b0 .
Sel1 Sel0
Dvostruki multipleksor 4/1
D0 D1 D2
z
pp
z
pn
D3 D0 D1 D2
D3 Sel1 Sel0
1
b2
b1
b0 Realizacija funkcija uporabom dvostrukog demultipleksora 4/1
Standardni kombinacijski moduli.
151
6.11. Zadatak Realizirati sklop koji ostvaruje funkciju r3r2r1r0 =fibb(b2b1b0) koja vraća b-ti Fibbonacijev broj: a) uporabom jednog dekodera/demultipleksora 1/2 i dva dekodera/demultipleksora 2/4 te potrebnog broja ILI sklopova, b) u obliku ispisne memorije koja ima osam 4-bitnih riječi (tj. uporabom dekodera 3/8 i diskretnog koderskog polja).
Fibbonacijevi brojevi definirani su slijedećim izrazom: fibb(n) = fibb(n − 2) + fibb(n − 1)
fibb(0) = 0,
fibb(1) = 1
Prikažimo tablicu kombinacija: n 0 1 2 3 4 5 6 7
fibb(n) 0 1 1 2 3 5 8 13
b2 0 0 0 0 1 1 1 1
b1 0 0 1 1 0 0 1 1
b0 0 1 0 1 0 1 0 1
r3 0 0 0 0 0 0 1 1
r2 0 0 0 0 0 1 0 1
r1 0 0 0 1 1 0 0 0
r0 0 1 1 0 1 1 0 1
a) Uporabom dekodera Da bismo ovu funkciju ostvarili uporabom samo navedenih elemenata, potrebno je izgraditi dekoder 3/8 budući da imamo funkciju od 3 varijable. Ovo se može obaviti kaskadiranjem dekodera u stablo. Zatim se funkcija može realizirati direktno, "prikupljanjem" odgovarajućih izlaza ILI sklopom. Prilikom kaskadiranja dekodera u prvu razinu dolaze najviše značajne varijable, a u zadnju najmanje značajne (zapravo ovo vrijedi univerzalno: najviše značajne varijable dolaze uvijek na vrh stabla; kod dekoderskog stabla to je u prvoj razini, a kod multipleksorskog stabla u zadnjoj).
152
Zbirka riješenih zadataka Dekoder / Demultipleksor 3/8 D0 D1
A1 A0
b2
A2
≥1
r0
≥1
r1
≥1
r2
≥1
r3
D2 D3
E
D0 D1
A0
D2 D3
D0 D1
E
b1
b0 1
A1
D0 D1
A1 A0
A0
D2 D3
E
D4 D5 D6 D7
E
b) Ispisna memorija (permanentna memorija)
Dekodersko polje
Kodersko polje
A2 A1 A0 A2 A1 A0 A2 A1 A0
A2 A1 A0 A2 A1 A0 A2 A1 A0 A2 A1 A0 A2 A1 A0 A2 A1 A0 ≥ 1
≥ 1
≥ 1
≥ 1
r3
r2
r1
r0
b2 b1 b0
Standardni kombinacijski moduli.
153
Sastoji se od dva karakteristična polja: • •
ulazno dekodersko polje; obavlja potpuno dekodiranje adrese. Određuje broj riječi memorije. Sastoji se od I sklopova. izlazno kodersko polje; obavlja generiranje bitova adresirane riječi. Određuje broj bitova u riječi. Sastoji se od ILI sklopova.
U ovom zadatku trebamo 8 memorijskih riječi – potreban je dekoder s 8 izlaza, odnosno 3 adresne linije. Svaka riječ ima po 4 bita – kodersko polje će imati 4 ILI sklopa. Na ovaj način definirali smo fiksno dekodersko polje i fiksno kodersko polje. Vrlo popularno poopćenje ovog koncepta je uporaba programirljivog dekodera koji generira samo one produkte koji su nam potrebni (uočiti, npr. da minterm 0 nismo koristili; programirljivo I polje), kao i programirljivi koder (programirljivo ILI polje). Ukoliko su oba polja programirljiva, radi se o PLA – Programirljivo logičko polje (Programmable Logic Array), a ako je programirljivo samo I polje, tj. dekoder, radi se o PAL – poluprogramirljivo logičko polje (Programmable Logic Array). Simbol za permanentnu memoriju iz zadatka: ROM 8x4
d0
a2 a1 a0
d1 d2 d3 E
6.12. Zadatak Uporabom programirljive ispisne memorije 8×8 i dvostrukog multipleksora 4/1 realizirati višeizlaznu funkciju: f1 = ∑ (1,6,7,11,12,13,16,17,22,27,30 ) f 2 = ∑ (1,2,4,5,6,8,10,12,15,21,24,29 )
Funkcije f1 i f2 su funkcije od 5 varijabli. Dakle, njihova tablica kombinacija ima 32 retka. Međutim, ispisna memorija može generirati samo 8 redaka! S druge strane, ispisna memorija u jednom retku generira 8 bitova, a ako u nju pohranjujemo vrijednosti funkcija f1 i f2, trebamo po retku samo dva bita jer imamo dvije funkcije. Zbog ovoga ćemo u ispisnu memoriju u jednom retku pohranjivati po četiri uzastopne
154
Zbirka riješenih zadataka
vrijednosti funkcije f1 i četiri uzastopne vrijednosti funkcije f2, a koju točno vrijednost treba dati na izlazu iz sklopa odrediti ćemo multipleksorom! Na adresne linije memorije dovoditi ćemo varijable A, B i C (varijable najveće težine) a na selekcijske bitove multipleksora varijable D i E (varijable najmanje težine). A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
B 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
D 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
Shema sklopa prikazana je u nastavku.
E 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
f2 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0
f1 D4 D5 D6 D7 D4 D5 D6 D7 D4 D5 D6 D7 D4 D5 D6 D7 D4 D5 D6 D7 D4 D5 D6 D7 D4 D5 D6 D7 D4 D5 D6 D7
0 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0
D0 D1 D2 D3 D0 D1 D2 D3 D0 D1 D2 D3 D0 D1 D2 D3 D0 D1 D2 D3 D0 D1 D2 D3 D0 D1 D2 D3 D0 D1 D2 D3
Standardni kombinacijski moduli.
A B C
A2 A1 A0
155
PROM 8x8 D7 D6 D5 D4 D3 D2 D1 D0 I3 I2 I1 I 0 I3 I2 I1 I0
D E
Sel1 MUX 4/1 Sel0 a)
MUX 4/1 b)
f2
f1
Funkciju f2 realiziramo prvom polovicom multipleksora. Kada je D=E=0, na izlazu je bit D4 permanentne memorije. Za D=0, E=1 na izlazu je D5 itd. Sada samo iz tablice kombinacija treba očitati vrijednosti bitova pojedinih riječi pohranjenih u memoriji, što je prikazano sljedećom tablicom. A2=A 0 0 0 0 1 1 1 1
A1=B 0 0 1 1 0 0 1 1
A0=C 0 1 0 1 0 1 0 1
D7 0 0 0 1 0 0 0 0
D6 1 1 1 0 0 0 0 0
D5 1 1 0 0 0 1 0 1
D4 0 1 1 1 0 0 1 0
D3 0 1 1 0 0 0 1 0
D2 0 1 0 0 0 1 0 1
D1 1 0 0 1 1 0 0 0
D0 0 0 0 1 1 0 0 0
D 62 7C 58 93 03 24 18 24
156
Zbirka riješenih zadataka
6.13. Zadatak Permanentna memorija realizirana MOSFET tehnologijom prikazana je na slici. O koliko se memorije radi, i što je zapisano na pojedinim memorijskim lokacijama? +UDD
+UDD
d4
d3
+UDD
+UDD
+UDD
d1
d0
riječ 0
riječ 1
dekoder riječ 2
riječ 3 A1
A0
a1
a0
d2
Memorija ima četiri memorijske riječi, svaka po pet bitova. Dakle, radi se o memoriji 4×5. Vrijednost pohranjenu na pojedinim memorijskim lokacijama očitati ćemo na slijedeći način. Neka adresna riječ a1a0 adresira i-tu memorijsku riječ (tj. i=2⋅a1+a0). Tada je vodoravna linija koja odgovara toj riječi na visokoj naponskoj razini, a sve ostale su na niskoj (to je funkcija dekodera). Sada treba provjeriti za svaku okomitu liniju (koja odgovara pojedinom bitu). Ako je G tranzistora koji spaja vodoravnu i okomitu liniju spojen na vodoravnu liniju (veza nije prekinuta), tada taj tranzistor vodi, i spaja okomitu liniju na masu, čime dotični bit postavlja u logičku nulu. Ako je veza prekinuta, tranzistor ne vodi, i okomita linija je spojena na +UDD, čime je dotični bit postavljen na logičku jedinicu. Dakle, u memoriji je zapisan sadržaj: a1 0 0 1 1
a0 0 1 0 1
d4 0 1 0 0
d3 1 0 0 1
d2 0 1 1 0
d1 1 0 0 1
d0 0 1 0 1
Standardni kombinacijski moduli.
157
6.14. Zadatak Realizirati permanentnu memoriju uporabom dekodera 2/4 i koderskog polja izvedenog MOSFET-om. Pohraniti na memorijske lokacije redom sljedeće oktalne brojeve: 1, 3, 5, 2.
Prikažimo u tablici koji se podatak nalazi na kojom memorijskoj lokaciji, i to po bitovima: a1 0 0 1 1
a0 0 1 0 1
d2 0 0 1 0
d1 0 1 0 1
d0 1 1 1 0
n(3) 1 3 5 2
Tada traženi sklop izgleda: +UDD
+UDD
d2
d1
+UDD
riječ 0
riječ 1
dekoder riječ 2
riječ 3 A1
A0
a1
a0
d0
158
Zbirka riješenih zadataka
6.15. Zadatak Definirana je sljedeća komponenta: ENTITY pNAND IS PORT (a,b: IN std_logic; z: OUT std_logic); END pNAND;
Samo njezinom uporabom napisati strukturni VHDL model multipleksora 2/1 (bez ulaza za omogućavanje). Nacrtati shemu sklopa i označiti nazive korištenih signala i primjeraka komponente.
Funkcija multipleksora 2/1 određena je izrazom: z = sel ⋅ d 0 + sel ⋅ d1
Ovaj izraz definira sljedeći sklop:
Shema sklopa:
Shema sklopa s NAND sklopovima: c1
d0
d0
& ≥1
d1
& s0
z
&
d1
&
sel
Strukturni VHDL model tada je: library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY pmux21 IS PORT ( d0 : IN std_logic; d1 : IN std_logic; sel : IN std_logic; z: OUT std_logic); END pmux21; ARCHITECTURE Structural OF pmux21 IS COMPONENT pNAND IS PORT ( a : IN std_logic; b : IN std_logic; z : OUT std_logic); END COMPONENT; SIGNAL s0, s1, s2: std_logic;
c0
&
sel
c3 &
c2
1
s1
s2
z
Standardni kombinacijski moduli.
159
BEGIN c0: c1: c2: c3:
pNAND pNAND pNAND pNAND
PORT PORT PORT PORT
MAP(sel, sel, s0); MAP(d0, s0, s1); MAP(d1, sel, s2); MAP(s1, s2, z);
END Structural;
ZADACI ZA VJEŽBU 3.
Napisati strukturni model multipleksora 2/1. Pretpostaviti da su modeli osnovnih logičkih sklopova već napisani.
4.
Napisati ponašajni model multipleksora 2/1 s ulazom za omogućavanje E. Kad je E='0' izlaz treba biti postavljen u '0'. Kad je E='1' multipleksor obavlja svoju funkciju.
5.
Izvesti funkciju multipleksora 4/1 pomoću minimalnog broja osnovnih logičkih sklopova.
6.
Multipleksorima 2/1 nacrtati multipleksorsko stablo koje obavlja funkciju multipleksora 16/1.
7.
Napisati strukturni VHDL model multipleksora 8/1 s ulazom za omogućavanje izvedenog multipleksorima 2/1 s ulazom za omogućavanje.
8.
Napisati strukturni model dekodera 2/4. Pretpostaviti da su modeli osnovnih logičkih sklopova već napisani.
9.
Nacrtati shemu dekodera 4/16 s ulazom za omogućavanje realiziranog kao dekodersko stablo dekodera 2/4 s ulazima za omogućavanje.
10.
Tablicom istinitosti prikazati funkciju dekadskog dekodera (tj. dekoder 4/10). Napisati logičke izraze koji opisuju funkciju dekodera.
11.
Uporabom osnovnih logičkih sklopova nacrtati dekadski dekoder.
12.
Uporabom dva dekadska dekodera s ulazom za omogućavanje i minimalnim brojem osnovnih logičkih sklopova nacrtati shemu dekodera 4/16.
13.
Uporabom dekodera 3/8 i potrebnog broja ILI logičkih sklopova realizirati funkciju f ( A, B, C ) = ∑ m(1,2,5,7) i g ( A, B, C ) = ∑ m(1,2,3,4) .
14.
Uporabom dekodera 3/8 i jednog ILI logičkog sklopa realizirati multipleksor 2/1 bez ulaza za omogućavanje.
15.
Uporabom dekodera 4/16 i jednog ILI logičkog sklopa realizirati multipleksor 2/1 s ulazom za omogućavanje.
16.
Na raspolaganju su dva dekadska dekodera s ulazima za omogućavanje te jedan ILI sklop. Napisati strukturni VHDL model multipleksora 4/1 bez ulaza za omogućavanje. Pretpostaviti da su potrebne komponente već opisane.
17.
Uporabom dvostrukog dekodera 2/4 s ulazima za omogućavanje realizirati funkciju f ( X , Y , Z ) = X ⋅ (Y + Z ) .
160
Zbirka riješenih zadataka
18.
Uporabom samo 4 multipleksora 2/1 ostvariti sklop koji na ulaz dobiva 4-bitni binarni broj i upravljački signal S, a na izlaz propušta broj s ulaza (ako je S=0), ili dvostruku vrijednost broja (ako je S=1).
19.
Uporabom samo 4 multipleksora 4/1 ostvariti sklop koji na ulaz dobiva 4-bitni binarni broj i upravljačke signale S1S0. Operacija koju sklop obavlja određena je tablicom u nastavku. S1
S0
0 0 1 1
0 1 0 1
Operacija Posmak u desno, punjenje s 0 Rotacija u desno Posmak u lijevo, punjenje s 1 Rotacija u lijevo
20. Nacrtati shemu multipleksora 4/1 izvedenog pomoću dekodera 2/4 i minimalnog broja osnovnih logičkih sklopova. 21.
U VHDL-u napisati ponašajni model prioritetnog kodera 4/2.
22.
Samo multipleksorom 2/1 realizirati funkciju f ( A) = A . Na raspolaganju su još logička '0' i logička '1'.
23.
Samo multipleksorom 2/1 realizirati funkciju f ( A, B) = A + B . Na raspolaganju su još logička '0' i logička '1'.
24.
Samo multipleksorom 2/1 realizirati funkciju f ( A, B) = A ⋅ B . Na raspolaganju su još logička '0' i logička '1'.
25.
Pomoću dva multipleksora 2/1 realizirati funkciju f ( A, B) = A ⊕ B . Na raspolaganju su još logička '0' i logička '1'.
26.
Pomoću dva multipleksora 2/1 realizirati funkciju f ( A, B ) = A ⋅ B . Na raspolaganju su još logička '0' i logička '1'.
27.
Pomoću dva multipleksora 2/1 realizirati funkciju f ( A, B ) = A + B . Na raspolaganju su još logička '0' i logička '1'.
28.
Pomoću dva multipleksora 2/1 realizirati funkciju f ( A, B ) = A ⊕ B . Na raspolaganju su još logička '0' i logička '1'.
29.
( ) Multipleksorom 4/1 realizirati funkciju f A, B, C = još jedan invertor, te logička '0' i logička '1'.
30.
( ) ( ) Multipleksorom 4/1 realizirati funkciju f A, B, C = ∑ m 1,2,3, 4,5,7 . Pri tome se ne smije koristiti niti jedan logički sklop, niti logička '0' ili logička '1'.
31.
Multipleksorom 4/1 realizirati funkciju f ( A, B, C ) = A B + AC . Na raspolaganju su još samo logička '0' i logička '1'.
32.
∑ m(3,4,6,7) . Na raspolaganju je
Komparator dvobitnih binarnih brojeva je sklop koji ima četiri ulaza (a1, a0, b1, b0) te jedan izlaz (y). Izlaz y postavljen je u logičku jedinicu samo kada su binarni brojevi A=a1a0(2) i B=b1 b0(2) jednaki. a. Napišite algebarski izraz kojim je određena funkcija ovog sklopa.
Standardni kombinacijski moduli.
161
b. Napišite ponašajni VHDL model ovog sklopa. c. Pokažite da se samo uporabom potrebnog broja ovih sklopova (na raspolaganju su još i logička jedinica i logička nula) mogu ostvariti sve Booleove funkcije. d. Uporabom ovih sklopova realizirajte multipleksor 2/1 i napišite njegov strukturni model u VHDL-u. 33.
Projektirajte sklop koji obavlja funkciju e usporedbe dva 4-bitna binarna broja A i B ovisno o upravljačkom signalu sel: ako je sel=00, sklop računa e=(A≤B). Za sel=01 sklop računa e=(A4).
34.
(Pismeni ispit 30. 09. 2004.) Algebarski odrediti minimalni oblik funkcije f(A,B,C) koju obavlja sklop sa slike. y0 y1 DEK y2 y3 a1 a0 A B C
a I 0
I1
I0 f I1 a
f
Standardni programirljivi moduli.
163
7. Standardni programirljivi moduli. 7.1. Zadatak Uporabom PLA ostvariti funkciju ostatka dijeljenja trobitnog broja sa 3. Broj je kodiran Grayevim kodom. Ostatak treba biti prikazan prirodnim binarnim kodom.
Prikažimo tablično funkcije koje treba ostvariti. Vrijednost broja 0 1 2 3 4 5 6 7
Broj kodiran Grayevim kodom b2 b1 b0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0
Ostatak dijeljenja s 3 r1 r0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1
Iz tablice možemo očitati r1 i r0: r1 = b2 b1b0 + b2 b1b0 r0 = b2 b1b0 + b2 b1b0 + b2 b1b0
Ukoliko imamo dovoljno veliki PLA (odnosno dovoljno malu funkciju) sve produkte možemo direktno realizirati bez potrebe za prethodnom minimizacijom. Budući da ovdje nije bilo postavljenih uvjeta na karakteristike PLA, pretpostaviti ćemo da je minimizacija nepotrebna. Rješenje je prikazano na prvoj slici u nastavku. Radi jednostavnijeg prikaza PLA (a i PAL kasnije) koristit ćemo pojednostavljeni način crtanja ovih struktura prikazan na drugoj slici. Snopovi ulaza u pojedine logičke sklopove crtaju se kao samo jedna žica, pri čemu treba imati na umu da to nije stvarno samo jedna žica (pa tako ne radi kratki spoj između npr. b2', b1 i b0).
164
Zbirka riješenih zadataka
b2
1 b1
1 I polje
b0
1
&
&
&
&
&
≥1
r1
≥1
r0
ILI polje
snop "žica" jedna "žica" b2 1 b1 1 b0 1
&
snop "žica" jedna "žica"
&
&
&
&
≥1
r1
≥1
r0
Standardni programirljivi moduli.
165
7.2. Zadatak Zadane su funkcije f1 = A B + AB + ABC i f 2 = AC + A C + AB C . Prikazati (F)PLA temeljen na NILI sklopovima koji implementira ove funkcije.
A 1 B 1 C 1
≥1
≥1
≥1
≥1
≥1
≥1 ≥1
1
f1
≥1
1
f2
Objašnjenje: s prvom razinom NILI sklopova potrebno je realizirati produkte, a s drugim slojem NILI sklopova te produkte sumirati. Produkte pomoću NILI sklopova možemo ostvariti tako da na ulaze dovedemo komplementirane vrijednosti. Naime, prema DeMorganu: A ⋅ B ⋅ C ⋅ D ⋅ E = A + B + C + D + E = NILI ( A , B , C , D, E )
Dakle, ako je u produktu varijabla u nekomplementiranom obliku, u NILI treba dovesti komplement, i obratno. Prvi produkt u f1 je A B . Zbog toga na prvi NILI sklop dovodimo A i B . Drugi produkt AB , pa na drugi NILI dovodimo A i B , itd. Kada ostvarimo sve produkte prvom razinom NILI sklopova, drugom razinom ih treba sumirati. To međutim nije moguće direktno, jer na izlazu NILI sklopa imamo komplementiranu sumu. Zbog toga je na izlazu NILI sklopova još potrebno staviti jedan invertor (što se može ostvariti bez dodatnih elemenata jer su PLA-ovi obično "opskrbljeni" programirljivim invertorom na izlazu).
166
Zbirka riješenih zadataka
7.3. Zadatak PLA strukturom temeljenom na MOSFETu realizirane su funkcije, kako je prikazano na slici. O kojim se funkcijama radi, i od kojih polja je sastavljen prikazani PLA? Nacrtati nadomjesnu PLA shemu temeljenu na NILI logičkim sklopovima.
x1
x2
1
+UDD
x3
1
+UDD
1
+UDD
+UDD
+UDD
+UDD
+UDD
f1
f2
Ova struktura temelji se na paralelnom radu tranzistora i ostvarena je pomoću NILI sklopova. Sastoji se od dvije NILI ravnine. Izlazi NILI sklopova prve razine označeni su sa O1 do O5 (u prvoj ravnini imamo 5 NILI sklopova; prisjetimo se kako izgleda NILI sklop: otpornik na +UDD, a s druge strane paralelno spojeni tranzistori i izlaz sklopa). Ti izlazi vode se na NILI sklopove druge razine koji generiraju konačne rezultate.
Standardni programirljivi moduli.
x1
167
x2
+UDD
x3
1
1
1
+UDD
O1
+UDD
O2
+UDD
O3
+UDD
O4
+UDD
O5
NILI ravnina
+UDD
f2
f1 NILI ravnina
O1 = NILI ( x1 , x 2 ) = x1 + x 2
O2 = NILI ( x1 , x3 ) = x1 + x3
O3 = NILI ( x1 , x 2 , x3 ) = x1 + x 2 + x3 O4 = NILI ( x1 , x 2 ) = x1 + x 2
O5 = NILI ( x 2 , x3 ) = x 2 + x3 f1 = NILI (O1 , O2 , O3 ) = O1 + O2 + O3 = O1 ⋅ O2 ⋅ O3 = ( x1 + x 2 )( x1 + x3 )( x1 + x 2 + x3 )
f 2 = NILI (O2 , O4 , O5 ) = O2 + O4 + O5 = O2 ⋅ O4 ⋅ O5
= ( x1 + x3 )( x1 + x2 )( x2 + x3 ) PLA sklop prikazan pomoću logičkih NILI sklopova:
168
Zbirka riješenih zadataka x1 1 x2 1 x3 1
≥1
≥1
≥1
≥1
≥1 ≥1
f1
≥1
f2
7.4. Zadatak
Realizirati funkcije: f1 = ∑ (0,1,3,5,11,15) i f 2 = ∑ (0,2,4,8,12,14 )
a) PLA-om tipa ILI-od-I, b) PLA-om tipa NILI-od-NILI s mogućnošću komplementiranja izlaza.
a) ILI-od-I tip A 1 B 1 C 1 D 1
&
&
&
&
&
&
&
&
&
&
& ≥1
f1
≥1
f2
Objašnjenje: svaki od I sklopova u prvom sloju realizira jedan od minterma prisutnog u funkcijama. Drugi sloj sumira potrebne minterme i time ostvaruje zadane funkcije. b) NILI-od-NILI tip
Standardni programirljivi moduli.
169
Pogledati 2. zadatak za detaljno objašnjenje kako se funkcije realiziraju ovim tipom. Na prvu razinu sklopova NILI umjesto varijabli koje sudjeluju u nekom produktu dovodi se njihovi komplementi kako bi NILI sklop izračunao taj produkt (DeMorgan).
A 1 B 1 C 1 D 1
≥1
≥1
≥1
≥1
≥1
≥1
≥1
≥1
≥1
≥1
≥1 ≥1
1
f1
≥1
1
f2
7.5. Zadatak Na raspolaganju je PAL sljedećih karakteristika: 3 ulaza, 3 izlaza, ILI sklopovi imaju po dva ulaza, izlazi ILI sklopova i njihovi komplementi dovode se natrag u I ravninu. Realizirati funkciju: f = AB + AC + BC + AB
Shema ovakvog PALa prikazana je u nastavku, zajedno s rješenjem. Objašnjenje: Zadanu funkciju možemo minimizirati: f = AB + AC + BC + AB = A + B + C
Međutim, kako imamo na raspolaganju samo dvoulazne ILI sklopove u PALu, direktno ne možemo realizirati ovu funkciju. Zapišimo zato funkciju malo drugačije: f = AB + AC + BC + AB = f1 + f 2 f1 = AB + AC f 2 = BC + AB
Sada funkcije f1 i f2 možemo realizirati pomoću dvoulaznih ILI sklopova, a kako te rezultate ponovno dobivamo u I polju, možemo ih koristiti za generiranje konačnog rezultata, kao što je i napravljeno.
170
Zbirka riješenih zadataka
A 1 B 1 C 1
1
1
1
&
&
&
&
&
&
≥1
f1
≥1
f2
≥1
f
7.6. Zadatak Na raspolaganju je programirljivo logičko polje dimenzija (3,5,2) izvedeno NILI sklopovima. Izlazi su izvedeni upravljanim EX-ILI sklopovima. Nacrtati ovu strukturu i pomoću nje ostvariti funkcije f1 = AB + A C + AC i f 2 = A B + B C + AB .
Umnožak dviju (ili više) varijabli može se NILI sklopom ostvariti tako da se na njega dovedu komplementi, tj: AB = A + B = NILI ( NE ( A), NE ( B ))
Zbroj dviju (ili više) varijabli može se ostvariti tako da se dovedu na NILI sklop iza kojeg se rezultat komplementira:
A + B = A + B = NE ( NILI ( A, B)) Invertor na izlazu ostvarit ćemo EX-ILI sklopom tako da na slobodan ulaz dovedemo 1.
Standardni programirljivi moduli.
171
A 1 B 1 C 1
≥1
≥1
≥1
≥1
≥1 ≥1
=1
f1
≥1
=1
f2
1
Napomena: upravljani EX-ILI sklop često se naziva i upravljivi invertor, jer ovisno o vrijednosti na jednom ulazu na izlaz propušta drugi ulaz ili njegov komplement.
7.7. Zadatak Na raspolaganju je logički blok s 2 ulaza realiziran multipleksorima 2/1 i LUT-om. Nacrtajte blok i programirajte ga da obavlja logičku funkciju XOR. Multipleksor 2/1 u nastavku će se označavati simbolom:
pri čemu će značenje pojedinih priključaka biti: d0 a0 y d1
Izgradnjom multipleksorskog stabla dobije se sljedeći logički blok:
172
Zbirka riješenih zadataka
Još je samo potrebno odrediti što treba pohraniti u LUT, kako bi element obavljao zadanu logičku funkciju. Možemo pisati: f = X 1 ⊕ X 2 = X 1 X 2 + X 1 X 2 = ∑ (1, 2)
Dakle, funkcija se može izraziti kao suma minterma 1 i 2, pa na ulaze d1 i d2 treba dovesti 1, a na preostale ulaze d0 i d3 treba dovesti 0. Programiran logički blok prikazan je na slici: X1 X2
0 1 1
f
0
7.8. Zadatak Na raspolaganju je logički blok s 3 ulaza realiziran multipleksorima 2/1 i LUT-om. Nacrtajte blok i programirajte ga da obavlja logičku funkciju:
f = AB + BC . f = AB + BC = AB(C + C ) + ( A + A ) BC = ABC + ABC + A BC = ∑ (3,6,7 )
Logički blok koji obavlja ovu funkciju prikazan je u nastavku. A B C
0 0 0 1 0 0 1 1
f
Standardni programirljivi moduli.
173
7.9. Zadatak Na raspolaganju je FPGA s dvoulaznim logičkim blokovima temeljenim na LUTovima. Prikazati strukturu sklopa. Programirati sklop tako da ostvaruje logičku funkciju f. f = f2 ⋅ f3 f1 = A ⊕ B f2 = A + B f 3 = f1 + C
C
A a1 B
a0
a1 a0
0 1 1 0
1 1 0 1
f1
f
a1 a0
f2
a1 a0
1 1 0 1
f3
0 0 0 1
f
Objašnjenje: podebljani X označava ostvareni spoj dok tanki X označava mogućnost spoja koja nije iskorištena. Varijabla A dovodi se na prvu okomitu liniju i zatim na ulaz a1 prvog logičkog bloka. Varijabla B dovodi se na drugu okomitu liniju i zatim na ulaz a0 prvog logičkog bloka. Ovaj logički blok treba ostvariti funkciju f1, pa LUT treba programirati na sljedeći način: f1 = f ( A, B ) = A ⊕ B = AB + A B = ∑ (1, 2)
U LUT treba upisati uzorak 0110 (na 1. i 2. ulaz dekodera dovodi se 1, a na 0. i 3. ulaz dekodera dovodi se 0).
174
Zbirka riješenih zadataka
Istovremeno se s prve okomite linije varijabla A dovodi i na a1 ulaz logičkog bloka dolje-lijevo, a varijabla B sa druge okomite linije na ulaz a0. Kako ovaj logički blok treba ostvariti funkciju f2: f 2 = f ( A, B ) = A + B = A ( B + B ) + ( A + A ) B = A B + A B + AB = ∑ (0,1,3)
u LUT treba upisati uzorak 1101. Izlaz f1 se preko zadnje okomite linije srednjeg snopa dovodi na ulaz a1 logičkog bloka gore-desno. Istovremeno se na a0 ulaz tog bloka dovodi varijabla C (trećom vodoravnom linijom gornjeg vodoravnog snopa, pa zatim trećom okomitom linijom srednjeg okomitog snopa). Taj sklop obavlja funkciju f3 (koja ovisi o f1 i C): f 3 = f ( f1 , C ) = f1 + C = f1 (C + C ) + ( f1 + f1 )C = f1C + f1C + f1C = ∑ (0,1,3)
pa LUT popunjavamo uzorkom 1101. Konačno se na ulaz a1 logičkog bloka dolje-desno dovodi f2 preko druge okomite linije srednjeg okomitog snopa, a na ulaz a0 dovodi se f3 (prvom okomitom linijom desnog okomitog snopa, pa prvom vodoravnom linijom srednjeg vodoravnog snopa, i konačno prvom okomitom linijom srednjeg okomitog snopa). Taj sklop ostvaruje logičku I funkciju: f = f ( f 2 , f 3 ) = f 2 ⋅ f 3 = ∑ (3)
pa LUT popunjavamo uzorkom 0001. Rezultat f vodi se preko četvrte okomite linije desnog okomitog snopa i četvrte vodoravne linije gornjeg vodoravnog snopa na izlazni konektor f. 7.10. Zadatak Uporabom logičkih blokova s 2 ulaza realiziranih multipleksorima 2/1 i LUT-om realizirati funkciju f ( A, B, C , D ) = ∑ m(1, 2,5,6,9,10,12,13,14,15) . Nije potrebno crtati shemu samog logičkog bloka. Zadana je funkcije od četiri varijable, a na raspolaganju imamo dvoulazne LUT-ove. Direktno, dakle, funkciju ne možemo realizirati. Pronađimo zato algebarski oblik zadane funkcije. Upišemo li funkciju u K-tablicu, nakon minimizacije dobivamo: f ( A, B, C , D) = AB + C D + CD Ovaj izraz moramo raspisati na takav način koji će u sebi sadržavati samo funkcije od dvije varijable. Npr. uvedimo sljedeće supstitucije: f1 ( A, B, C , D) = AB = f1 ( A, B ) = ∑ m(3)
Standardni programirljivi moduli.
175
f 2 ( A, B , C , D ) = C D + CD = f 2 (C , D) = ∑ m(1,2)
Za funkciju f tada vrijedi: f ( A, B, C , D) = f1 + f 2 = f ( f1 , f 2 ) = f 1 f 2 + f1 f 2 + f1 f 2 = ∑ m(1, 2,3)
Sada možemo iskoristiti jedan logički blok za realizaciju funkcije f1, jedan logički blok za realizaciju funkcije f2 te jedan logički blok za realizaciju funkcije f koji računa logičku ILI operaciju. Rješenje je prikazano na slici:
7.11. Zadatak Potpuno zbrajalo ostvariti: a) dvostrukim multipleksorom 4/1 b) dekoderom 3/8
Napravimo najprije tablicu kombinacija. A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
Cin 0 1 0 1 0 1 0 1
R 0 1 1 0 1 0 0 1
Cout 0 0 0 1 0 1 1 1
176
Zbirka riješenih zadataka
a) dvostrukim multipleksorom 4/1
C in C in
C in C in
D0 D1 D2
z
R
z
Cout
D3
0
D0
C in C in
D1 D2
1
D3 Sel1 Sel0 A
B
b) dekoderom 3/8
D0 D1 D2
≥1
R
≥1
Cout
D3 D4 D5 D6 D7
A2 A1 A0 A B Cin
Standardni programirljivi moduli.
177
7.12. Pismeni ispit, 09. 02. 2004, 4. zadatak Na raspolaganju je programirljivo logičko polje PLA tipa NI-NI veličine 3×3×2. Njegovom uporabom ostvariti četverobitni prioritetni koder (sklop s n ulaza, te izlazima koji poprimaju binarno kodiran najveći redni broj ulaza koji je u stanju 1; npr. uz ulaze I0I1I2I3=0101 izlaz je 3(2); pretpostaviti da će uvijek barem jedan ulaz biti u 1).
Napišimo tablični prikaz funkcije koju obavlja sklop: I3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
I2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
I1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
I0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
O1 × 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
O0 × 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1
Mimimizacijom dalje slijedi: I2
O1: I1I0
I3I2 00
01
11
10
×
1
1
1
01
1
1
1
11
1
1
1
10
1
1
1
00
I2
I3
I3
I0 I1
178
Zbirka riješenih zadataka
O0:
I3I2 00
I1I0
01
×
00 01
11
10
1
1
1
1
11
1
1
1
10
1
1
1
I0 I1
I3
I2
I 2 I1
I3
O1 = I 2 + I 3 O0 = I 2 I 1 + I 3
PLA struktura koja obavlja ovu funkciju tada je prikazana na slici: I3 1 I2 1 I1 1
&
&
& &
O1
&
O0
ZADACI ZA VJEŽBU 1.
Na raspolaganju je PLA tipa NI-NI dimenzija 4×5×2 s upravljivim invertorima na izlazima (slično zadatku 7.6). Nacrtati ovu strukturu i pomoću nje ostvariti funkcije: f1 ( A, B, C , D ) = A ⋅ (B + C ) ⋅ D + A C f 2 ( A, B, C , D ) = (B + C ) ⋅ A + AD
Bistabil.
179
8. Bistabil. 8.1. Zadatak Prikažite tablice stanja, simbole i dijagrame stanja za: a) SR bistabil (prikazati i izvedbu NI sklopovima te objasniti rad), b) JK bistabil, c) T bistabil, d) D bistabil.
Bistabil je osnovni memorijski element. a) SR bistabil Najjednostavniji bistabil je SR bistabil (bez ulaza Cp). Može se izvesti pomoću npr. dva NI sklopa kako je prikazano u nastavku: S
R
&
Q
&
Q
Ako ovakav sklop realiziramo uporabom diskretnih komponenti, u trenutku uključenja napajanja stanje bistabila biti će nepoznato. Pod pojmom stanje bistabila podrazumijeva se vrijednost Q. Kažemo da je bistabil postavljen ako je Q=1, a resetiran ako je Q=0. Npr. neka je Q =0 i Q =1. Ulazi S i R neka su 1. Provjerom utvrđujemo da je stanje stabilno. Ako sada S pređe s 1 u 0, stanje bistabila se mijenja u Q =1 i Q =0, i također je stabilno. povratkom S natrag u 1 stanje ostaje stabilno. Ako sada R pređe s 1 u 0, stanje bistabila se mijenja u Q =0 i Q =1, i također je stabilno. povratkom R natrag u 1 stanje ostaje stabilno. Ako S i R istovremeno pređu iz 1 u 0, Q i Q su oba 1, što je nekonzistentno stanje prema Booleovoj algebri. Ta pobuda zato je zabranjena kod SR bistabila. Iz ovog razmatranja vidimo da ulaz S ostvaruje funkciju postavljanja bistabila (engl. Set), a ulaz R ostvaruje funkciju resetiranja bistabila (engl. Reset). Tablica stanja, simbol i dijagram stanja prikazani su u nastavku.
180
Zbirka riješenih zadataka
S 0 0 1 1
R 0 1 0 1
Qn+1
Q
S
Qn
CP
0 1 ?
Q
R
Simbol bistabila Tablica stanja 11 00 01
?
? 10
0
11 00 10
1
01
S,R
Dijagram stanja Ukoliko bistabil ima Cp ulaz, tada ulazi za pobudu imaju utjecaja samo kada je Cp=1, dok za slučaj Cp=0 bistabil ne reagira na pobudu. b) JK bistabil
J 0 0 1
K 0 1 0
Qn+1
1
1
Qn
Q
J
Qn
CP
0 1
Q
K
Simbol bistabila Tablica stanja 10,11 00 01
0
1
01,11
Dijagram stanja
c) T bistabil
00 10 J,K
Bistabil.
181
T 0
Qn+1
1
Qn
Q
T CP
Qn
Q
Tablica stanja
Simbol bistabila
1 0
0
1
0
1
T
Dijagram stanja
d) D bistabil
Q
D
Qn+1
D 0 1
CP
0 1
Q
Tablica stanja
Simbol bistabila
1 0
0
1
0
Dijagram stanja
1 D
182
Zbirka riješenih zadataka
8.2. Zadatak Ostvarite sljedeće bistabile uporabom zadanog bistabila i minimalnog broja dodatnih logičkih sklopova: a) uporabom T bistabila ostvariti JK bistabil b) uporabom JK bistabila ostvariti T bistabil Postupak rješavanja uvijek se provodi u četiri koraka: 1. Napisati tablicu stanja (tablica 1) traženog bistabila (bistabila kojeg treba realizirati). 2. Napisati tablicu stanja (tablica 2) zadanog bistabila (ili nacrtati dijagram stanja), tj. bistabila koji nam stoji na raspolaganju. 3. Proširiti tablicu 1 ulazima zadanog bistabila, i postaviti im vrijednost koja osigurava promjenu stanja Qn→Qn+1 kako je navedeno u tablici. 4. Ulaze zadanog bistabila u tablici 1 promatrati kao funkcije od stanja bistabila i ulaza traženog bistabila te ih izračunati (po mogućnosti u minimalnom obliku). a) JK bistabil pomoću T bistabila Tablica 1. Qn 0 0 0 0 1 1 1 1
J 0 0 1 1 0 0 1 1
K 0 1 0 1 0 1 0 1
Qn+1 0 0 1 1 1 0 1 0
Ovisnost novog stanja traženog bistabila o trenutnom stanju i ulazima u bistabil.
T 0 0 1 1 0 1 0 1
Proširenje ulazima bistabila koji imamo, i vrijednosti koje je potrebno dovesti na ulaze kako bi se osigurala promjena stanja navedena u tablici.
Bistabil.
183 Tablica 2. Tablica stanja T bistabila. Qn
Qn+1
0 0
T 0 1
1
0
1
1
1
0
0 1
Objašnjenje tablice 1 Pogledajmo prvi redak tablice 1. Ako se je bistabil nalazio u stanju 0, i na ulaze je dovedeno 00, novo stanje će biti 0 – ovo nam govori tablica stanja JK bistabila. No, mi zapravo imamo T bistabil koji će "glumiti" JK bistabil. Da bi T bistabil promijenio stanje iz Qn = 0 u Qn +1 = 0 (odnosno ostao u istom stanju), na ulaz T mora biti dovedena 0 (vidimo iz tablice stanja T bistabila; tablica 2). Pogledajmo sada treći redak tablice 1. Ako se je bistabil nalazio u stanju 0, i na ulaze je dovedeno 10, novo stanje će biti 1 – ovo nam govori tablica stanja JK bistabila. Da bi T bistabil promijenio stanje iz Qn = 0 u Qn +1 = 1 , na ulaz T mora biti dovedena 1 (vidimo iz tablice stanja T bistabila; tablica 2). Sada još treba pronaći logički izraz koji opisuje T kao funkciju od Qn , J i K. Iz tablice 1 to možemo direktno očitati: T (Qn , J , K ) = ∑ (2,3,5,7 )
Izraz možemo minimizirati pa dobijemo:
T 00
01
11
1
1 1
n
Q 0 1
T = J ⋅ Qn + K ⋅ Qn
JK 10
1
184
Zbirka riješenih zadataka
JK bistabil &
J
≥1
K
T
Q
Q
Q
Q
CP
&
CP
b) T bistabil pomoću JK bistabila Tablica 1. Qn 0 0 1 1
T 0 1 0 1
Qn+1 0 1 1 0
J 0 1 × ×
K × × 0 1
Dijagram 2. Dijagram stanja JK bistabila 10,11 00 01
0
1
01,11
00 10 J,K
Objašnjenje tablice 1 Pogledajmo prvi redak tablice 1. Ako se T bistabil nalazi u stanju 0, i na ulaz T se dovede 0, novo stanje biti će 0. Da bi JK bistabil promijenio stanje iz Qn = 0 u Qn +1 = 0 (odnosno ostao u istom stanju), na ulaz JK mora biti dovedeno 0× (vidimo iz dijagrama stanja JK bistabila; dijagram 2). Naime, ostajemo u stanju 0 ako dovedemo na ulaze 00, ili 01, što kraće zapisujemo s 0×. Ovo se je također moglo očitati i iz tablice stanja JK bistabila, međutim lakše je očitavati direktno iz dijagrama stanja. Ostale retke popunjavamo slično. Sada još moramo očitati J i K kao funkcije od Qn i T. Iz tablice 1 to možemo direktno očitati: J (Qn , T ) = ∑ m(1) + ∑ d (2,3)
K (Qn , T ) = ∑ m(3) + ∑ d (0,1)
Bistabil.
185
J
T 0
T
1
Qn 0 1
K
×
1
Qn 0
×
1
J =T
0
1
×
× 1
K =T
T bistabil T CP
J CP K
Q
Q
Q
Q
8.3. Zadatak Napisati strukturni opis SR bistabila izvedenog NI sklopovima, te ponašajni opis D bistabila sa sinkronim ulazom za reset, koji reagira na padajući brid signala takta. Neka kašnjenje korištenih logičkih sklopova (SR bistabil) odnosno samog bistabila (D bistabil) iznosi 5 ns.
SR bistabil library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY SRbistabil IS PORT ( S, R: IN std_logic; Q, Qn: OUT std_logic ); END SRbistabil; ARCHITECTURE Structural OF SRbistabil IS SIGNAL Qint, Qnint: std_logic; BEGIN -- Izračun internih izlaza Qint <= S NAND Qnint AFTER 5 ns; Qnint <= R NAND Qint AFTER 5 ns; -- Preslikavanje na izlaze bistabila Q <= Qint; Qn <= Qnint; END Structural;
186
Zbirka riješenih zadataka
D bistabil library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY Dbistabil IS PORT ( D, Reset: IN std_logic; Q, Qn: OUT std_logic; Clock: IN std_logic ); END Dbistabil; ARCHITECTURE Behavioral OF Dbistabil IS BEGIN PROCESS(Clock) VARIABLE Qint: std_logic; BEGIN IF falling_edge(Clock) THEN IF Reset = '1' THEN Qint := '0'; ELSE Qint := D; END IF; END IF; Q <= Qint AFTER 5 ns; Qn <= NOT Qint AFTER 5 ns; END PROCESS; END BEHAVIORAL;
8.4. Zadatak Na izlaz logičkog bloka s tri ulaza ostvarenog multipleksorima 2/1 i LUT-om direktno je spojen D bistabil. Nacrtati ovu strukturu. Programirati LUT i projektirati sklop tako da djeluje kao JK bistabil. Ulaze logičkog bloka označiti s A2A1 A0, gdje je A2 ulaz najveće težine. Neka A2 odgovara ulazu J, a ulaz A1 ulazu K.
Napišimo tablicu promjene stanja bistabila JK, i ulaz bistabila koji doista imamo: J 0 0 0 0 1 1 1 1 Programirani logički blok je tada:
K 0 0 1 1 0 0 1 1
Qn 0 1 0 1 0 1 0 1
Qn+1 0 1 0 0 1 1 1 0
D 0 1 0 0 1 1 1 0
Bistabil.
J K
187
A2 A1 A0
0 1 0 0 1 1 1 0
f
D CP
Q
Q
Q
8.5. Zadatak Uporabom potrebnom broja multipleksora 2/1 prikazati principijelnu shemu: a) sinkronog D bistabila okidanog razinom signala vremenskog vođenja, b) sinkronog D bistabila okidanog bridom signala vremenskog vođenja (master slave D registar). Objasniti funkciju D bistabila.
a) Sinkroni D bistabil okidan razinom signala vremenskog vođenja: Simbol:
Funkcija:
D CP
D bistabil pamti podatak s ulaza D kroz vrijeme dok je CP neaktivan.
Q Q
Implementacija:
d0 D
d1
y a
CP
Q
188
Zbirka riješenih zadataka
Kada je CP = 1, adresiran je ulaz d1, pa se podatak D prenosi na izlaz Q, ali i povratnom vezom vraća na ulaz d0. Sve promjene podatka D za vrijeme trajanja CP=1 prenose se i na izlaz. Kada CP prijeđe u 0, adresiran je ulaz d0, no kako je na taj ulaz direktno spojen izlaz sklopa, podatak koji je bio na izlazu u trenutku kada je CP prešao u 0 ostaje zarobljen u sklopu. Ovo je također stabilno stanje. b) sinkroni D bistabil okidan bridom signala vremenskog vođenja (master slave D registar). Simbol:
Izvedba bistabilima: D
Q
CP
D CP
D
Q
D
CP
Q
Q
CP Q
Q
Implementacija multipleksorima:
d1 D
d0
y a
d0 d1
y
Q
a
CP Sklop je napravljen analogno dvostrukom JK bistabilu objašnjenom na predavanjima. Glavni nedostatak je podvostručenje dijelova čime se povećava površina koju sklop zauzima na pločici silicija, međutim, glavni dobitak je okidanje na brid CP-a. U trenutku kada je CP = 0, ulaz D prenosi se na izlaz prvog multipleksora, ali ne i dalje. Potencijalne promjene ulaza D prolaze samo do polovice sklopa. U trenutku kada CP prelazi u 1 (dakle na rastući brid) prvi bistabil (multipleksor) se otpaja od ulaza D, a trenutni njegov izlaz se prosljeđuje kroz drugi bistabil (multipleksor). Stanje ostaje stabilno, i eventualne promjene ulaza D više nemaju utjecaja na izlaz.
Bistabil.
189
8.6. Zadatak U realnim sklopovima postoji kašnjenje. Objasniti utjecaj kašnjenja na izvedbu bridom okidanog bistabila prema principijelnoj shemi iz prethodnog zadatka.
U prethodnom zadatku prikazana je principijelna shema bridom okidanog bistabila uporabom dva multipleksora. Međutim, pokuša li se prema toj shemi izvesti konkretan bistabil, sklop vrlo vjerojatno neće raditi, jer njegov rad ovisi o istovremenom preklapanju prvog i drugog bistabila. Nacrtajmo tu shemu još jednom, na nešto modificirani način:
d0 D
d1
y a
CP
d0 Q1
d1
y
Q2
a
CP
Prikazan je padajućim bridom okidan dvostruki D bistabil, gdje je Q2 izlaz. Uz pretpostavku da uvijek vrijedi
CP + CP = 1 , analiza rada odgovara analizi iz prethodnog zadatka. Međutim, prilikom implementacije ovog sklopa koristit će se realne komponente te će na temelju signala CP trebati generirati njegov komplement (ili obrnuto) – zbog čega više neće vrijediti: CP + CP = 1 . Naime, jedan od ta dva signala kasnit će za onim drugim. Zbog toga treba provesti analizu utjecaja vremena kašnjenja na rad sklopa. Radi jednostavnosti pretpostavimo da su multipleksori komponente koje rade trenutno (dakle, ne kasne). Jedino mjesto gdje postoji kašnjenje jest između signala CP i CP . Zbog toga ćemo signale označene s CP i CP promatrati kao dva nezavisna signala. Pretpostavimo najprije da signal CP kasni za signalom CP određeno vrijeme (što je i razumna pretpostavka ako se signal CP generira propuštanjem signala CP kroz invertor). Tada je ponašanje sklopa prikazano sljedećim vremenskim dijagramom (dijagram 1). U početnom trenutku Q1 i Q2 nalaze se u nekom nepoznatom (ali konkretnom stanju; možemo pretpostaviti da je to npr. '1'). Ta dva stanja su ista, jer je CP =1, što znači da drugi multipleksor na svoj izlaz direktno propušta Q1. Na prvi rastući brid CP-a, prvi multipleksor na svoj izlaz propušta ulaz D, a kako se drugi multipleksor još nije prebacio na ulaz d0 (jer je CP još uvijek 1), stanje s ulaza D preslikava se na izlaz
190
Zbirka riješenih zadataka
bistabila! Sklop je, dakle, reagirao i na rastući brid CP-a, što svakako nije željeno ponašanje (sklop bi trebao reagirati samo na padajući brid!). Malo detaljnijom analizom može se uočiti da ovaj sklop zapravo reagira na svaki brid (i rastući i padajući)!
D
t CP
t CP t Q1
t Q2 t Dijagram 1. Ponašanje sklopa za slučaj da komplement kasni. Analizirajmo sada drugi slučaj: neka signal CP rani pred signalom CP (o konkretnoj implementaciji bit će riječi u nastavku). Ponašanje sklopa tada je opisano vremenskim dijagramom 2.
D
t CP
t CP t Q1
t Q2 t Dijagram 2. Ponašanje sklopa za slučaj da komplement rani. U ovom slučaju sklop radi ispravno. Naime, promjena izlaza događa se na rastući brid signala CP što okvirno odgovara padajućem bridu signala CP . Kako sklop radi? Oko padajućeg brida signala CP najprije se izlazni multipleksor prebacuje tako da na izlaz preslikava Q1 (koji je do tog trenutka pratio ulaz D), a zatim se ulazni multipleksor
Bistabil.
191
zatvara u petlju u kojoj je zaključan Q1 (i time se otpaja od ulaza D). Oko rastućeg brida CP -a događa se upravo suprotno: najprije se izlazni multipleksor zatvara u petlju u kojoj čuva Q2, a tek se potom ulazni multipleksor prebacuje tako da na svoj izlaz preslikava trenutni ulaz (što u tom trenutku više nema utjecaja na izlazni multipleksor). Prethodni slučaj kada je CP kasnio za CP -om nije radio upravo zbog pogrešnog redoslijeda promjena na multipleksorima; naime, u tom slučaju prilikom rastućeg brida CP -a najprije je ulazni multipleksor na svoj izlaz (Q1) propusti trenutni ulaz D (koji je odmah bio proslijeđen i na izlaz Q2 uništavajući time trenutni Q2), a tek je zatim izlazni multipleksor zaključao na svom izlazu trenutni Q2 (koji je tada zapravo odgovarao podatku s ulaza D). Ostaje još samo problem realizacije: kako napraviti sklop koji će predviđati komplement signala CP prije no što se sam CP promijeni? Rješenje je prikazano u nastavku:
d0 D
d1
y
d0 Q1
a CP = CLK
1
d1
Q2
y a
CP = CLK
1
CLK
Sklop zapravo reagira na padajući brid signala CLK. Signali CP i CP generiraju se na temelju signala CLK, te je očito da će na ovaj način signal CP uvijek raniti pred signalom CP . Sličan način realizacije bistabila (i generiranja signala CP i CP ) danas se koristi kod vrlo popularne porodice integriranih logičkih sklopova – CMOSa! ZADACI ZA VJEŽBU 1.
Uporabom dva NILI sklopa ostvariti osnovni SR bistabil. Ako je kašnjenje svakog NILI sklopa 10 ns, nacrtati vremenske dijagrame izlaza Q i Q za pobudu zadanu slikom. Da li se u odzivu sklopa pojavljuju oscilacije? Zašto? Da li bi SR bistabil izveden realnim komponentama oscilirao? Zašto? Prilikom rješavanja zadatka pretpostavite da je u početnom trenutku izlaz Q u logičkoj nuli, a izlaz Q u logičkoj jedinici.
192
Zbirka riješenih zadataka
Pobuda bistabila
2.
3.
Napišite strukturni VHDL model JK bistabila uporabom komponente SRbistabil opisane u zadatku 8.3 i osnovnih logičkih sklopova (koristiti VHDL operatore AND, OR, NOT i sl.). (Pismeni ispit 12. 11. 2004.) Ponašajnim VHDL-om opisati JK bistabil (ulazi J, K, CP, izlazi Q i Q'). Koristeći taj sklop kao komponentu, strukturnim VHDL-om opisati sklop temeljen na dva JK bistabila s dijeljenim ulazima J i CP, zasebnim ulazima K1 i K2 te izlazima Q1 i Q2.
Povijesna crtica Svi do sada obrađeni bistabili ime su dobili prema funkciji. SR od Set/Reset, D od Delay, T od Toggle a JK od ? Priča ide ovako. U srpnju 1958. godine, kada je većina zaposlenika Texas Instrumentsa otišla na tradicionalni dvotjedni odmor, Jack Kilby, kao novi zaposlenik bez prava na odmor ostao je na poslu, i rješavao problem poznat pod nazivom "tiranija brojeva". Bilo je to vrijeme elektronskih cijevi koje su bile relativno velike i nepouzdane. 1947. godine izmišljen je tranzistor (Bell Telephone Laboratories) čime su riješeni neki od problema elektronici. Međutim, za izgradnju kompliciranijih sklopova ipak je trebalo ručno povezivati veliki broj diskretnih elektroničkih komponenti. Kilby je razmišljao o načinu kako riješiti ovaj problem. Zaključio je da je jedina stvar koju proizvođač poluvodiča može jeftino i efikasno proizvoditi upravo poluvodiči. "Daljnja razmišljanja dovela su me zaključka da je poluvodič zapravo i sve što mi je potrebno" – napisao je Kilby 1976. u članku "Invention of the IC." U srpnju 1958. godine Kilby je započeo sa zapisivanjem svojih ideja i izradom skica. 12. rujna 1958. pred čelnicima Texas Instrumentsa Kilby je napravio demonstraciju. Pokazao je komadić srebra na germaniju, a u trenutku kada je pritisnuo sklopku, na osciloskopu se je pojavila beskonačno ponavljajuća sinusoida. Njegov izum je radio - riješio je problem. Prema inicijalima Jacka Kilbyja, izumitelja integriranih sklopova, JK bistabil je dobio ime…
Digitalna aritmetika.
193
9. Digitalna aritmetika. 9.1. Zadatak Za brojeve 10010(2), 10111(2), 00000(2), 12012(3) te 22001(3) izračunati (B-1)-vi komplement.
te B-ti
Prvi broj zapisan je u binarnom brojevnom sustavu. Slijedi da je baza brojevnog sustava B=2. Zbog toga se (B-1)-vi komplement kod ovog brojevnog sustava još i zove jedinični komplement (B-1=2-1=1), a B-ti komplement naziva se dvojni komplement. Tada je (B-1)-vi komplement broja X broj X' koji ima isti broj znamenaka kao i X, a i-ta znamenka od X' dobije se tako da se od (B-1) oduzme i-ta znamenka od broja X. Konkretno, slijedi da je (B-1)-vi komplement od broja 10010(2): 1
0
0
1
0
(B-1)-1 =1-1=0
(B-1)-0 =1-0=1
(B-1)-0 =1-0=1
(B-1)-1 =1-1=0
(B-1)-0 =1-0=1
0
1
1
0
1
Dakle, (B-1)-vi komplement od broja 10010(2) je 01101(2). Uočiti koje svojstvo ima (B1)-vi komplement: zbrajanjem broja i njegovog (B-1)-vog komplementa dobiva se broj čije su sve znamenke upravo B-1! Naime: +
1 0 1
0 1 1
0 1 1
1 0 1
0 1 1
B-ti komplement od broja X dobiva se pribrajanjem jedinice (B-1)-vom komplementu broja (uz ogradu da broj znamenaka ostaje nepromijenjen – u slučaju generiranja vodećeg preljeva, preljev se zanemaruje). Dakle, B-ti komplement od broja 10010(2) iznosi: B K = ( B − 1) K + 1 = 01101( 2) + 1( 2) = 01110 ( 2)
Zbrajanjem broja X i njegovog B-tog komplementa dobit će se broj kod kojeg su na mjestima znamenaka pribrojnika nule, i generira se vodeća jedinica kao preljev:
+ 1
1 0 0
0 1 0
0 1 0
1 1 0
0 0 0
194
Zbirka riješenih zadataka
Istim načinom izračuna slijedi da je (B-1)-vi komplement od 10111(2) jednak 01000(2), a B-ti komplement 01001(2). (B-1)-vi komplement od broja 00000(2) je 11111(2), a B-ti komplement iznosi 00000(2). Sljedeći broj zapisan je u ternarnom brojevnom sustavu. Slijedi da je baza brojevnog sustava B=3. (B-1)-vi komplement broja 12012(3) tada je: 1
2
0
1
2
(B-1)-1 =2-1=1
(B-1)-2 =2-2=0
(B-1)-0 =2-0=2
(B-1)-1 =2-1=1
(B-1)-2 =2-2=0
1
0
2
1
0
Dakle, (B-1)-vi komplement od broja 12012(3) je 10210(3). Njihovim zbrajanjem dobije se (očekivano): 22222(3); dakle, broj čije su sve znamenke upravo (B-1). B-ti komplement broja 12012(3) tada je: B K = ( B − 1) K + 1 = 10210 ( 3) + 1(3) = 10211( 3)
Zbrajanjem broja 12012(3) i njegovog B-tog komplementa (10211(3)) dobiva se upravo 00000(3) (uz odbacivanje preljeva). Istim načinom izračuna slijedi da je (B-1)-vi komplement od 22001(3) jednak 00221(3), a B-ti komplement iznosi 00222(3). 9.2. Zadatak Izvesti poluzbrajalo - napisati logičke izraze, prikazati simbol.
Ai 0 0 1 1
Bi 0 1 0 1
Si Ci 0 0 1 0 1 0 0 1
S i = Ai Bi + Ai Bi = Ai ⊕ Bi
C i = Ai ⋅ Bi
Si
Ai
H Bi
Ci
Simbol poluzbrajala
Digitalna aritmetika.
195
9.3. Zadatak Izvesti potpuno zbrajalo poluzbrajalima - napisati logičke izraze, prikazati simbol.
Ai 0 0 0 0 1 1 1 1
Bi Ci-1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1
S i = Ai Bi Ci −1 + Ai Bi Ci −1 + Ai Bi Ci −1 + Ai Bi Ci −1
Si Ci 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1
= (Ai Bi + Ai Bi )Ci −1 + ( Ai Bi + Ai Bi )Ci −1
(
)
= Ai ⊕ Bi Ci −1 + ( Ai ⊕ Bi )Ci −1 = Ai ⊕ Bi ⊕ Ci −1
Ci = Ai Bi Ci −1 + Ai Bi Ci −1 + Ai Bi Ci −1 + Ai Bi Ci −1 = (Ai Bi + Ai Bi )Ci −1 + Ai Bi
= ( Ai ⊕ Bi )Ci −1 + Ai Bi Ai Si Bi F Ci-1 Ci
Ai
Si
Ai
H Bi
Bi
Simbol potpunog zbrajala
Si
Si
Ai
H Ci
Bi
Ci
≥1
Ci
Ci-1
Izvedba uporabom poluzbrajala
9.4. Zadatak Realizirati četiri-bitno zbrajalo uporabom potpunih zbrajala i bez dodatnih sklopova. Potpuna zbrajala povezati ćemo tako da paralelno obavljaju zbrajanje odgovarajućih bitova, a prijenos koji nastaje širiti će se serijski. Sklop je prikazan na sljedećoj slici. b3 a3 b2 a2 b1 a1 b0 a0
c
Bi
Ai
Bi
Ai
Bi
Ai
Bi
Ai
Ci
F Ci-1
Ci
F Ci-1
Ci
F Ci-1
Ci
F Ci-1
Si
s3
Si
s2
Si
s1
0
Si
s0
Zbrajaju se brojevi a=a3a2a1a0 b=b3b2b1b0. Rezultat je s=s3s2s1s0, a preljev se čuva u c.
196
Zbirka riješenih zadataka
9.5. Zadatak Realizirati sklop za četiri-bitno zbrajanje/oduzimanje uporabom sklopa za četiri-bitno zbrajanje iz prethodnog zadatka. Ulaz op neka određuje operaciju koju treba obaviti, i to na ako je op=0, sklop radi zbrajanje (S=A+B), a ako je op=1, sklop radi oduzimanje (D=A-B).
Budući da moramo koristiti sklop za zbrajanje kao osnovu, oduzimanje je potrebno izraziti kao zbrajanje. To je moguće jer se oduzimanje može prikazati kao zbrajanje broja s dvojnim komplementom, što je pak jednako jediničnom komplementu uvećanom za 1. Rješenje je prikazano na slici. op
b3
a3
=1
c/p
b2
a2
=1
b1
a1
=1
b0
a0
=1
Bi
Ai
Bi
Ai
Bi
Ai
Bi
Ai
Ci
F Ci-1
Ci
F Ci-1
Ci
F Ci-1
Ci
F Ci-1
Si
s/d3
Si
s/d2
Si
s/d1
Si
s/d0
A se dovodi direktno na zbrajalo, dok se u ovisnosti o op na zbrajalo dovodi B (kada je op=0 jer b ⊕ 0 = b ), odnosno B (kada je op=1 jer b ⊕1 = b ). U slučaju zbrajanja na ulaz za preljev dovodi se 0 i sklop obavlja operaciju zbrajanja. U slučaju oduzimanja na sklop se dovodi jedinični komplement od B, ali se na ulaz za podljev također dovodi jedinica, pa sklop zapravo sumira A s jediničnim komplementom od B i sa 1, što zapravo odgovara sumiranju A i dvojnog komplementa od B.
9.6. Zadatak Izvesti sklop za izdvojeno generiranje prijenosa i njegovom uporabom realizirati četiri-bitno zbrajalo.
Kao što je poznato, bit preljeva kod potpunog zbrajala iznosi (vidi zadatak 9.3): C i = ( Ai ⊕ Bi )C i −1 + Ai Bi Ako uvedemo supstitucije Pi = Ai ⊕ Bi i Gi = Ai Bi , jednadžba prelazi u: C i = Pi C i −1 + Gi Prisjetimo se, Pi je propagirajući član, a Gi generirajući član. Kako je ovo iterativna formula, pogledajmo za slučaj četiri-bitnog zbrajala: C0 = G0 + P0C−1
Digitalna aritmetika.
197
C1 = P1C0 + G1 = P1P0C−1 + P1G0 + G1 C2 = P2C1 + G2 = P2 P1P0C−1 + P2 P1G0 + P2G1 + G2 C3 = P3C 2 + G3 = P3 P2 P1 P0C−1 + P3 P2 P1G0 + P3 P2G1 + P3G2 + G3 Zastavicu C-1 tumačimo kao prijenos iz prethodnog stupnja četiri-bitnog zbrajala (kada bismo npr. realizirali 8-bitno zbrajalo pomoću dva 4-bitna); za slučaj da se radi o jedinom sklopu (ili o prvom u nizu), C-1 postavlja se za operaciju zbrajanja na vrijednost 0. Sklop za izdvojeno generiranje prijenosa (engl. carry look-ahead) upravo realizira funkciju generiranja svih Ci. Simbol ovog sklopa je:
G3 P3 G2 P2 G1 P1 G0 P0 CLA
C3 C0
C-1
C1
C2
Shema spajanja CLA i 4 potpuna zbrajala: A3
B3
A2
B2
A1
B1
A0
B0
Ai
Bi
Ai
Bi
Ai
Bi
Ai
Bi
Ci
∑
Gi
Si
Ci-1 Pi
Ci
∑
Gi
Si
S3
Ci-1 Pi
Ci
∑
Gi
Si
Ci-1 Pi
S1
S2
CLA
C3 C0
C1
∑
Gi
Si S0
G3 P3 G2 P2 G1 P1 G0 P0 Cout
Ci
C-1 C2
9.7. Zadatak Realizirati sklop za množenje 4-bitnih brojeva.
Pogledajmo kako izgleda postupak množenja 4-bitnih brojeva ručno:
Ci-1 Pi
Cin
198
Zbirka riješenih zadataka a3a2a1a0 ⋅b3b2 b1b0
=
r7
a3b3 r6
a3b2 a2b3 r5
a3b1 a2b2 a1b3 r4
a3b0 a2b1 a1b2 a0b3 r3
a2b0 a1b1 a0b2
a1b0 a0b1
a0b0
r2
r1
r0
Množimo li 4-bitne brojeve, dobijemo četiri retka međusobno pomaknuta za 1 bit koje treba zbrojiti. Ovo se može riješiti tako da se odjednom zbrajaju samo dva retka pa postupak ponovi tri puta, kao što je prikazano u tablici u nastavku. Zbrajanjem prva dva retka dobije se broj x. Zbrajanjem x i trećeg retka dobije se y, a zbrajanjem y i četvrtog retka dobije se z. Bitno je za uočiti da isključivo prvi redak određuje zadnji bit rezultata, tj. r0=a0b0. To je u tablici naznačeno okomitom strelicom. Bit r1 određen je bitom x0, tj. zadnjim bitom rezultata prvog zbrajanja. Slično vrijedi i dalje. a3a2a1a0 ⋅b3b2 b1b0
= =
= + z4 r7
= + y4 a3b3 z3 r6
+ x4 a3b2 y3 a2b3 z2 r5
0 a3b1 x3 a2b2 y2 a1b3 z1 r4
a3b0 a2b1 x2 a1b2 y1 a0b3 z0 r3
a2b0 a1b1 x1 a0b2 y0
a1b0 a0b1 x0
a0b0
r2
r1
r0
Elementi koje zbrajamo nisu bitovi, već su umnošci. Međutim, umnožak dvaju bitova (a to jedino imamo) može se ostvariti upravo logičkom operacijom I. Sklop za množenje prikazan je u nastavku.
Digitalna aritmetika.
199 r0 r1
&
r2 0
A3
Cout
A3
Cout
A3
Cout
r7
&
A2
S3
A2
S3
A2
S3
r6
&
A1
S2
A1
S2
A1
S2
r5
&
A0
S1
A0
S1
A0
S1
r4
&
B3
S0
r3
&
∑
&
B3
B2
&
&
B1
&
B0
S0
∑
&
B3
B2
&
B2
&
B1
&
B1
&
B0
&
B0
S0
∑
a3 a2 a1 a0 b3 b2 b1 b0
9.8. Zadatak Povezati dva 4-bitna CLA sklopa tako da se ostvari CLA za 8-bitno zbrajalo.
Kako nam je broj CLA sklopova ograničen na 2, jedini način na koji možemo povezati ove sklopove jest u seriju, čime se dobiva efekt ripple-carry-ja, ali ne između pojedinih potpunih zbrajala, već između CLA sklopova, što, obzirom da njih ima puno manje u odnosu na broj potpunih zbrajala i ne predstavlja veliki vremenski gubitak (barem za relativno kraće brojeve). Rješenje je prikazano na slici. G3 P3 G2 P2 G1 P1 G0 P0
G7 P7 G6 P6 G5 P5 G4 P4 G3 P3 G2 P2 G1 P1 G0 P0 Cout
CLA
C3 G'3
P'3
C0
G3 P3 G2 P2 G1 P1 G0 P0 C-1
C1
C2
CLA
C3 G'3
P'3
C0
C-1 C1
C2
Cin
200
Zbirka riješenih zadataka
9.9. Zadatak Povezati 4-bitne CLA sklopove tako da se ostvari CLA za 16-bitno zbrajalo. Na raspolaganju je 5 4-bitnih CLA sklopova.
Kada bismo CLA sklopove povezali u seriju (kao u prethodnom zadatku) vrijeme propagacije ispravnog prijenosa kroz CLA sklopove već bi bilo zamjetno. Budući da imamo 5 CLA sklopova, možemo ih povezati hijerarhijski, čime se može dobiti na brzini. Ideja je da peti CLA sklop "predviđa" bitove prijenosa za četiri CLA sklopa niže razine, baš kao što svaki od tih CLA sklopova "predviđa" bitove prijenosa za potpuna zbrajala koja su na najnižoj razini. Standardni CLA sklop osim izlaza C0, C1, C2 i C3 ima još i izlaze P4 i G4, koji nam služe za hijerarhijsko povezivanje CLA sklopova. U nastavku ćemo izvesti izraze za svaki od tih izlaza. Kao što je poznato, bit preljeva kod potpunog zbrajala iznosi C i = ( Ai ⊕ Bi )C i −1 + Ai Bi , pri čemu uz Pi = Ai ⊕ Bi i Gi = Ai Bi dobivamo izraz C i = Pi C i −1 + Gi , pa slijedi: C0 = G0 + P0C−1 C1 = P1C0 + G1 = P1P0C−1 + P1G0 + G1 C2 = P2C1 + G2 = P2 P1P0C−1 + P2 P1G0 + P2G1 + G2 C3 = P3C 2 + G3 = P3 P2 P1 P0C −1 + P3 P2 P1G0 + P3 P2G1 + P3G2 + G3 Ostavimo prve tri jednadžbe, a četvrtu zapišimo kao: C3 = P'3 C −1 + G '3 gdje su (apostrof u ovom slučaju ne označava komplement): P'3 = P3 P2 P1 P0 , G '3 = P3 P2 P1G0 + P3 P2G1 + P3G2 + G3 . Ako to napišemo na ovaj način, vidimo da je C3 identičnog oblika kao i bilo koji drugi preljev! CLA sklop tada je oblika:
G3 P3 G2 P2 G1 P1 G0 P0 CLA
C3 G'3
P'3
C0
C-1 C1
C2
Uporabom ovih jedinica vrlo se jednostavno dobije hijerarhijsko generiranje prijenosa.
C0
C1
C2
C-1
C3 G'3
P'3
Cout
C0
C3
C1
C-1
C3 G'3
G'3
P'3
C0
CLA C1
C2
C-1
P'3
C0
CLA C1
C2
G3 P3 G2 P2 G1 P1 G0 P0
G7 P7 G6 P6 G5 P5 G4 P4
G3 P3 G2 P2 G1 P1 G0 P0
C2
CLA
P'3
CLA
G'3
G3 P3 G2 P2 G1 P1 G0 P0
G3 P3 G2 P2 G1 P1 G0 P0
C3
G11 P11G10 P10 G9 P9 G8 P8
G15 P15 G14 P14 G13 P13 G12 P12
C-1
C3 G'3
P'3
C0
CLA C1
C2
G3 P3 G2 P2 G1 P1 G0 P0
G3 P3 G2 P2 G1 P1 G0 P0
C-1
Cin
Digitalna aritmetika. 201
Način povezivanja ovih sklopova prikazan je u nastavku.
202
Zbirka riješenih zadataka
9.10. Zadatak Uporabom 3 potpuna zbrajala, 3 poluzbrajala te potrebnog broja osnovnih logičkih sklopova ostvariti sklop za množenje trobitnih binarnih brojeva.
Prikažimo tablično kako bismo pomnožili dva trobitna broja. x2 x1x0 ⋅y2 y1 y0
=
+ p3 x2y2 r4
= + r5
0 x2 y1 p2 x1 y2 r3
x2 y0 x1 y1 p1 x0 y2 r2
x1 y0 x0 y1 p0
x0 y0
r1
r0
r0
x0 y0 x1 y0
Ai
r1
Si
H x0 y1
Bi
Ci
Ci-1 Si
x2 y0 x1 y1
Ai F Bi Ci Ai Bi
x0 y2
Bi
Ci
Ci-1 Si
Si Ci
r2
H
H x2 y1
Si
Ai
x1 y 2
x2 y 2
r3
Ai F Bi Ci Ci-1 Si
r4
Ai F Bi Ci
r5
Svaki od produkata bitova može se ostvariti jednim I sklopom, pa je izostavljeno sa prikazane sheme.
Digitalna aritmetika.
203
9.11. Zadatak Prikazati izvedbu potpunog zbrajala pogodnog za uporabu CLA sklopova. Proračunati vrijeme stabilizacije izlaza uz pretpostavku da svaki logički sklop kasni jednako.
Potpuno zbrajalo u ovom slučaju mora imati sljedeće izlaze: Si, Ci, Pi te Gi. Svaka od tih četiriju funkcija Booleove su funkcije koje se mogu izvesti dvorazinskom logikom (npr. kao suma minterma ili pak produkt maksterma). Međutim, pažljivijom analizom može se uočiti da te funkcije imaju dosta zajedničkoga, te se u praksi ovaj sklop izvodi pomoću dva poluzbrajala (vidi zadatak 9.2). Kako su pri tome pojedini izlazi definirani izrazima: S i = Ai ⊕ Bi ⊕ C i −1 C i = ( Ai ⊕ Bi )C i −1 + Ai Bi Pi = Ai ⊕ Bi Gi = Ai Bi direktnom realizacijom poluzbrajalima slijedi:
≥1
Realiziramo li poluzbrajala osnovnim logičkim sklopovima, slijedi:
=1
=1
&
&
≥1
204
Zbirka riješenih zadataka
Označimo kašnjenje jednog logičkog sklopa s t dls . Tada će se nakon istovremene promjene ulaza Ai, Bi i Ci-1 ispravni izlazi Pi i Gi dobiti nakon t dls , ispravan izlaz Si nakon 2 ⋅ t dls a ispravan izlaz Ci nakon 3 ⋅ t dls .
9.12. Zadatak Izračunati i objasniti koliko iznosi vrijeme stabilizacije rezultata kod sljedećih sklopova: a) poluzbrajalo b) potpuno zbrajalo izvedeno pomoću dva poluzbrajala c) sklopa za paralelno zbrajanje 32-bitnih binarnih brojeva (RCA izvedba; engl. Ripple Carry Adder, tj. sklop za paralelno zbrajanje) d) sklopa za paralelno zbrajanje 32-bitnih binarnih brojeva uporabom jedne razine 4-bitnih CLA sklopova e) sklopa za paralelno zbrajanje 32-bitnih binarnih brojeva uporabom potrebnog broja razina 4-bitnih CLA sklopova (broj razina odrediti tako da se dobije minimalno vrijeme)
Pretpostavimo da sklopove realiziramo uporabom potrebnih osnovnih logičkih sklopova, u koje ćemo ubrojiti i sklop isključivo-ili (te da sve potrebne komplemente imamo trenutno). Pretpostavimo također da je kašnjenje svakog od osnovnih logičkih sklopova isto te iznosi t dls . a) Poluzbrajalo ima sljedeće izlaze: S i i C i . Izlazi S i i Ci kasnit će t dls . b) Potpuno zbrajalo ima sljedeće izlaze: S i i C i . Ako bi se oba izlaza realizirala kroz dvije razine osnovnih logičkih sklopova, tada bi oba kasnili 2 ⋅ t dls Međutim, kako je zadano potpuno zbrajalo realizirano uporabom poluzbrajala, tada treba otkriti koji je najduži put kojim signal mora proći prije no što se pojavi ispravan rezultat na svim izlazima. Ako se Ai, Bi i Ci-1 pojave u trenutku t=0 ns, ispravan Si prvog poluzbrajala pojavit će se u trenutku t = 0 + 1 ⋅ t dls = 1 ⋅ t dls , nakon čega drugo poluzbrajalo generira svoj Si još 1 ⋅ t dls kasnije, odnosno u trenutku t = 1 ⋅ t dls + 1 ⋅ t dls = 2 ⋅ t dls . U trenutku t = 1 ⋅ t dls započinje izračunavanje i Ci-a drugog poluzbrajala koje završava u trenutku t = 1 ⋅ t dls + 1 ⋅ t dls = 2 ⋅ t dls (jer se Ci računa jednom razinom logičkih sklopova). Ispravan Ci cijelog sklopa pojavit će se kada izračunati Ci drugog poluzbrajala prođe još kroz izlazni ILI sklop, pa će se Ci cijelog sklopa dobiti u trenutku t = 2 ⋅ t dls + 1 ⋅ t dls = 3 ⋅ t dls . Dakle, kod ove izvedbe rezultat kasni 2 ⋅ t dls , a prijenos 3 ⋅ t dls . c) Sklop za paralelno zbrajanje dva 32-bitna binarna broja u ovom se slučaju izvodi uporabom 32 potpuna zbrajala kod kojih se prijenos spaja serijski (vidi npr. zadatak 9.3). Koji je najgori slučaj koji može nastupiti? Pretpostavimo da u trenutku t=0 ns na sve ulaze dovodimo paralelno bitove pribrojnika i ulazni bit prijenosa. Ukoliko niti jedan sklop ne generira bit prijenosa, tada će se kompletan zbroj pojaviti na izlazu nakon 2 ⋅ t dls (jer toliko kasni svako potpuno zbrajalo, a zbrajanje se izvodi paralelno), a prijenos nakon 3 ⋅ t dls . No promotrimo slučaj u kojem zbrajamo npr. brojeve
Digitalna aritmetika.
205
A=000…000(2), B=111…111(2) i Cin=1. Sklop koji obavlja zbrajanje bitova najmanje težine (0-ti bit) nakon 2 ⋅ t dls generirat će rezultat 0, a nakon 3 ⋅ t dls prijenos 1. Zbog tog prijenosa sklop koji računa sumu prvog bita morat će ponovno preračunati rezultat i prijenos (jer se je promijenio njegov Cin). Za rezultat će trebati 2 ⋅ t dls a za prijenos 3 ⋅ t dls . Rezultat će opet biti 0 i generiranje prijenosa zbog čega će sklop koji računa sumu drugog bita nanovo morati preračunati rezultat, itd. Na ovaj će se način ispravan rezultat kod n-bitnog zbrajala pojaviti tek u trenutku t = (n − 1) ⋅ 3 ⋅ tdls + 2 ⋅ t dls , gdje je (n − 1) ⋅ 3 ⋅ tdls vrijeme potrebno da ispravni prijenos stigne na ulaz zbrajala najviše težine, a 2 ⋅ t dls vrijeme potrebno da se s tim prijenosom izračuna ispravan rezultat. Ispravan prijenos pojavit će se na izlazu zbrajala najviše težine nakon t = n ⋅ 3 ⋅ tdls . U našem konkretnom slučaju to znači da će se ispravan rezultat pojaviti nakon 95 ⋅ t dls a ispravan prijenos nakon 96 ⋅ t dls . d) Prilikom korištenja CLA sklopova umjesto klasičnih potpunih zbrajala koristimo potpuna zbrajala koja osim izlaza R i prijenosa generiraju i izlaze P (engl. propagate) i G (engl. generate) (vidi prethodni zadatak). Pri tome su izlazi P i G dostupni uz vrijeme kašnjenja od 1 ⋅ t dls . Kako imamo na raspolaganju 4-bitne CLA sklopove, potpuna zbrajala treba grupirati u grupe od 4 zbrajala koja svoje P i G izlaze dovode na ulaze jednog CLA sklopa. Time imamo 8 grupa od po 4 potpuna zbrajala. CLA sklopovi bit će povezani u seriju. Neka se na ulaze A i B u trenutku t=0 ns dovedu svi bitovi pribrojnika, te na ulaz Cin valjani početni prijenos. Nakon 1 ⋅ tdls , tj. u trenutku t = 0 + 1 ⋅ t dls = 1⋅ tdls na izlazima svih potpunih zbrajala nalaze se izračunati P i G. Na temelju tih ulaza svi CLA-ovi izračunaju bitove prijenosa nakon još 2 ⋅ t dls (ovo se računa dvorazinskom logikom), tj. u trenutku t = 1⋅ tdls + 2 ⋅ t dls = 3 ⋅ t dls . Međutim, nakon što je CLA koji računa prijenos kod sumiranja najniža četiri bita izračunao ispravan rezultat, bit prijenosa između prvog i drugog CLA sklopa može se promijeniti, pa drugi CLA sklop mora nanovo izračunati svoje izlaze (čime može pokrenuti ponovno računanje izlaza sljedećeg CLA sklopa, itd). Budući da imamo u seriju povezane CLA sklopove, vrijeme potrebno za stabilizaciju njihovih izlaza gledano od trenutka pojave svih Pi i Gi ulaza tada je k ⋅ 2 ⋅ t dls (gdje je k broj CLA sklopova u seriji), što znači da dolazimo do trenutka t = 1⋅ tdls + k ⋅ 2 ⋅ t dls . U našem konkretnom slučaju 8 CLA sklopa spojena su u seriju, te smo došli do trenutka t = 17 ⋅ t dls . Konačno, nakon što su svi prijenosi u sklopu ispravni, nanovo se mora izračunati rezultat samog zbrajanja, a to potpuna zbrajala obave paralelno, uz kašnjenje od 2 ⋅ t dls , tj. u trenutku t = 17 ⋅ t dls + 2 ⋅ tdls = 19 ⋅ t dls . Ispravan prijenos najvišeg bita pri tome se ne uzima sa zbrajala, već s zadnjeg CLA sklopa, gdje je dostupan već u trenutku t = 17 ⋅ t dls . U odnosu na prethodni slučaj, vidimo da je došlo do bitnog ubrzavanja rada sklopa. e) Prilikom realizacije ovakvog sklopa i potpuna zbrajala i CLA sklopovi generiraju izlaze P i G (vidi npr. zadatak 9.8). Bitno je uočiti da se G kod CLA sklopa računa dvorazinskom logikom, te je dostupan tek nakon 2 ⋅ t dls . Na ovaj se način po četiri potpuna zbrajala grupiraju uz jedan CLA sklop, a prijenos između četiri CLA sklopa rješava se još jednom razinom CLA sklopova (u kojoj se u ovom slučaju nalaze dva
206
Zbirka riješenih zadataka
CLA sklopa; time ukupno trebamo 6 4-bitnih CLA sklopova). Budući da se na dnu nalaze samo dva CLA sklopa, prijenos između njih riješit ćemo direktnim povezivanjem (a ne novom razinom CLA sklopova). Postupak izračunavanja tada je sljedeći. U trenutku t = 0 ns na sklop se dovode svi ulazi. Nakon 1 ⋅ tdls , tj. u trenutku t = 0 + 1 ⋅ t dls = 1⋅ tdls izračunati su svi P i G izlazi potpunih zbrajala. Nakon još 2 ⋅ t dls , tj. u trenutku t = 1⋅ tdls + 2 ⋅ t dls = 3 ⋅ t dls sve CLA jedinice u prvoj razini izračunavaju svoje P i G izlaze (zapravo, P se dobije t = 1⋅ tdls + 1 ⋅ t dls = 2 ⋅ t dls ). Na temelju tih izlaza CLA sklop najviše razine nakon još 2 ⋅ t dls , tj. u trenutku t = 3 ⋅ tdls + 2 ⋅ t dls = 5 ⋅ tdls izračunava ispravne bitove prijenosa. Prijenos se vodi do CLA sklopa koji računa prijenose za gornjih 16 bitova rezultata, što se izračuna nakon još 2 ⋅ t dls , tj. u trenutku t = 5 ⋅ t dls + 2 ⋅ t dls = 7 ⋅ t dls . Ovi prijenosi vode se na ulaze CLA sklopova prve razine. Nakon još 2 ⋅ t dls , tj. u trenutku t = 7 ⋅ tdls + 2 ⋅ t dls = 9 ⋅ tdls CLA sklopovi prve razine imaju izračunate ispravne prijenose za sva potpuna zbrajala, te se ispravni rezultat pojavljuje još 2 ⋅ t dls kasnije, tj. u trenutku t = 9 ⋅ t dls + 2 ⋅ t dls = 11⋅ tdls . Ispravan prijenos najvišeg bita pri tome se uzima s hijerarhijski najnižeg CLA sklopa, gdje je bio dostupan već u trenutku t = 7 ⋅ tdls . Hijerarhijskim povezivanjem CLA sklopova dobili smo, dakle, još brži rad sklopova.
ZADACI ZA VJEŽBU 1.
Prikazati sklop koji se temelji na 9-bitnom binarnom zbrajalu, a koji može, ovisno o signalu X obaviti binarno zbrajanje (X=1) ili binarno oduzimanje (X=0) dva 9-bitna binarna broja zapisana u dvojnom komplementu. Ako se takvom sklopu na ulaz dovedu sljedeći binarni brojevi: a) A = 135, B = 100 b) A = 57, B = 212 c) A = -34, B = 133 d) A = -250, B = 230 napisati rezultate operacija zbrajanja i oduzimanja, kao i očekivane rezultate (izračun provesti "ručno").
2.
Napišite u VHDL-u ponašajni model 5-bitnog CLA sklopa koji dodatno generira svoje P i G članove (čemu oni služe?)
3.
Sljedeće brojeve prikazati binarnim zapisom u dvojnom komplementu: 110, 13, -25, 78, -128, 212, -130. Za prikaz brojeva u dvojnom komplementu koristiti 8 bitova (mogu li se svi zadani brojevi uopće zapisati u 8 bita?). Dodatno, utvrditi o kojim se brojevima radi, ako je njihov binarni prikaz dvojnim komplementom jednak: (a) 11001101, (b) 00101111, (c) 00000000, (d) 11111111, (e) 01011010. Obaviti zbrajanje 3 i -3, 114 i 17, -28 i -43, -100 i -113; koji je rezultat?
4.
Izračunati (B-1)-vi komplement i B-ti komplement sljedećih brojeva: 11111(2), 01110(2), 22211(3), 11221(3), 57251(8), 10772(8), 19357(10), 99832(10), A7EFF(16), 2EE739(16).
5.
Neka se za kodiranje dekadskih brojeva koristi Excess-3 kod. Projektirati sklop koji računa sumu dva jednoznamenkasta broja. Uporabom tog sklopa projektirati sklop koji računa sumu dva troznamenkasta broja.
Digitalna aritmetika.
207
6.
Neka se za kodiranje dekadskih brojeva koristi Excess-3 kod. Projektirati sklop koji računa (B-1)-vi komplement jednoznamenkastog broja. Projektirati sklop koji računa Bti komplement troznamenkastog broja.
7.
Neka se za kodiranje dekadskih brojeva koristi BCD kod. Projektirati sklop koji računa sumu dva jednoznamenkasta broja. Uporabom tog sklopa projektirati sklop koji računa sumu dva troznamenkasta broja.
8.
Neka se za kodiranje dekadskih brojeva koristi BCD kod. Projektirati sklop koji računa (B-1)-vi komplement jednoznamenkastog broja. Projektirati sklop koji računa B-ti komplement troznamenkastog broja. MINI-PROJEKTI ZA VJEŽBU
1.
Četveroznamenkasti dekadski broj pamti se u sljedećem formatu: jedan bit predstavlja predznak (0 – pozitivan, 1 – negativan), slijede četiri grupe po četiri bita, pri čemu svaka grupa predstavlja jednu znamenku broja kodiranu BCD kodom. Projektirati kombinacijski sklop koji na ulaz dobiva dva takva broja A i B, te upravljački ulaz OP. Kada je OP=0, sklop treba izračunati R=A+B, a za OP=1 sklop računa R=A-B. Sklop ima dva izlaza: R je rezultat operacije definirane preko zastavice OP (zapisan u istom formatu kao i ulazni brojevi), te zastavicu ERR. ERR treba postaviti na 1 u slučaju da se rezultat ne može zapisati u četiri znamenke (kolika je širina izlaza; tada R nije bitan), a inače treba biti 0. Nacrtati strukturu ovog sklopa, te njegov VHDL opis. Provjeriti ispravnost rada sklopa u simulatoru.
2.
Četveroznamenkasti dekadski broj pamti se u sljedećem formatu: jedan bit predstavlja predznak (0 – pozitivan, 1 – negativan), slijede četiri grupe po četiri bita, pri čemu svaka grupa predstavlja jednu znamenku broja kodiranu Excess-3 kodom. Projektirati kombinacijski sklop koji na ulaz dobiva dva takva broja A i B, te upravljački ulaz OP. Kada je OP=0, sklop treba izračunati R=A+B, a za OP=1 sklop računa R=A-B. Sklop ima dva izlaza: R je rezultat operacije definirane preko zastavice OP (zapisan u istom formatu kao i ulazni brojevi), te zastavicu ERR. ERR treba postaviti na 1 u slučaju da se rezultat ne može zapisati u četiri znamenke (kolika je širina izlaza; tada R nije bitan), a inače treba biti 0. Nacrtati strukturu ovog sklopa, te njegov VHDL opis. Provjeriti ispravnost rada sklopa u simulatoru.
Registri.
10.
209
Registri. 10.1. Zadatak Uporabom D bistabila nacrtati shemu 4-bitnog registra s paralelnim ulazima i paralelnim izlazima.
Q3
D CP
Q2
Q
D
CP
Q1
Q
D
CP Q
Q
D
CP Q
D3
Q0
CP Q
D2
Q Q
D1
D0
10.2. Zadatak Uporabom D bistabila nacrtati shemu 4-bitnog posmačnog registra sa serijskim ulazom i paralelnim izlazima.
Q2
Q3
D CP
D
Q
CP
D
Q
CP Q
Q1
D
Q
CP Q
Q0
D
Q
CP Q
Q
10.3. Zadatak Projektirati trobitni posmačni registar uporabom bridom okidanih D bistabila i potrebnog broja multipleksora 4/1. Mogućnosti sklopa su sljedeće:
210 S1 0 0 1 1
Zbirka riješenih zadataka S0 0 1 0 1
Funkcija Posmak udesno; punjenje bitom Sin Posmak ulijevo; punjenje bitom Sin Paralelni upis Kružni posmak udesno
Pout1
Pout0
d0 d1
y d2 a d3 a1 0
D
d0 d1
Q
CP
y d2 a d3 a1 0
CP
Q
Sin Pin0 S1 S0 CP
d0 d1
Q
D
y d2 a d3 a1 0
Pout2
Q
D CP
Q
Q
Pin1
Pin2
10.4. Zadatak Projektirati sklop koji će prolaziti kroz sljedeća stanja: 0 → 8 → 4 → 10 → 5 → 2 → 9 → 12 → 14 → 7 → 3 → 1 → 0 → ... Sklop je potrebno ostvariti uporabom strukture prikazane na slici (posmačni registar + multipleksor). Nespecificirana stanja treba tako riješiti da sklop u minimalnom broju koraka dođe u stanje 0.
d0 d1 d2 d3 d4
y
d5 d6 1
A B C D Sin
→ CP
CP
Napišimo tablicu promjene stanja:
mux 8/1
d7 a2 a1 a0
Registri.
A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
211
B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
→ → → → → → → → → → → → → → → →
A' 1 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0
B' 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
C' 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
D' 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
Sin=A'
D D D 0 D D
D 0
Objašnjenje: U svakom retku ABCD predstavlja početno stanje a A'B'C'D' predstavlja novo stanje. Zbog načina na koji je sklop izveden (uporabom posmačnog registra) vrijedi: B'=A, C'=B, D'=C. A' je određen tako da pređemo u ispravno stanje. Međutim, kako odrediti u koja stanja treba prijeći iz stanja koja nisu zadana (6, 11, 13, 15)? Zadan je kriterij da se u tom slučaju kroz minimalni broj stanja treba prijeći u stanje 0. Pogledajmo redom kako smo primjenjivali taj kriterij. Stanje 15 Iz stanja 15 = 1111 možemo prijeći u stanje Sin 111 (vidi sliku). Za Sin=0 to je 7, a za Sin=1 to je 15. Ako smo došli u stanje 7, to stanje je definirano i do nule nam treba još 3 koraka (označeno u zagradi). Uz čvor 7 podvučeno se nalazi i ukupni broj koraka do nule – 3 plus 1 za prijelaz 15 u 7. Ako smo došli u stanje 15, vrtimo se ciklički u krug što nije put prema stanju 0 u minimalnom broju koraka.
15
7 (3)
15
4
Stanje 13 Na isti način kao u prethodnom razmatranju (vidi sliku ispod) možemo utvrditi da iz stanja 13 treba prijeći u stanje 6 (neovisno o tome što to stanje također nije definirano, a alternativno stanje 14 jest). Stanje 11
212
Zbirka riješenih zadataka
Iz stanja 11 potrebno je prijeći u stanje 13 (vidi sliku ispod). Prilikom crtanja stabla odluke možemo se zaustaviti na čvoru 13 bez da ga raščlanjujemo jer smo to napravili u prethodnom koraku, i već smo utvrdili da je najkraći put iz stanja 13 do stanja 0 dugačak 4. Stanje 6 Iz stanja 6 potrebno je prijeći u stanje 3 (vidi sliku ispod). 11
13
5 (8)
6
14 (4)
13 (4)
9
5
5 6
3 (2)
11
4 3 (2)
13
5 (8)
3
11 Shema traženog sklopa je dakle: d0
mux 8/1
d1 d2 0
d3 d4 d5
y
d6 0 1
A B C D Sin
→ CP
CP
d7 a2 a1 a0
11 (5) 6
Registri.
213
10.5. Zadatak Uporabom potpunog zbrajala i potrebnog broja sinkronih bridom okidanih D registara realizirati sklop koji obavlja serijsko zbrajanje dvaju binarnih brojeva. Objasniti rad sklopa. Prikazati na vremenskom dijagramu proces zbrajanja 4-bitnih brojeva 5 i 9.
Sklop je prikazan na slici.
Ain Bin
Ai Si Bi F Ci-1 Ci
D CP
Q
Rout
Q
Reset CP D CP
Q
Cout
Q
Bitovi brojeva dovode se serijski na ulaze Ain i Bin pri čemu se najprije dovodi najmanje značajni bit. Signalom Reset najprije je potrebno resetirati D bistabile. Prvi D bistabil čuva bit rezultata, dok drugi D bistabil čuva bit preljeva potreban za zbrajanje sljedećih značajnijih bitova. Rout čuva rezultat zbrajanja trenutnih bitova a Cout je preljev nastao zbrajanjem bitova koji su u trenutku rastućeg brida CP-a bili na ulazu potpunog zbrajala. Vremenski dijagram prikazan je u nastavku. Uočiti da signal Reset djeluje asinkrono.
214
Zbirka riješenih zadataka Ain
1
0
1
0 5 = 0101(2) t
Bin
1
0
0
1 9 = 1001(2) t
CP
t Reset
t Rout
0
1
1
1 14 = 1110(2) t
Cout
1
0
0
0
t 10.6. Zadatak
Uporabom potrebnog broja D bistabila i multipleksora 2/1 ostvariti 3-bitni registar s mogućnošću paralelnog upisa podataka. Rad registra definiran je signalom L na način: Signal L 0 1
Akcija Ostaviti prethodno stanje registra Upisati stanje s paralelnih ulaza
Di su paralelni ulazi, a Qi su izlazi registra.
Registri.
215 D0
Q0 D1
0 1
y
D
a0
Q1 D2
0
Q
1
CP
y a0
D
0
Q
1
CP
Q
Q2
y a0
D
Q
CP
Q
Q
L CP
10.7. Zadatak Uporabom dva 4-bitna posmačna registra čija je funkcionalnost prikazana tablicom ostvariti 8-bitni posmačni registar iste funkcionalnosti. Dozvoljeno je još koristiti multipleksor te potreban broj osnovnih logičkih sklopova. S1 0 0 1 1
S0 0 1 0 1
Funkcija Posmak udesno; punjenje bitom SRin Posmak ulijevo; punjenje bitom SLin Paralelni upis Resetiranje registra
Za ovaj jednostavan slučaj zadanih operacija sklopovi se mogu spojiti direktno, kao što je prikazano na shemi. A B C D
SRin
SRin
SLout
SLout
A B C D
S1 S0
→ CP
E F G H
SRout SLin
SRin
A B C D
→
SLout S1 S0 CP
SRout
SRout
SLin
SLin
S1 S0 CP
10.8. Zadatak Uporabom dva 4-bitna posmačna registra čija je funkcionalnost prikazana tablicom ostvariti 8-bitni posmačni registar iste funkcionalnosti. Dozvoljeno je još koristiti multipleksor 2/1 te dekoder 2/4.
216 S1 0 0 1 1
Zbirka riješenih zadataka S0 0 1 0 1
Funkcija Posmak udesno; punjenje bitom SRin Posmak ulijevo; punjenje bitom SLin Paralelni upis Kružni posmak udesno
Kao osnova za rješavanje ovog zadatka može nam poslužiti prethodni zadatak. Međutim, potrebno je uočiti bitnu razliku: funkcioniranje sklopa za vrijednost 11 upravljačkih signala. Tada registar interno obavlja kružni pomak u desno, pri čemu se ne koriste izlaz SRout i ulaz SRin. Ako bismo na predloženi način spojili registre, za kombinaciju 11 ne bismo dobili kružni pomak u desno 8-bitnog podatka, već podatak u kojem su prva četiri bita i druga četiri bita kružno pomaknuta u desno. Problem možemo riješiti tako da kružni pomak u desno 8-bitnog podatka obavimo "običnim" pomakom u desno, a izvana zadnji bit podatka vratimo na ulaz prvog registra. Dakle, upravljačke signale ne smijemo direktno dovoditi na ulaze Si. Uvedimo pomoćne signale S0x i S1x (koje ćemo stvarmo dovoditi na upravljačke ulaze) i pomoćni signal K (koji će označavati da se radi o kružnom pomaku). S1 0 0 1 1
S0 0 1 0 1
S1x 0 0 1 0
S0x 0 1 0 0
K 0 0 0 1
Iz tablice možemo očitati tražene funkcije (odnosno minterme): S1x = S1 S 0 = m 2 , S 0 x = S1 S 0 = m1 , K = S1 S 0 = m3 .
Konačni sklop tada je prikazan na sljedećoj slici: A B C D
SRin
d0 d1
y a SRin
SLout
E F G H
A B C D
SLout
→
S1 S0 CP
SRout
SRin
→
SLout S1 S0 CP
SLin
d3 d2 d1 d0 dek 2/4 a1 a0
S1 S0
A B C D
CP
SRout
SRout
SLin
SLin
Registri.
217
10.9. Zadatak Napisati strukturni model 4-bitnog posmačnog registra sa serijskim ulazom i paralelnim izlazima, te ulazom za reset. Kao osnovu za opis registra koristiti komponentu Dbistabil opisanu u zadatku 8.3.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY Reg4bit IS PORT ( Sin, Reset: IN std_logic; Q: OUT std_logic_vector( 3 DOWNTO 0); Clock: IN std_logic ); END Reg4bit; ARCHITECTURE Structural OF Reg4bit IS COMPONENT Dbistabil IS PORT ( D, Reset: IN std_logic; Q, Qn: OUT std_logic; Clock: IN std_logic ); END COmponent; SIGNAL Qint: std_logic_vector( 3 DOWNTO 0); BEGIN -- povezivanje pojedinih D bistabila u 4-bitni registar D3: D2: D1: D0:
Dbistabil Dbistabil Dbistabil Dbistabil
PORT PORT PORT PORT
map map map map
(Sin, Reset, Qint(3), open, Clock); (Qint(3), Reset, Qint(2), open, Clock); (Qint(2), Reset, Qint(1), open, Clock); (Qint(1), Reset, Qint(0), open, Clock);
-- preslikavanje izlaza bistabila na izlaz 4-bitnog registra Q <= Qint; END BEHAVIORAL;
10.10. Zadatak Ponašajnim VHDL-om modelirati registar prikazan slikom. Registar nailaskom impulsa CP pohranjuje vrijednost narinutu na njegovom ulazu. Upravljački ulazi S i C (postavljanje i brisanje) moraju biti sinkroni. Svi signali moraju biti isključivo ulazni odnosno izlazni.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
S
2 D
Q
CP C
2
218
Zbirka riješenih zadataka
ENTITY d_reg IS PORT ( clk, s, c: IN std_logic; d: IN std_logic_vector (1 downto 0); q: OUT std_logic_vector (1 downto 0) ); END d_reg; ARCHITECTURE Behavioral OF d_reg IS BEGIN PROCESS (clk, s, c, d) BEGIN IF (falling_edge(clk)) THEN IF (s = '0') THEN q <= "11"; ELSIF (c = '0') THEN q <= "00"; ELSE q <= d; END IF; END IF; END PROCESS; END Behavioral;
10.11. Zadatak Korištenjem registra iz prethodnog zadatka nacrtati shemu 5bitnog posmačnog registra prikazanog na slici i napisati odgovarajuću specifikaciju u VHDL-u. Operacije koje obavlja registar određene su ulazom ctrl: 00 – ne događa se ništa, 01 – posmak u desno, 10 – paralelni upis te 11 – nedefinirano. Napomena: sklop iz prethodnog zadatka upotrebljavati kao crnu kutiju!
5 Pout
Sin reset CP
ctrl
Pin 2
5
Nacrtajmo najprije kako bismo spojili sve potrebne sklopove. Nepotpuna shema prikazana je u nastavku:
Registri.
219
Za realizaciju sklopa koristimo tri sklopa iz prethodnog zadatka čime dobivamo mogućnost izrade čak 6-bitnog registra (pa nećemo iskoristiti sve – lijeva strana sklopa r2 ostat će neiskorištena). Uočimo sada ulaze i izlaze sklopa. Ulazi su pin (5-bitni vektor), sin, ctrl (2-bitni vektor), reset i clk, dok je izlaz pout (5-bitni vektor). Vektori su prikazani u točkastom pravokutniku. Također koristimo dva interna signala: pint (6-bitni vektor) i pouti (6-bitni vektor). Uvidom u shemu sklopa očito je da se interni signal pouti direktno spaja na izlaz sklopa pout. No trebamo utvrditi što treba spojiti na signal pint. Analizirajmo funkciju sklopa. Kada je na ctrl vrijednost 00, sklop treba zadržati postojeće stanje. To znači da mora vrijediti pint(i)=pouti(i); što je bilo na izlazu, to treba doći na ulaz kako bi se u sljedećem koraku opet pojavilo na izlazu. Ovaj slučaj, dakle, možemo opisati izrazom: pint(i) <= not crtl(1) and not ctrl(0) and pouti(i). Za slučaj da je na ctrl vrijednost 10, sklop treba obaviti paralelni upis, tj.: pint(i) <= crtl(1) and not ctrl(0) and pin(i). Konačno, za slučaj da je na ctrl vrijednost 01, sklop treba obaviti posmak udesno i punjenje lijeve pozicije s ulaza sin, tj. gledajući sliku treba vrijediti: pint(4) <= not crtl(1) and ctrl(0) and sin, pint(i) <= not crtl(1) and ctrl(0) and pouti(i+1), za 0<=i<4. Kako je ponašanje za kombinaciju 11 nedefinirano, izrazi se mogu pojednostavniti, tako da se promatraju slučajevi kada su oba bita ctrl u 0, nulti u 1 ili pak prvi u jedan. Kako su analizirani slučajevi potpuno disjunktni, navedeni izrazi za sve slučajeve mogu se spojiti logičkom operacijom ILI, iz čega slijedi navedeno rješenje. Nekorišteni ulaz pint(5) spaja se ne logičku jedinicu. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shift is PORT ( pout: OUT std_logic_vector (4 DOWNTO 0); sin, reset, clk: IN std_logic; ctrl: IN std_logic_vector (1 DOWNTO 0); pin: IN std_logic_vector (4 DOWNTO 0) ); END shift; ARCHITECTURE Structural OF shift IS COMPONENT d_reg PORT ( clk, s, c: IN std_logic;
220
Zbirka riješenih zadataka
d: IN std_logic_vector (1 DOWNTO 0); q: OUT std_logic_vector (1 DOWNTO 0) ); END COMPONENT; SIGNAL pint: std_logic_vector(5 DOWNTO 0); SIGNAL pouti: std_logic_vector(5 DOWNTO 0); BEGIN pint (0) <= (ctrl(1) AND pin(0)) OR OR (NOT ctrl(1) AND NOT pint (1) <= (ctrl(1) AND pin(1)) OR OR (NOT ctrl(1) AND NOT pint (2) <= (ctrl(1) AND pin(2)) OR OR (NOT ctrl(1) AND NOT pint (3) <= (ctrl(1) AND pin(3)) OR OR (NOT ctrl(1) AND NOT pint (4) <= (ctrl(1) AND pin(4)) OR OR (NOT ctrl(1) AND NOT pint (5) <= '0';
(ctrl(0) AND pouti(1)) ctrl(0) AND pouti(0)); (ctrl(0) AND pouti(2)) ctrl(0) AND pouti(1)); (ctrl(0) AND pouti(3)) ctrl(0) AND pouti(2)); (ctrl(0) AND pouti(4)) ctrl(0) AND pouti(3)); (ctrl(0) AND sin) ctrl(0) AND pouti(4));
r0: d_reg PORT MAP (clk, '1', reset, pint (1 DOWNTO 0), pouti(1 DOWNTO 0)); r1: d_reg PORT MAP (clk, '1', reset, pint (3 DOWNTO 2), pouti(3 DOWNTO 2)); r2: d_reg PORT MAP (clk, '1', reset, pint (5 DOWNTO 4), pouti(5 DOWNTO 4)); pout <= pouti(4 DOWNTO 0); END Structural;
Zašto je uopće uveden interni signal (vektor) pouti? Razlog tomu je činjenica da interni signal pint koji se dovodi na ulaze dvobitnih registara ovisi o trenutnom izlazu sklopa. No kako je trenutni izlaz sklopa (pout) u opisu sklopa proglašen izlaznim (out), njegova se vrijednost ne može čitati! Da bismo riješili taj problem, možemo postupiti dvojako: ili pout proglasiti ulazom/izlazom (dakle, u VHDL-u to bi bilo inout), ili uvesti interni signal koji direktno spajamo na izlaz sklopa. Prvo rješenje je loše jer može rezultirati sintezom dodatnog sklopovlja (kako bi se osiguralo da se s tih pinova sklopa doista može i čitati i pisati). Drugo je rješenje, iz očitog razloga, bolje. 10.12. Zadatak Uporabom potrebnog broja sinkronih bridom okidanih JK bistabila ostvariti 4-bitni posmačni registar sa serijskim ulazom i paralelnim izlazom. Dozvoljeno je koristiti jedan invertor.
Registri.
221 D0
Sin 1
J CP K
Q Q
D1
J CP K
Q Q
D3
D2
J CP K
Q
J CP K
Q
Q Q
CP
Objašnjenje: Prvi bistabil uporabom invertora pretvoren je u D bistabil koji je i inače osnova za izgradnju registara. Međutim, kako smo time potrošili raspoložive invertore, potrebno se je dosjetiti kako i ostale JK bistabile pretvoriti u D bistabile. To nije preteško jer je uvjet da bismo iz JK bistabila dobili D bistabil upravo dovođenje komplementarnih vrijednosti na ulaze J i K. No komplementarne vrijednosti već imamo na izlazu prethodnog bistabila, pa je dovoljno samo spojiti izlaz bistabila sa J ulazom sljedećeg JK bistabila, a komplementirani izlaz sa K ulazom. 10.13. Zadatak Prikazati funkciju sklopa 74LS194. Opisati sklop ponašajnim VHDL-om. Sklop 74LS194 ima funkciju posmačnog registra, čije je sučelje prikazano na slici, a funkcija opisana tablicom: • • • S1 0 0 1 1
Posmak u lijevo ide od A prema D Posmak u desno ide od D prema A CLR je asinkron S0 0 1 0 1
Akcija Zadrži Posmak desno Posmak lijevo Učitaj
QA* QA RIN QB A
QB* QB QA QC B
library IEEE; use IEEE.std_logic_1164.all; ENTITY SHREG74LS194 IS PORT ( CLK, CLR, RIN, LIN : IN STD_LOGIC; S : IN STD_LOGIC_VECTOR(1 DOWNTO 0); D : IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END SHREG74LS194; ARCHITECTURE SHREG_ARCH OF SHREG74LS194 IS SIGNAL IQ : STD_LOGIC_VECTOR(3 DOWNTO 0);
QC* QC QB QD C
QD* QD QC LIN D
222
Zbirka riješenih zadataka
BEGIN PROCESS (CLK, CLR, IQ) BEGIN IF (CLR='1') THEN IQ <= "0000"; ELSIF (CLK'event AND CLK='1') THEN CASE S IS WHEN "00" => NULL; WHEN "01" => IQ <= RIN & IQ(3 DOWNTO 1); WHEN "10" => IQ <= IQ(2 DOWNTO 0) & LIN; WHEN "11" => IQ <= D; WHEN OTHERS => NULL; END CASE; END IF; Q <= IQ; END PROCESS; END SHREG_ARCH;
10.14. Zadatak Ponašajnim VHDL-om modelirati 8-bitni posmačni registar sa serijskim i paralelnim ulazima i paralelnim izlazom, čija je funkcija zadana tablično: S2 0 0 0 0 1 1 1 1
S1 0 0 1 1 0 0 1 1
S0 0 1 0 1 0 1 0 1
Akcija Zadrži Učitaj Posmak u desno, punjenje s LIN Posmak u lijevo, punjenje s RIN Ciklički posmak u desno Ciklički posmak u lijevo Aritmetički posmak u desno Aritmetički posmak u lijevo
Signal za brisanje CLR mora biti izveden asinkrono.
library IEEE; use IEEE.std_logic_1164.all; ENTITY SHREG IS PORT ( CLK, CLR, RIN, LIN : IN STD_LOGIC; S : IN STD_LOGIC_VECTOR(2 DOWNTO 0); D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END SHREG; ARCHITECTURE SHREG_ARCH OF SHREG IS SIGNAL IQ : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS (CLK, CLR, IQ) BEGIN IF (CLR='1') THEN IQ <= (OTHERS=>'0');
Registri.
223
ELSIF (CLK'event AND CLK='1') THEN CASE S IS WHEN "000" => NULL; WHEN "001" => IQ <= D; WHEN "010" => IQ <= LIN & IQ(7 DOWNTO 1); WHEN "011" => IQ <= IQ(6 DOWNTO 0) & RIN; WHEN "100" => IQ <= IQ(0) & IQ(7 DOWNTO 1); WHEN "101" => IQ <= IQ(6 DOWNTO 0) & IQ(7); WHEN "110" => IQ <= IQ(7) & IQ(7 DOWNTO 1); WHEN "111" => IQ <= IQ(6 DOWNTO 0) & '0'; WHEN OTHERS => NULL; END CASE; END IF; Q <= IQ; END PROCESS; END SHREG_ARCH;
10.15. Pismeni ispit, 09. 02. 2004, 1. zadatak Na raspolaganju su sljedeći elementi: trobitni posmačni registar (s upravljačkim ulazom S / R : 0 – rotacija, 1 – posmak; vidi sliku), D bistabil te multipleksor 2/1. Samo njihovom uporabom projektirati četverobitni posmačni registar istih mogućnosti.
Q2 Q1 Q0 Sin
S/R
Q3 Q2 Q1
Q2 Q1 Q0
0
→
Sin Sin
S/R CP
1
Q0
S/R 1
D Q CP
CP
→
CP
224
Zbirka riješenih zadataka
ZADACI ZA VJEŽBU 1.
Na raspolaganju su tri 4-bitna registra čija je funkcija opisana tablicom, a sučelje prikazano slikom. Uporabom samo tih registara i tri multipleksora 4/1 (gdje/ako treba) nacrtati shemu 12-bitnog registra koji: a) ima istu funkcionalnost kao i 4-bitni registar b) ima istu funkcionalnost kao i 4-bitni registar, samo što umjesto posmaka obavlja rotaciju. Za b) dio zadatka K-tablicama pronaći minimalni oblik funkcija Sin svakog registra. Ctrl1 Ctrl0 0 0 0 1 1 0 1 1
2.
Funkcija Čuva se trenutno pohranjen podatak. Posmak u desno, punjenje sa Sin. Posmak u lijevo, punjenje sa Sin. Paralelni upis.
Nacrtati potpuni dijagram prijelaza stanja 4-bitnog posmačnog registra udesno. Registar ima serijski ulaz, paralelne izlaze te na svaki padajući brid CP-a obavlja posmak udesno. Napisati ponašajni model ovog sklopa u VHDL-u.
Brojila.
11.
225
Brojila. 11.1. Zadatak Asinkrono binarno brojilo sastavljeno je od 3 dvostruka JK bistabila. Na ulaz brojila dovode se impulsi takta. Projektirati sklop temeljen na ovom brojilu koji će nakon svakih osam impulsa takta na izlazu dati jedinicu. Koje stanje treba dekodirati ako se želi raditi na maksimalnoj frekvenciji? Na raspolaganju su još samo NI sklopovi.
Asinkrono brojilo ostvareno JK bistabilima prikazano je na slici. Uočiti da se JK bistabili zapravo koriste kao T bistabili (J=K=1). 1 J CP
B0
Q
J
CP
B1
Q
CP Q
K
J
B2
Q
CP Q
K
K
Q
Kako imamo brojilo od 3 bistabila, ukupan broj stanja kroz koja bistabili prolaze jest upravo 8 (=23). Obzirom da moramo nakon svakih 8 impulsa na izlazu generirati 1, to upravo znači da možemo detektirati jedno od 8 stanja. Naime, ako npr. generiramo jedinicu kada se na izlazu brojila pojavi 6, do sljedećeg pojavljivanja broja 6 opet će proći osam otkucaja takta. Dodatni uvjet zadatka zahtjeva maksimalno brz odziv sklopa. Pogledajmo zato koliko nam vremena treba da bismo detektirali broj 6 na izlazu. Kada brojilo prelazi sa 5 na 6, mijenjaju se dva bita: B2 1
B1 0
B0 1
→
B2 1
B1 1
B0 0
Broj bitova koji se mijenja 2
U trenutku kada dođe impuls takta na ulaz bistabila B0, stanje tog bistabila se mijenja iz 1 u 0 nakon tdb. Zbog te promjene se nakon novih tdb mijenja stanje bistabila B1 iz 0 u 1 (tdb je vrijeme potrebno za promjenu stanja bistabila). Da bismo dekodirali stanje 6 (tj. 1102), odnosno minterm B2 B1B0 :
B2 B1B0 = B2 B1B0 = NI (NI (B2 , B1 , B0 ))
(napomena: B0 ne treba ostvarivati NI sklopom jer iz svakog bistabila imamo izlaz i njegov komplement) trebamo sklop: B2 B1 B0
&
&
226
Zbirka riješenih zadataka
Ovaj sklop će za dekodiranje stanja 6 trebati još 2 tdls (jedan za NI sklop koji množi B2 , B1 i B0 , i jedan za završni invertor; tdls je vrijeme potrebno da rezultat prođe na izlaz logičkog sklopa), pa će ukupno vrijeme potrebno za dekodiranje ovog stanja biti: t dek 6 = 2 ⋅ t db + 2 ⋅ t dls Pitanje je da li se to može obaviti i brže. Pogledajmo sva moguća stanja koja možemo dekodirati i koliko je to brzo moguće:
0
Broj bitova koji se mijenja 3
Vrijeme dekodiranja stanja t dek 0 = 3 ⋅ tdb + 2 ⋅ tdls
0
1
1
t dek1 = 1⋅ tdb + 2 ⋅ tdls
0
1
0
2
t dek 2 = 2 ⋅ tdb + 2 ⋅ t dls
→
0
1
1
1
t dek 3 = 1 ⋅ t db + 2 ⋅ t dls
1
→
1
0
0
3
t dek 4 = 3 ⋅ t db + 2 ⋅ t dls
0
0
→
1
0
1
1
t dek 5 = 1 ⋅ tdb + 2 ⋅ tdls
1
0
1
→
1
1
0
2
t dek 6 = 2 ⋅ t db + 2 ⋅ t dls
1
1
0
→
1
1
1
1
t dek 7 = 1 ⋅ t db + 2 ⋅ t dls
B2
B1
B0
B2
B1
B0
1
1
1
→
0
0
0
0
0
→
0
0
0
1
→
0
1
0
0
1
1
Vidimo da su najbolji kandidati za dekodiranje stanja 1, 3, 5 i 7. Odlučimo li se za dekodiranje stanja 7, konačni sklop će izgledati:
&
1
CP
B J 0Q CP Q K
B J 1Q CP Q K
B2 Q J CP Q K
&
m7
Brojila.
227
11.2. Zadatak Realizirati asinkrono brojilo sa 12 stanja uporabom dvostrukih JK bistabila. Pri tome se koristiti: a) Asinkronim ulazom za postavljanje, b) Asinkronim ulazom za brisanje. Odrediti potreban broj bistabila. Na raspolaganju su još i NI sklopovi. Ako je poznato da je tdls = 10 ns, tdb = 20 ns a točitanja = 20 ns, odrediti za svaki slučaj maksimalnu frekvenciju rada sklopa.
Ako brojilo mora proći kroz N stanja, mora vrijediti N ≤ 2 n , gdje je n broj bistabila. Ova jednadžba ima beskonačno mnogo rješenja, ali mi ćemo naravno uzeti najmanji mogući n koji je zadovoljava, pa je time rješenje jednoznačno. Za N=12 traženi n je 4, jer je upravo 12 ≤ 2 4 = 16 .
a) Uporaba asinkronog ulaza za postavljanje. Kada se aktivira asinkroni ulaz za postavljanje, brojilo prelazi u stanje "sve jedinice", tj. četiri-bitno brojilo prelazi u stanje 1111(2) = 15, što traje do sljedećeg impulsa CP. No kako je stanje 15 stanje koje pripada skupu stanja kroz koje brojilo prolazi, pogledajmo kroz koja još stanja brojilo mora prolaziti: postaviti u 15
15→0→1→2→3→4→5→6→7→8→9→10→11→12→13→14→15
12 stanja
Na prethodnom dijagramu vidimo kada treba djelovati na ulaze za postavljanje: kada brojilo dođe do broja 11 (što je zapravo N-1), brojilo je potrebno prebaciti u stanje 15. Stanje 11 ( B3 B2 B1 B0 ) može se potpuno dekodirati uporabom 4 ulazni NI sklopa. Sklop je sljedeći:
228
Zbirka riješenih zadataka D0
D1
D2
D3
&
J
Sd
Q
J
CP B0 Q K Cd
CP
Sd
Q
J
CP B1 Q K Cd
Sd
Q
CP B2 Q K Cd
J
Sd
Q
CP B3 Q K Cd
1
Vremenska analiza Da bismo utvrdili kojom maksimalnom frekvencijom smiju dolaziti impulsi takta, potrebno je razmotriti dva vremena: (i) vrijeme potrebno za slijednu promjenu stanja u ciklusu brojanja i (ii) vrijeme potrebno za povratak na početak ciklusa. Maksimalna frekvencija rada određena je većim od ta dva vremena. B2 B2
B1
B0
1 0 0 0 0 0 0 0 0 1 1 1
1 0 0 1 1 0 0 1 1 0 0 1
1 0 1 0 1 0 1 0 1 0 1 0
1 0 0 0 0 1 1 1 1 0 0 0
→ → → → → → → → → → → →
B2
B2
B1
B0
0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0
0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1
Broj bitova koji se mijenja 4 1 2 1 3 1 2 1 4 1 2 1
Najveći broj promjena bitova je 4, pa je najveće vrijeme potrebno za slijednu promjenu stanja u ciklusu brojanja (bez očitavanja) jednako 4 ⋅ t db = 4 ⋅ 20 = 80 ns. Ovaj dio mogao se je riješiti i bez izrade tablice, obzirom da su kod ovog tipa brojila stanja "sve nula" i "sve jedan" sastavni i susjedni dijelovi ciklusa brojanja, tako da će maksimalno vrijeme ovdje biti određeno kao kašnjenje jednog bistabila puta broj bistabila u brojilu. Za izračun vremena potrebnog za povratak na početak ciklusa promotrimo zadnje stanje u ciklusu:
Brojila.
229
B2 B2
B1
B0
1
1
0
0
→
B2
B2
B1
B0
1
0
1
1
Broj bitova koji se mijenja 1
Na signal takta brojilo iz 1010 prelazi u 1011 za što je potrebno 1 ⋅ t db . Zatim nakon vremena 1 ⋅ t dls reagira sklop za detekciju stanja 11 i generira signal za postavljanje na ulaze svih bistabila. Bistabili reagiraju paralelno i nakon još 1 ⋅ t db svi su u stanju 1 čime je završena promjena. Ukupno vrijeme potrebno za ovu operaciju tada je 1 ⋅ t db + 1 ⋅ t dls + 1 ⋅ t db = 2 ⋅ t db + 1 ⋅ t dls = 2 ⋅ 20 + 1 ⋅ 10 = 50 ns. Ovaj račun donekle je neprecizan jer novi impuls ne bi smio stići tako dugo dok je signal za postavljanje aktivan (pa bismo trebali sačekati još 1 ⋅ t dls nakon što se svi bistabili postave tako da logički NI sklop ukloni taj signal). Međutim, ovo vrijeme maskira se vremenom očitanja koje je puno duže, pa u ovom slučaju ne igra nikakvu ulogu. Veće od ova dva vremena je prvo, pa je maksimalna frekvencija rada sklopa određena recipročnom vrijednošću sume prvog vremena i vremena potrebnog za očitavanje stanja: 1 1 f max = = = 10MHz 80ns + 20ns 100ns b) Uporaba asinkronog ulaza za brisanje. Kada se aktivira asinkroni ulaz za brisanje, brojilo prelazi u stanje "sve nule", tj. četiribitno brojilo prelazi u stanje 0000(2) = 0, što traje do sljedećeg impulsa CP. No kako je stanje 0 stanje koje pripada skupu stanja kroz koje brojilo prolazi, pogledajmo kroz koja još stanja brojilo mora prolaziti: postaviti u 0
0→1→2→3→4→5→6→7→8→9→10→11→12→13→14→15→0
12 stanja
Na prethodnom dijagramu vidimo kada treba djelovati na ulaze za brisanje: kada brojilo dođe do broja 12 (što je zapravo N), brojilo je potrebno prebaciti u stanje 0. Stanje 12 može se potpuno dekodirati (4 ulazni I sklop). Međutim, u ovom slučaju (kada se koriste brojila koja broje unaprijed i ulaz za brisanje) dovoljno je na ulaze NI sklopa dovesti one izlaze brojila koji su u stanju koje dekodiramo postavljeni na 1. Dakle, kod dekodiranja stanja 12 = 1100(2) na ulaze NI sklopa dovodimo izlaze B3 i B2. Sklop je sljedeći:
230
Zbirka riješenih zadataka D0
D1
D2
D3
1 Sd Q J CP B0 Q K Cd
CP
Sd Q J CP B1 Q K Cd
Sd Q J CP B2 Q K Cd
Sd Q J CP B3 Q K Cd
&
Analiziramo li malo bolje ovaj sklop, uočiti ćemo da bi sklop mogao imati problema u radu. Naime, u trenutku kada sklop dođe u stanje 12, aktivira se ulaz za brisanje. No kako bistabili općenito nisu identični, moguće je da npr. bistabil B3 ode u nulu puno prije bistabila B2. No čim B3 ode u nulu, stanje više nije 12 (1100(2)), već 4 (0100(2)). Zbog toga sklop za detekciju stanja 12 prestaje biti aktivan te je moguće da bistabil B2 ostane i dalje postavljen, jer je signal za reset trajao prekratko. Kako bi se ovo izbjeglo, može se uporabom još dva NI sklopa ostvariti bistabil koji će se resetirati na signal za reset, a postaviti u neaktivno stanje signalom takta, kao što je prikazano na slici: D1
D0
D2
D3
1
J CP
Sd
Q
CP B0 K
Cd
J
Sd
Q
CP B1 Q
K
Cd
J
Sd
Q
CP B2 Q
K
Cd
J
Sd
Q
CP B3 Q
K
Cd
Q
&
&
R
S
Q
&
& Q
Kod ove izvedbe, čak i ako se npr. B3 resetira puno ranije od B2, što će za posljedicu imati prestanak djelovanja signala koji detektira stanje 12, signal za reset će i dalje djelovati jer je on pohranjen u bistabilu koji će se postaviti u neaktivno stanje (1) tek kada CP postane 1 (CP djeluje sa 1 jer ga naknadno dodatni NI sklop invertira).
Brojila.
231
Vremenska analiza (bez pomoćnog bistabila) Ukoliko je zadovoljen zahtjev o minimalnom broju bistabila, tada će i u ovom slučaju postojati prijelaz u kojem svi bistabili mijenjaju stanje. To znači da je najveće vrijeme potrebno za slijednu promjenu stanja u ciklusu brojanja (bez očitavanja) jednako 4 ⋅ t db = 4 ⋅ 20 = 80 ns (jer imamo 4 bistabila). Za izračun vremena potrebnog za povratak na početak ciklusa promotrimo zadnje stanje u ciklusu: B2 B2
B1
B0
1
1
1
0
→
B2
B2
B1
B0
1
1
0
0
Broj bitova koji se mijenja 3
Na signal takta brojilo iz 1011 prelazi u 1100 za što je potrebno 3 ⋅ t db . Zatim nakon vremena 1 ⋅ t dls reagira sklop za detekciju stanja 12 i generira signal za postavljanje na ulaze svih bistabila. Bistabili reagiraju paralelno i nakon još 1 ⋅ t db svi su u stanju 0 čime je završena promjena. Ukupno vrijeme potrebno za ovu operaciju tada je 3 ⋅ t db + 1 ⋅ t dls + 1 ⋅ t db = 4 ⋅ t db + 1 ⋅ t dls = 4 ⋅ 20 + 1 ⋅ 10 = 90 ns. Veće od ova dva vremena je drugo, pa je maksimalna frekvencija rada sklopa određena recipročnom vrijednošću sume drugog vremena i vremena potrebnog za očitavanje stanja: 1 1 f max = = = 9,09 MHz 90ns + 20ns 110ns Analiza vremena uz pomoćni bistabil Ova analiza nešto je složenija od prethodnog slučaja. Prvo vrijeme je isto ( 4 ⋅ t db = 4 ⋅ 20 = 80 ns). Dodajmo tome odmah i vrijeme očitavanja pa za prvi slučaj imamo 80 + 20 = 100 ns. Izračun vremena potrebnog za povratak na početak ciklusa je nešto kompliciranije. Promotrimo situaciju kada je brojilo u stanju 11. Na padajući brid CPa (od tog trenutka mjerimo vrijeme) brojilo nakon 3 ⋅ t db prelazi u stanje 12. Nakon 1 ⋅ t dls reagira sklop za detekciju stanja 12 i generira signal za reset pomoćnog bistabila. Za reset pomoćnog bistabila potrebno je 2 ⋅ t dls . Sada je izlaz pomoćnog bistabila 0 pa se paralelno resetiraju svi bistabili brojila. Za što je potrebno još 1 ⋅ t db . Označimo ovaj trenutak oznakon tx. Za vrijeme tx temeljem prethodnog razmatranja vrijedi: t x = 3 ⋅ tdb + 1⋅ t dls + 2 ⋅ t dls + 1 ⋅ t db = 4 ⋅ tdb + 3 ⋅ t dls . Tek sada CP smije otići u 1, čime će se na izlazu invertora nakon 1 ⋅ t dls pojaviti 0 koja će još nakon 1 ⋅ t dls postaviti pomoćni bistabil u 1 (ovime će se prestati djelovati na asinkrone ulaze za brisanje i brojilo će biti spremno za novi impuls CPa). Uočimo da je tx zapravo vrijeme od padajućeg brida CPa pa do pojave rastućeg brida CPa. Ako je signal CP simetričan, tada će minimalno trajanje periode CPa biti 2 ⋅ t x , ako je vrijeme očitavanja (koje također smije započeti tek nakon tx) manje od tx. U suprotnom (točitanja > tx) će perioda CPa biti TCP=tx+točitanja. U našem konkretnom slučaju t x = 4 ⋅ t db + 3 ⋅ t dls = 4 ⋅ 20 + 3 ⋅ 10 = 110 ns, što je puno
232
Zbirka riješenih zadataka
veće od točitanja. Zbog toga uzimamo TCP = 2 ⋅ t x = 2 ⋅ 110 = 220 ns, što je definitivno najveće dobiveno vrijeme koje zbog toga određuje maksimalnu frekvenciju sklopa: 1 1 f max = = = 4,55MHz TCP 220ns Treba međutim primjetiti da ovo ipak nije najveća moguća frekvencija rada sklopa. Naime, da bi CP postavio pomoćni bistabil u 1, njemu treba 1 ⋅ t dls (za prolaz kroz invertor) i 1 ⋅ t dls za postavljanje izlaza pomoćnog bistabila u 1, što je ukupno 2 ⋅ t dls . No tada bi (teoretski) CP mogao preći u 1 čak i u trenutku t x − 2 ⋅ t dls (jer će se bistabili brojila u trenutku tx resetirati, pa se pomoćni bistabil smije postaviti u 1 već u trenutku tx). Ovime bi se možda mogla povećati maksimalna frekvencija rada, međutim, ovakav proračun vrijedi uz pretpostavku da će se svi bistabili resetirati upravo nakon 1 ⋅ t db . No pomoćni bistabil smo i uveli jer nismo mogli garantirati da će ovo biti uvijek ispunjeno, pa na ovaj način nećemo raditi. Dodatak zadatku: smijemo li prilikom uporabe brojila koji broji unaprijed dekodirati samo jedinice u svrhu resetiranja brojila? Pogledajmo slučaj koji smo imali u b) dijelu zadatka, i minimizirajmo sklop za dekodiranje stanja 12. Brojilo u ovom slučaju broji: 0→1→...→9→10→11→(12→)0. Ovo znači da se stanja 13, 14 i 15 nikada neće pojaviti, pa ih možemo označiti kao dont-care minterme. Postupak minimizacije daje:
D3D2 D1D0
00
01
11
10
00
0
0
1
0
01
0
0
×
0
11
0
0
×
0
10
0
0
×
0
D3 D2
čime su upravo izbačeni oni članovi koji su bili nula. No to vrijedi upravo zato što dekodiramo najveći dozvoljeni broj. Ako bismo željeli dekodirati stanja u svrhu postavljanja brojila u stanje "sve jedan", ovakvo razmišljanje ne bi vrijedilo (npr. a) dio zadatka; dekodiramo 11, ali brojilo prelazi u 15 pa nije istina da su sva stanja veća od 11 dont-care stanja). Za vježbu: Nacrtati vremenske dijagrame za a) i b) dijelove zadatka.
Brojila.
233
11.3. Zadatak Realizirati sinkrono trobitno binarno brojilo uporabom dvostrukih JK bistabila.
D0 B0
J
CP K
D1 B1
Q
J
Q
CP K
D2 B2
Q
J
Q
CP K
Q Q
1 CP
&
11.4. Zadatak Realizirati sinkrono trobitno binarno brojilo koje broji u Grayevom kodu uporabom dvostrukih JK bistabila, i potrebnog broja osnovnih logičkih sklopova.
Napišimo tablicu promjene stanja u upišimo potrebne pobude bistabila: n Q1 0 0 1 1 1 1 0 0
Q2 0 0 0 0 1 1 1 1
Q0 0 1 1 0 0 1 1 0
n+1 Q1 0 1 1 1 1 0 0 0
Q2 0 0 0 1 1 1 1 0
Q0 1 1 0 0 1 1 0 0
J2 0 0 0 1 × × × ×
K2 × × × × 0 0 0 1
J1 0 1 × × × × 0 0
K1 × × 0 0 0 1 × ×
J0 1 × × 0 1 × × 0
K0 × 0 1 × × 0 1 ×
Očitavamo Ji i Ki kao funkcije od Q2, Q1 i Q0 u trenutku n i vršimo minimizaciju: J2 00
01
11
Q1Q0 10
×
1 ×
Q2 0 1
×
×
K2 Q2 0 1
00
01
11
Q1 Q0 10
× 1
×
×
×
234
Zbirka riješenih zadataka
J1 00 Q2 0
01
11
Q1 Q0 10
1
× ×
× × Q1 Q0 10
1 J0 Q2 0
00
01
11
1
× ×
× ×
1
K1 Q2 0 1
00
01
11
× ×
× ×
1
Q1Q0 10
K0 00
× ×
Q2 0
1
1
01
Q1Q0 10
11
× ×
1 1
J 2 = Q1Q0 K 2 = Q1Q0 J1 = Q2Q0 K1 = Q2Q0 J 0 = Q2Q1 + Q2Q1 K 0 = Q2Q1 + Q2Q1 D0
D1
D2
& &
≥1
J
B0
Q
&
CP &
≥1
K
J
B1
Q
&
CP Q
&
K
J
B2
Q
CP Q
&
K
Q
& CP
11.5. Zadatak Realizirati sinkrono trobitno brojilo uporabom dvostrukih JK bistabila, i potrebnog broja osnovnih logičkih sklopova, koje prolazi kroz stanja: 0→4→1→5→7→0. Osigurati siguran start brojila (tako da se nespecificirana stanja prebace u 0).
Napišimo tablicu prijelaza zajedno sa odgovarajućom pobudom bistabila:
Brojila.
235 n Q1 0 0 1 1 0 0 1 1
Q2 0 0 0 0 1 1 1 1
Q0 0 1 0 1 0 1 0 1
n+1 Q1 0 0 0 0 0 1 0 0
Q2 1 1 0 0 0 1 0 0
Q0 0 1 0 0 1 1 0 0
J2 1 1 0 0 × × × ×
K2 × × × × 1 0 1 1
J1 0 0 × × 0 1 × ×
K1 × × 1 1 × × 1 1
J0 0 × 0 × 1 × 0 ×
K0 × 0 × 1 × 0 × 1
Očitavamo Ji i Ki kao funkcije od Q2, Q1 i Q0 u trenutku n i vršimo minimizaciju: J2 Q2 0 1
00
01
1 ×
1 ×
11
×
×
01
11
Q1Q0 10
1
× ×
× × Q1 Q0 10
Q2 0 1 J0 00
01
11
1
× ×
× ×
Q2 0 1
J 2 = Q1 K 2 = Q1 + Q0 J 1 = Q2 Q0 K1 = 1 J 0 = Q2 Q1 K 0 = Q1 Shema sklopa:
K2 Q2 0
J1 00
Q1 Q0 10
1
00
01
11
Q1 Q0 10
× 1
×
× 1
× 1
K1 Q2 0 1
00
01
11
Q1 Q0 10
× ×
× ×
1 1
1 1
11
Q1 Q0 10
1 1
× ×
K0 00 Q2 0 1
× ×
01
236
Zbirka riješenih zadataka D0
&
J
B0 Q
D1
&
CP
J
B1
D2
Q
J
CP Q
K
1
CP ≥1
Q
K
B2 Q Q
K
CP
11.6. Zadatak
Realizirati sinkrono trobitno brojilo uporabom dvostrukih JK bistabila, i potrebnog broja osnovnih logičkih sklopova, koje prolazi kroz stanja: 0→4→1→5→7→0. Nije potrebno osigurati siguran start brojila. Provjeriti da li će tako realizirano brojilo raditi ispravno.
Napišimo tablicu prijelaza zajedno sa odgovarajućom pobudom bistabila: n n+1 Q2 Q1 Q0 Q2 Q1 Q0 J2 K2 J1 K1 J0 K0 0 0 0 1 0 0 1 0 0 × × × 0 0 1 1 0 1 1 0 0 × × × 0 1 0 × × × × × × × × × 0 1 1 × × × × × × × × × 1 0 0 0 0 1 1 0 1 × × × 1 0 1 1 1 1 0 1 0 × × × 1 1 0 × × × × × × × × × 1 1 1 0 0 0 1 1 1 × × × Napomena: prijelazi za stanja 2, 3 i 6 nisu zadani pa su u tablici označeni kao dont-care. Zbog toga je i odgovarajuća pobuda označena s dont-care. Očitavamo Ji i Ki kao funkcije od Q2, Q1 i Q0 u trenutku n i vršimo minimizaciju: J2 Q2 0 1
00
01
11
Q1Q0 10
1 ×
1 ×
× ×
× ×
K2 Q2 0 1
00
01
11
Q1Q0 10
× 1
×
× 1
× ×
Brojila.
237
J1 00
01
11
Q1Q0 10
1
× ×
× ×
Q2 0 1 J0 00
01
11
Q1Q0 10
1
× ×
× ×
× ×
Q2 0 1
K1 Q2 0 1
00
01
11
Q1Q0 10
× ×
× ×
× 1
× ×
11
Q1Q0 10
× 1
× ×
K0 00 Q2 0 1
01
× ×
Shema sklopa:
D0
J CP K
D1
Q
&
Q
1
J CP K
Q
Q
D2
1
≥1
J CP K
Q
Q
CP
Provjera rada za nespecificirana stanja: Ako je sklop u stanju 2: Q2 Q1Q0 = 010 . J2=1, K2=1, J1=0, K1=1, J0=0 i K0=1, zbog čega će nakon djelovanja impulsa takta brojilo promijeniti stanje u Q2 Q1Q0 = 100 , što je stanje 4. Ako je sklop u stanju 3: Q2Q1Q0 = 011 . J2=1, K2=1, J1=0, K1=1, J0=0 i K0=1, zbog čega će nakon djelovanja impulsa takta brojilo promijeniti stanje u Q2 Q1Q0 = 100 , što je stanje 4. Ako je sklop u stanju 6: Q2 Q1Q0 = 110 . J2=1, K2=1, J1=0, K1=1, J0=1 i K0=1, zbog čega će nakon djelovanja impulsa takta brojilo promijeniti stanje u Q2 Q1Q0 = 001 , što je stanje 1. Dakle, i ovako realiziran sklop će nakon prvog koraka sigurno ući u ciklus brojenja. Moguće loša stvar je činjenica da je ulazak u ciklus brojenja iz nespecificiranih stanja na različita mjesta.
238
Zbirka riješenih zadataka
11.7. Zadatak Projektirati trobitno asinkrono brojilo koje broji u ciklusu sa 7 stanja. Analizirati da li sklop radi ispravno i predložiti rješenje uočenog problema. Za realizaciju brojila koristiti T bistabile s ulazom za postavljanje stanja.
Ako koristimo ulaze za postavljanje, tada je stanje 111(2)≡7 sigurno dio ciklusa brojanja jer djelovanjem na ove ulaze sklop odlazi u to stanje. Kako nam treba još 6 stanja, kompletan ciklus brojanja biti će: 7 → 0 → 1 → 2 → 3 → 4 → 5 → (6) → 7 Moramo detektirati stanje 6 i djelovati na ulaze za postavljanje. 6=110(2), pa je shema sklopa: D0
D2
D1
&
1 ulaz
Sd Q B0 CP Q
T
1
Sd Q B1 CP Q
T
1
Sd Q B2 CP Q
T
Analizirajmo sada rad sklopa (sljedeća slika). Pretpostavimo da su u jednom trenutku svi bistabili postavljeni u 0, pa se brojilo nalazi u stanju 0. Nailaskom padajućeg brida ulaznog impulsa pokreće se promjena stanja bistabila B0. Međutim, ta se promjena događa tek nakon vremena kašnjenja bistabila (tdb), tako da je sve do isteka vremena kašnjenja bistabila brojilo još uvijek u stanju 0. Nakon vremena kašnjenja bistabila bistabil mijenja stanje i brojilo prelazi u stanje 1. Kako se je na izlazu B0 (ulazu B1) dogodio rastući brid, bistabil B1 ne reagira i došli smo u stabilno stanje. Nailaskom sljedećeg padajućeg brida na ulazu brojila opet se pokreće promjena stanja bistabila B0, koja se i dogodi nakon tdb, pa brojilo iz stanja 1 ulazi u stanje 0. No kako se je sada uslijed pada izlaza B0 sa 1 na 0 dogodio padajući brid, pokreće se promjena stanja bistabila B1, koja se dogodi nakon još jednog tdb. Time brojilo iz kratkotrajnog prijelaznog stanja 0 prelazi u stanje 2. Kako se je u tom trenutku na izlazu B1 dogodio rastući brid, nema nikakvog utjecaja na bistabil B2 pa je ovo stabilno stanje. Na sličan se način mogu analizirati i ostala stanja. Pogledajmo sada još kakav je odziv logičkog sklopa za detekciju stanja 6. Neka se brojilo nalazi u stanju 5. Nailaskom padajućeg brida na ulazu brojila pokreće se promjena stanja B0, koja se dogodi nakon tdb. Time brojilo dolazi u stanje 4. No budući da se je bistabil B0 prešao iz stanja 1 u stanje 0 (tj. dogodio se je padajući brid), reagira i bistabil B1 koji nakon još jednog tdb mijenja stanje u 1, čime brojilo iz prijelaznog stanja
Brojila.
239
4 prelazi u stanje 6. No sada će na stanje 6 reagirati sklop za detekciju stanja 6, i nakon vremena kašnjenja logičkog sklopa (tdls) na izlazu će se pojaviti logička 0 koja se dovodi na ulaze za postavljanje bistabila. Bistabili će svi reagirati nakon vremena kašnjenja bistabila, i ući u stanje 7. Ovo će rezultirati nestankom stanja 6 koje detektira logički sklop pa će se nakon vremena kašnjenja logičkog sklopa na njegovom izlazu ponovno pojaviti neaktivno stanje. Time je završen nasilan prekid ciklusa brojanja. Prema dosadašnjoj analizi čini se da će ovo brojilo raditi bez problema, kao što je to prikazano na vremenskom dijagramu. CP
Q0
Q1
Q2
R
0
1
0
2
3
20
4
5
4
6
7
0
6
1
0
2
3
4
Međutim, nastavimo analizu dalje. Brojilo je u stanju 7. Na sljedeći padajući brid signala na ulazu sklopa nakon 1 tdb prvi bistabil mijenja stanje, i dolazi u prijelazno stanje 110(2)≡6. No baš to stanje očitava i NI sklop, koji zatim generira impuls za postavljanje bistabila u stanje 7! Brojilo nikada više neće izaći iz stanja 7. Zapravo, kako zabranjeno stanje 6 traje točno tdb, a vrijeme potrebno za postavljanje bistabila također smo modelirali sa tdb, moguća je još gora situacija – bistabili se ponekad mogu postaviti, a ponekad mogu i ne reagirati na signal, pa dobijemo stohastičko ponašanje. Postoji više načina kako riješiti ovaj problem. U nastavku će biti opisana dva. Prvi način rješavanja problema je dovođenje dodatnog signala X na NI sklop, pri čemu je signal X definiran na sljedeći način: X je 0 od trenutka padajućeg brida (označimo to vrijeme sa tp) CP ulaznog signala minus vrijeme kašnjenja logičkog sklopa, dakle od tp-tdls, pa do trenutka dok ne završe sve prijelazne pojave unutar X brojila plus vrijeme kašnjenja logičkog sklopa: tp+3*tdb+tdls, dok je u svim ostalim trenucima 1. Evo kako ovo rješava problem. U trenutku kada započnu prijelazne pojave signal X postaje 0. Zbog toga u trenutku kada brojilo iz stanja 7 uđe u prijelazno stanje 6 sklop za Maskiranje prijelaznih pojava
t
t
240
Zbirka riješenih zadataka
detekciju stanja 6 neće reagirati jer ga signal X inhibira. Tek kada završe sve prijelazne pojave, X će postati 1 i tada će sklop NI moći reagirati. Međutim, kako smo sada u stabilnom stanju 0, sklop neće reagirati, i problem je riješen. Negativna posljedica ovakvog rješenja je kasna reakcija na stvarno stanje 6. Naime, bez ove modifikacije sklop je detektirao stanje 6 nakon 1*tdb+1*tdls i postavio signal za postavljanje svih bistabila. Sa modifikacijom sklop za detekciju stanja 6 reagirati će tek kada mu to X dozvoli, a to je nakon (3*tdb+1*tdls)+1*tdls, što će rezultirati značajno duljim ostankom u nedozvoljenom stanju 6. Alternativa prethodnom rješenju je uporaba ulaznog signala kao signala X (tako da nam ne treba još jedan generator novog signala), ali tada treba uzeti u obzir da ulazni signal mora biti takvog oblika da vrijeme tijekom kojega je u nuli bude dovoljno dugo da maskira sve prijelazne pojave kao što je to radio signal X opisan prethodno. 11.8. Zadatak Prikazati funkciju sklopa 74LS163. Opisati sklop ponašajnim VHDL-om. Sklop 74LS163 jest asinkrono 4-bitno brojilo, čije je sučelje prikazano na slici. • LD (load) i CLR (clear) djeluju sinkrono • Aktivan LD tijekom rastućeg brida signala takta učitava stanje brojila s ulaza ABCD. • Aktivan CLR tijekom rastućeg brida signala takta briše brojilo (tj. upisuje sve nule) • CLR nadjačava LD • LD nadjačava ENP i ENT • Ako je ENT=1 i ENP=1 brojilo se inkrementira • RCO = QD⋅QC⋅QB⋅QA⋅ENT, koristi se za kaskadiranje čipova library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; ENTITY C74LS163 IS PORT ( CLK, CLR, LD : IN STD_LOGIC; ENP, ENT : IN STD_LOGIC; D : IN UNSIGNED (3 DOWNTO 0); Q : OUT UNSIGNED (3 DOWNTO 0); RCO : OUT STD_LOGIC ); END C74LS163; ARCHITECTURE C74LS163_ARCH OF C74LS163 IS SIGNAL IQ : UNSIGNED (3 DOWNTO 0); BEGIN PROCESS (CLK, ENT, IQ) BEGIN IF (CLK'event AND CLK='1') THEN IF CLR='0' THEN IQ <= "0000"; ELSIF LD='0' THEN IQ <= D; ELSIF (ENT='1' AND ENP='1') THEN
Brojila.
241
IQ <= IQ +1; END IF; END IF ; IF (IQ=15) AND (ENT='1') THEN RCO <='1'; ELSE RCO <= '0'; END IF; Q <= IQ; END PROCESS; END C74LS163_ARCH;
11.9. Zadatak Uporabom SR bistabila projektirati 4-bitno prstenasto brojilo. Nacrtati potpuni dijagram prijelaza stanja. Da li je to brojilo sa sigurnim startom? Četiribitno prstenasto brojilo je brojilo koje broji u sljedećem ciklusu: … → 1000 → 0100 → 0010 → 0001 → 1000 → … Karakteristika brojila je ciklus brojanja kroz n stanja, pri čemu je za realizaciju potrošeno n bistabila. Trenutno stanje Sljedeće stanje Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 0 0 0 0 × × × × 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 × × × × 0 1 0 0 0 0 1 0 0 1 0 1 × × × × 0 1 1 0 × × × × 0 1 1 1 × × × × 1 0 0 0 0 1 0 0 1 0 0 1 × × × × 1 0 1 0 × × × × 1 0 1 1 × × × × 1 1 0 0 × × × × 1 1 0 1 × × × × 1 1 1 0 × × × × 1 1 1 1 × × × ×
S0 × 1 0 × 0 × × × 0 × × × × × × ×
R0 × 0 × × × × × × 1 × × × × × × ×
Minimizacijom slijedi: S 3 = Q2 , R3 = Q2
S 2 = Q1 , R2 = Q1 S1 = Q0 , R1 = Q0 S 0 = Q3 , R0 = Q3
Potrebna pobuda S1 R1 S2 R2 × × × × 0 × 0 × 0 × 0 1 × × × × 0 1 1 0 × × × × × × × × × × × × 1 0 0 × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
S3 × 0 1 × 0 × × × 0 × × × × × × ×
R3 × 1 0 × × × × × × × × × × × × ×
242
Zbirka riješenih zadataka
Sklop koji je definiran ovim izrazima prikazan je na sljedećoj slici.
Q
Q
Q
Q
Q
Q
Q
Q
Analizom projektiranog sklopa dolazi se do sljedećeg potpunog dijagrama prijelaza stanja:
Prilikom dekodiranja stanja Q3 je promatran kao bit najveće, a Q0 kao bit najmanje težine. Iz dijagrama je vidljivo da ovo nije sklop sa sigurnim startom.
11.10. Zadatak Uporabom SR bistabila projektirati 4-bitno Johnsonovo brojilo. Nacrtati potpuni dijagram prijelaza stanja. Da li je to brojilo sa sigurnim startom? Četiribitno Johnsonovo brojilo je brojilo koje broji u sljedećem ciklusu: … → 0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000 → … Karakteristika brojila je ciklus brojanja kroz 2⋅n stanja, pri čemu je za realizaciju potrošeno n bistabila.
Brojila.
Trenutno stanje Q0 Q1 Q2 Q3 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
243
Sljedeće stanje Q0 Q1 Q2 Q3 1 0 0 0 0 0 0 0 × × × × 0 0 0 1 × × × × × × × × × × × × 0 0 1 1 1 1 0 0 × × × × × × × × × × × × 1 1 1 0 × × × × 1 1 1 1 0 1 1 1
S0 1 0 × 0 × × × 0 × × × × × × × 0
R0 0 × × × × × × × 0 × × × 0 × 0 1
Potrebna pobuda S1 R1 S2 R2 0 × 0 × 0 × 0 × × × × × 0 × 0 1 × × × × × × × × × × × × 0 1 × 0 1 0 0 × × × × × × × × × × × × × × 0 1 0 × × × × × 0 × 0 × 0 × 0
S3 0 0 × × × × × × 0 × × × 0 × 1 ×
R3 × 1 × 0 × × × 0 × × × × × × 0 0
Minimizacijom slijedi: S 3 = Q2 , R3 = Q2
S 2 = Q1 , R2 = Q1 S1 = Q0 , R1 = Q0 S 0 = Q3 , R0 = Q3
Sklop koji je definiran ovim izrazima prikazan je na sljedećoj slici.
Q
Q
Q
Q
Q
Q
Q
Q
Zbog specifične realizacije, sklop je poznat i pod nazivom brojilo s ukrštenim prstenom. Analizom projektiranog sklopa dolazi se do sljedećeg potpunog dijagrama prijelaza stanja:
244
Zbirka riješenih zadataka
Prilikom dekodiranja stanja Q3 je promatran kao bit najveće, a Q0 kao bit najmanje težine. Iz dijagrama je vidljivo da ovo nije sklop sa sigurnim startom.
ZADACI ZA VJEŽBU 1.
Nacrtati 4 bitno asinkrono binarno brojilo unatrag izvedeno JK bistabilima. Ako je period signala koji se broji 100 ns, a kašnjenje bistabila 20 ns, nacrtati vremenski dijagram svih signala prilikom promjene stanja brojila iz 4 u 3.
2.
Na raspolaganju su 2 D i 1 JK bistabil. Projektirati njihovom uporabom (i minimalnim brojem osnovnih logičkih sklopova) sinkrono brojilo koje broji u ciklusu 0 → 5 → 2 → 7 → 4 → 0. Da li je dobiveni sklop sklop sa sigurnim startom? Nacrtati potpuni dijagram prijelaza stanja. Prilikom rješavanja koristiti JK bistabil za pamćenje bita najmanje težine.
3.
Na raspolaganju je 3 T bistabila i minimalni potreban broj osnovnih logičkih sklopova. Projektirati sinkroni sklop čiji je izlaz 2-bitni broj koji se mijenja u ciklusu: 0→1→2→3→2→1.
4.
Brojilo je prikazano slikom. Nacrtati potpuni dijagram prijelaza stanja brojila. Da li je to brojilo sa sigurnim startom? Ako je poznato: tdb = 20 ns, tsetup = 20 ns, tdls = 10 ns, kolika je maksimalna frekvencija signala CP? Da li ovaj sklop pripada sinkronim ili asinkronim sklopovima?
Q
Q
Q
Q
≥1
Q Q
Strojevi s konačnim brojem stanja.
12.
245
Strojevi s konačnim brojem stanja. 12.1. Zadatak Uporabom potrebnog broja D bistabila i osnovnih logičkih sklopova projektirati Mooreov automat koji određuje da li je suma pristiglih binarnih znamenki djeljiva s 3.
Kod Mooreovog automata prijelaz u novo stanje funkcija je trenutnog stanja i pristiglog znaka, a izlaz samo funkcija trenutnog stanja. Grafički je automat prikazan na slici. Dijagram treba čitati na sljedeći način: iz stanja S0, sa znamenkom 0 prelazi se u stanje S0, a sa znamenkom 1 u stanje S1. Dok je automat u stanju S0, izlaz je 1 (uglate zagrade!), i sl.
1
S0
S1
[1]
[0] 1
0
S2 1
[0]
0
0
Najprije treba odrediti koliko nam bistabila treba za realizaciju ovog automata. Budući da imamo 3 stanja, trebamo ( 3 ≤ 2 n ) 2 bistabila. Zatim treba odrediti na koji ćemo način kodirati stanja. Ovo se može obaviti na više načina. Jedan mogući odabir je: Stanje S0 S1 S2
Kodirano stanje Q1 Q0 1 1 0 1 1 0
Zatim napišemo tablicu prijelaza stanja. Sa I ćemo označiti znak koji je pristigao na ulaz automata.
Q1 0 0 0 0 1 1 1 1
Korak n Q0 0 0 1 1 0 0 1 1
I0 0 1 0 1 0 1 0 1
Korak n+1 Q1 Q0 × × × × 0 1 1 0 1 0 1 1 1 1 0 1
Izlaz Y × × 0 0 0 0 1 1
Pobuda D1 × × 0 1 1 1 1 0
D0 × × 1 0 0 1 1 1
Očitavamo i minimiziramo Y kao funkciju od Q1 i Q0 u koraku n, a D1 i D0 kao funkciju od Q1, Q0 i I u koraku n.
246
Zbirka riješenih zadataka Y Q1 0
00
01
×
×
1 D1 Q1 0 1
00
01
11
× 1
× 1
1
Q0I 10
11
Q0I 10
1
1
D0 Q1 0
1
00
01
×
× 1
1
11
Q0I 10
1
1 1
Nakon minimizacije dobije se: Y = Q1Q0 D1 = Q0 + Q1 ⋅ I + Q1 ⋅ I D0 = Q1 ⋅ I + Q0 ⋅ I
Napomena: Y se može očitati i kao funkciju od Q1, Q0 i I u koraku n; međutim, nakon minimizacije član I ne smije se pojaviti u izrazu za Y (ako se doista radi o Mooreovom automatu). Sklop tada izgleda: & & &
≥1
B0
D CP
&
Q &
Q I 1 CP
≥1
B D 1Q CP Q
Y
Strojevi s konačnim brojem stanja.
247
12.2. Zadatak Na slici je prikazan sklop koji očitava pritisak na jednostavnu tipkovnicu sastavljenu od triju tipaka. U ovisnosti o pritisnutoj tipki, izlaz sklopa određen je tablicom i traje tako dugo dok je tipka pritisnuta. Pretpostaviti da se ne može dogoditi situacija da više tipaka bude pritisnuto istovremeno, te da nakon svakog pritiska tipke slijedi period u kojem niti jedna tipka nije pritisnuta. Izlazi sklopa mijenjaju se u skladu sa signalom takta. I1 0 0 1 1
I0 0 1 0 1
Značenje Pritisnuta je tipka A Pritisnuta je tipka B Pritisnuta je tipka C Nije pritisnuta niti jedna tipka
I1
Čitač tipkovnice
I0
CP
Uporabom potrebnog broja JK bistabila konstruirati Mealyjev automat koji će u trajanju od jednog impulsa takta na izlazu generirati dva signala kod svakog pritiska tipke: kod tipke (O) i signal da je pritisnuta nova tipka (KA). Primjer željenog ponašanja prikazan je na slici.
t I1 I0
01
11
10
11
t O1O0
10
01
t KA t
Principijelna shema sklopa prikazana je na slici: I1 Čitač tipkovnice
I0
Kombinacijski dio
Izlazni registar
O1 O0 KA
Sekvencijski dio
CP
Mealyjev automat na temelju trenutnih ulaza i trenutnog stanja određuje novo stanje u koje će prijeći i izlaz koji će se generirati. Budući su izlazi funkcija stanja i ulaza, kako asinkrona promjena ulaza ne bi djelovala na izlaze, izlazi se pamte uporabom dodatnog registra. Signal takta vodi se na sekvencijski dio sklopa kao i na izlazni registar. Automat se obično prikazuje dijagramom prijelaza stanja. Automat koji ostvaruje prethodno zadanu funkciju prikazan je na sljedećoj slici. Početno stanje označeno je sa S0 (koje označava da niti jedna tipka još nije pritisnuta). Automat može mijenjati stanje
248
Zbirka riješenih zadataka
na svaki otkucaj signala takta. Ako u stanju S0 dođe sa ulaza kombinacija 11, automat ostaje u stanju S0, na izlaze O1O0 postavlja 00, a na KA također 0. Ako sa ulaza dođe kod 00, znači da je upravo pritisnuta tipka A, pa se sa sljedećim otkucajem signala takta prelazi u stanje S1 a na izlaze O1O0 postavlja 00 (kôd pritisnute tipke). Na izlaz KA postavlja se 1, što znači da je pritisnuta tipka. Ukoliko se tipka odmah otpusti, nailaskom sljedećeg impulsa takta automat se vraća u stanje S0 i poništava izlaze, dok u slučaju da tipka ostane pritisnuta duže vrijeme prelazi u stanje S2 pri čemu se također poništavaju izlazi i u tom stanju se čeka otpuštanje tipke. 11/00,0 00/00,1 11/00,0
01/01,1
S0
S1
10/10,1 00,01,10/00,0
11/00,0 S2
00,01,10/00,0
I1I0/O1O0,KA
Jednom kada smo opisali automat možemo krenuti u postupak realiziranja istoga. Koraci su sljedeći. 1. Odrediti potreban broj i vrstu bistabila. 2. Kodirati stanja. Kompleksnost kombinacijskog dijela ovisiti će o načinu na koji kodiramo stanja. 3. Napisati tablicu u kojoj se prikaže kako novo stanje i izlazi automata ovise o trenutnom stanju i trenutnim ulazima. 4. Proširiti tablicu ulazima bistabila koje koristimo i postaviti ih tako da se osigura ispravan prelazak stanja kako je prethodno navedeno u tablici. 5. Po potrebi minimizirati funkcije ulaza bistabila i izlaza automata. 6. Nacrtati sklop prema dobivenim funkcijama. Budući da imamo tri stanja, dovoljna su nam dva bistabila. Koristiti ćemo JK bistabile, a stanja ćemo kodirati na sljedeći način: S0≡00, S1≡01, S2≡10.
Prisjetimo se još i dijagrama promjene stanja JK bistabila:
Strojevi s konačnim brojem stanja.
249 10,11
0x
0
1
x0
01,11
J,K
Tablica promjene stanja automata i potrebni JK ulazi su:
Q1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Trenutno stanje i pobuda Q0 I1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1
I0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Sljedeće stanje Q1 Q0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 x x x x x x x x
Sljedeći izlazi O1 0 0 1 0 0 0 0 0 0 0 0 0 x x x x
O0 0 1 0 0 0 0 0 0 0 0 0 0 x x x x
KA 1 1 1 0 0 0 0 0 0 0 0 0 x x x x
Potrebna pobuda bistabila J1 K1 J0 K0 0 x 1 x 0 x 1 x 0 x 1 x 0 x 0 x 1 x x 1 1 x x 1 1 x x 1 0 x x 1 x 0 0 x x 0 0 x x 0 0 x x 1 0 x x x x x x x x x x x x x x x x x
Uočimo još jednom da su izlazi i potrebne pobude bistabila funkcije od četiri varijable: trenutnih stanja i ulaza. Nakon minimizacije funkcija i faktorizacije dobiva se: O1 = Q1Q0 I 1 I 0 O0 = Q1Q0 I 1 I 0
KA = Q1Q0 (I 1 + I 0 ) J 1 = Q0 (I 1 + I 0 )
K1 = I 1 I 0
J 0 = Q1 (I 1 + I 0 )
K0 = 1
Sklop koji ostvaruje zadani automat:
250
Zbirka riješenih zadataka ≥1
I1 Čitač tipkovnice
I0
&
1
1
&
D0
Q0
O1
D1
Q1
O0
&
D2
Q2
KA
CP
&
J
B1
Q
J
&
CP &
K
B0
Q
CP Q
1
K
Q
CP
12.3. Zadatak Na slici je prikazan sklop koji očitava pritisak na jednostavnu tipkovnicu sastavljenu od triju tipaka. U ovisnosti o pritisnutoj tipki, izlaz sklopa određen je tablicom i traje tako dugo dok je tipka pritisnuta. Pretpostaviti da se ne može dogoditi situacija da više tipaka bude pritisnuto istovremeno, te da nakon svakog pritiska tipke slijedi period u kojem niti jedna tipka nije pritisnuta. Izlazi sklopa mijenjaju se u skladu sa signalom takta. I1 0 0 1 1
I0 0 1 0 1
Značenje Pritisnuta je tipka A Pritisnuta je tipka B Pritisnuta je tipka C Nije pritisnuta niti jedna tipka
Čitač tipkovnice
I1 I0
Uporabom potrebnog broja JK bistabila konstruirati Mooreov automat koji će u trajanju od jednog impulsa takta na izlazu generirati dva signala kod svakog pritiska tipke: kod tipke (O) i signal da je pritisnuta nova tipka (KA). Komentirati razliku u odnosu na istovjetan Mealyjev automat iz prethodnog zadatka.
Principijelna shema sklopa prikazana je na sljedećoj slici. Kod Mooreovog automata novo stanje određuje se na temelju trenutnog stanja i pobude, dok su izlazi određeni isključivo trenutnim stanjem (a ne i trenutnim ulazima, kao kod Mealyjevog automata). Kao što ćemo vidjeti, ovo će rezultirati automatom s većim brojem stanja u odnosu na Mealyjev automat iste funkcije. Međutim, budući da je izlaz isključivo funkcija trenutnog stanja, ne treba nam izlazni registar za pamćenje izlaza, budući da asinkrona promjena ulaza nema utjecaja na izlaze.
Strojevi s konačnim brojem stanja.
251
I1 Čitač tipkovnice
I0
Kombinacijski dio
Sekvencijski dio
Kombinacijski dio
O1 O0 KA
CP
Mooreov automat koji obavlja zadanu funkciju prikazan je na slici:
11
S0
11
[00,0]
00
11 11
S1
S2
[00,1]
[01,1]
00,01,10
01
10
11
S3 [10,1]
00, 01, 10
00,01,10 S4 [00,0]
[O1O0,KA] I1I0
00,01,10 Početno stanje je S0. U tom stanju čeka se na pritisak bilo koje tipke. Ukoliko se pritisne tipka A (kôd 00) ide se u stanje S1 i postavlja odgovarajući izlaz, ukoliko se pritisne tipka B (kôd 01) ide se u stanje S2 i postavlja odgovarajući izlaz a ako se pritisne tipka C (kôd 10) ide se u stanje S3 i postavlja odgovarajući izlaz. Na sljedeći impuls takta odmah se prelazi ili u stanje S0 ili u stanje S4 gdje se čeka na otpuštanje tipke. Usporedimo li ovaj Mooreov automat sa prethodnim Mealyjevim, vidimo da je osnovna razlika u opisivanju ponašanja u trenutku kada se pritisne tipka. Mealyjev automat vezao je izlaze uz prijelaze, pa je sve tri tipke mogao opisati prijelazom u jedno novo stanje uz odgovarajući izlaz. Mooreov automat izlaz veže isključivo uz stanje, pa za svaku tipku mora generirati novo stanje sa odgovarajućim izlazom. Postupak realizacije sklopa isti je kao i kod Mealyjevog automata. Najprije određujemo potreban broj bistabila. Kako imamo 5 stanja, trebamo minimalno 3 bistabila. Zatim kodiramo stanja. Npr.:
252
Zbirka riješenih zadataka
S0≡000, S1≡001, S2≡010, S3≡011, S4≡100. Konačno generiramo tablicu prijelaza stanja uz odgovarajuću pobudu bistabila: Trenutno stanje i pobuda
Q2 Q1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Q0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
I1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
I0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Sljedeće stanje
Q2 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 x x x x x x x x x x x x
Q1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x x x x x x
Q0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x x x x x x
Izlazi za trenutno stanju
O1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 x x x x x x x x x x x x
O0 KA 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 x x x x x x x x x x x x x x x x x x x x x x x x
Potrebna pobuda bistabila
J2 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 x x x x x x x x x x x x x x x x
K2 x x x x x x x x x x x x x x x x 0 0 0 1 x x x x x x x x x x x x
J1 0 1 1 0 0 0 0 0 x x x x x x x x 0 0 0 0 x x x x x x x x x x x x
K1 x x x x x x x x 1 1 1 1 1 1 1 1 x x x x x x x x x x x x x x x x
J0 1 0 1 0 x x x x 0 0 0 0 x x x x 0 0 0 0 x x x x x x x x x x x x
K0 x x x x 1 1 1 1 x x x x 1 1 1 1 x x x x x x x x x x x x x x x x
Potrebna pobuda bistabila je funkcija od trenutnih stanja i ulaza. Izlazi su funkcija samo od trenutnog stanja. Za potrebe minimizacije mogu se i izlazi promatrati kao funkcija od trenutnih stanja i ulaza, međutim, nakon minimizacije trenutni ulazi ne smiju se pojavljivati u jednadžbama koje opisuju izlaze! Ukoliko se pojave, to znači da nije riječ o Mooreovom automatu (odnosno, budući da smo tablicu generirali iz Mooreovog automata, znači da je nastala pogreška ili kod popunjavanja tablice, ili kod minimizacije). Nakon minimizacije funkcija i faktorizacije dobiva se: O1 = Q1Q0 O0 = Q1Q0
Strojevi s konačnim brojem stanja.
253
KA = Q1 + Q0
J 2 = (Q1 + Q0 )(I1 + I 0 )
K 2 = I1I 0
J1 = Q2Q0 (I1 ⊕ I 0 )
K1 = 1 J 0 = Q2Q1I 0 K0 = 1 Sklop koji ostvaruje zadani automat:
I1
1
Čitač tipkovnice I0
&
O1
&
O0
≥1
KA
1
≥1 ≥1
& &
B J 2 Q CP Q K
=1
& 1
B J 1 Q CP Q K
& 1
B J 0 Q CP Q K
CP
12.4. Zadatak Na ulaz sekvencijskog sklopa sinkrono sa svakim signalom takta dolazi jedna binarna znamenka (šalje se binarni broj počevši od bita najveće težine). a) Konstruirati Mealyjev automat koji računa rezultat dijeljenja tog broja sa pet. Implementirati automat uporabom D bistabila. b) Konstruirati Mooreov automat koji računa rezultat dijeljenja tog broja sa pet.
Prisjetimo se načina na koji dijelimo binarne (odnosno u bilo kojoj bazi) brojeve sa nekim brojem X. Tražimo od početka onoliki broj znamenki koji će dati broj veći od broja X. Određujemo koliko puta je taj broj veći od broja X (i to dajemo kao prvu znamenku rezultata) a pamtimo ostatak dijeljenja Z. Zatim od broja X opet uzimamo (spuštamo) toliko znamenki (i dopisujemo ih broju Z) koliko je potrebno da Z opet postane veći od X kako bismo ga mogli podijeliti. Ako radimo sa binarnim brojevima, postupak je vrlo jednostavan jer rezultat parcijalnog dijeljenja može biti ili 0 ili 1. a) Mealyjev automat. Rješenje je prikazano na slici:
254
Zbirka riješenih zadataka
S1
0/0
S2 1/1 0/0
1/0 1/0 0/0
S0
1/1
1/1
S4
0/1 0/1 S3
Neka stanje Si odgovara ostatku i. Ako je npr. trenutni ostatak dijeljenja broja s 5 jednak 4, i spuštamo znamenku 0, dobivamo broj 1000(2)≡8, pa je rezultat dijeljenja 1, a novi ostatak 3 (pa se prelazi u stanje S3 uz izlaz 1), a ako spuštamo znamenku 1, dobivamo broj 1001(2)≡9, pa je rezultat dijeljenja 1, a novi ostatak 4 (te se prelazi u stanje S4 uz izlaz 1). Na isti način mogu se analizirati i svi ostali prijelazi. Za pohranjivanje 5 stanja trebamo 3 bistabila. Stanja ćemo kodirati na sljedeći način: S0≡111, S1≡001, S2≡010, S3≡011, S4≡100. Tablica prijelaza s pobudom bistabila: Trenutno stanje i pobuda
Sljedeće stanje
Izlaz u sljedećem stanju
Q2 Q1 Q0 I Q2 Q1 Q0 O 0 0 0 0 x x x x 0 0 0 1 x x x x 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 x x x x 1 0 1 1 x x x x 1 1 0 0 x x x x 1 1 0 1 x x x x 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 Nakon minimizacije funkcija i faktorizacije dobiva se: O = Q2Q1Q0 + Q0 (Q2 + I ) D2 = Q2Q0 I + Q0 (Q2 + I )
D1 = Q1Q0 + (Q2 ⊕ I )
D0 = I (Q1 ⊕ Q0 ) + I (Q1Q0 + Q2 ) + Q2Q1
Potrebna pobuda bistabila
D2 x x 0 0 1 1 0 0 0 1 x x x x 1 0
D1 x x 1 1 0 1 0 1 1 0 x x x x 1 0
D0 x x 0 1 0 1 1 0 1 0 x x x x 1 1
Strojevi s konačnim brojem stanja.
255
Kako se radi o Mealyjevom automatu, da bi se izbjegao utjecaj asinkrone promjene ulaza na izlaz može se dodati izlazni registar (vidi zadatak 1). Međutim, budući da je u tekstu zadatka eksplicitno rečeno da su ulazi sinkronizirani, ne može doći do asinkrone promjene ulaza pa nije potrebno niti dodavati izlazni registar. Shema sklopa: ≥1 &
I 1
&
≥1
O
&
=1
&
≥1
& &
≥1
D
B0
=1
Q
≥1
&
CP
D
B1
& Q
CP
Q
&
≥1
≥1
D
B2
Q
CP
Q
Q
CP
b) Mooreov automat. Mooreov automat koji rješava zadani problem u ovom će slučaju imati dvostruki broj stanja. Naime, pogledajmo Mealyjev automat iz a) dijela zadatka. Iz stanja S1 sa ulazom 1 idemo u S3 i na izlazu dajemo 0. Iz stanja S4 sa ulazom 0 idemo također u stanje S3 ali sada na izlazu dajemo 1. No budući da kod Mooreovog automata izlaz ovisi isključivo o trenutnom stanju, tada u S3 moramo dati ili 0 ili 1 što neće biti u skladu s potrebnim ponašanjem automata. Zbog toga stanje S3 cijepamo (u najgorem slučaju) u onoliko stanja koliko ima različitih izlaza koje treba dati. Slično razmatranje možemo provesti za sva ostala stanja. Automat koji ćemo tako dobiti jest: 0 S1
S2 1
[0]
0
1
[0]
0 1
S1' [1]
S2' 1
1
[1]
1
0
1 S0
S3 0
[0]
0 0
0
S0' [1]
[0]
S4
1
[0]
1
0 S3' [1]
0
S4' [1]
1
256
Zbirka riješenih zadataka
Ovaj automat ima 10 stanja što je dvostruko više od istovjetnog Mealyjevog automata. Za vježbu. Implementirati ovaj automat uporabom JK bistabila. 12.5. Zadatak Projektirati sklop koji će iz ulaznog jednobitnog niza sinkroniziranog sa taktom ukloniti šum. Pod pojmom šum smatra se svaka promjena razine koja traje samo jedan otkucaj takta (vidi sliku).
ULAZ t IZLAZ t
Projektirati ćemo Mooreov 1 0 automat koji obavlja ovo čišćenje. Zamislimo da je od 0 1 pamtivijeka ulaz bio u 1 S0 S1 S2 S3 konstantnoj nuli. Izlaz će tada [0] [0] [1] [1] 0 1 biti 0. Označimo ovo stanjem S0. Ako sada ulaz skoči u jedinicu, 0 budući da ne znamo da li time nastupa period jedinice ili je to samo kratkotrajni šum, prelazimo u novo stanje S1 u kojemu je izlaz također 0. Ako u ovom stanju ulaz padne na 0, vraćamo se u stanje S0 (i time smo izbacili smetnju). Međutim, ako je ulaz opet 1, to znači da je nastupio period jedinice i prelazimo u novo stanje S2 koje na izlazu daje 1, i u njemu ostajemo tako dugo dok je ulaz 1. Ako ulaz kratkotrajno padne na 0, prelazimo u stanje S3 (koje još uvijek na izlazu daje 1) iz kojega se vraćamo u S2 ako se ulaz odmah digne u 1. Međutim, ako ulaz ostane na nuli, nastupa period 0 i prelazimo u stanje S0 koje na izlazu ponovno daje 0. Automat je prikazan na slici: Imamo četiri stanja pa nam trebaju minimalno dva bistabila. Kodirajmo stanja Grayevim kodom: S0≡00, S1≡01, S2≡11, S3≡10. Iskoristiti ćemo T bistabile. Tablica prijelaza stanja zajedno sa pobudom bistabila: Trenutno stanje i ulaz Q1 Q0 ULAZ 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
Sljedeće stanje Q1 Q0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 1 1
Izlaz IZLAZ 0 0 0 0 1 1 1 1
Pobuda bistabila T1 T0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0
Strojevi s konačnim brojem stanja.
257
Nakon minimizacije dobije se: T1 = Q1Q0U + Q1Q0U T0 = UQ0 + U Q0 = U ⊕ Q0
IZLAZ = Q1 Shema sklopa: ULAZ IZLAZ
1
& &
≥1
T
B1
Q
=1
CP
T
B0
Q
CP Q
Q
CP
Uočiti da će na ovaj način konstruirani automat davati izlaz koji će za ulazom kasniti za jedan otkucaj signala takta. 12.6. Zadatak Objasniti odnos između strojeva s konačnim brojem stanja i registara.
Registri su poseban slučaj strojeva s konačnim brojem stanja. Naime, može se reći da su registri Mooreovi automati kod kojih je izlazna funkcija identitet. Drugim riječima, izlaz bistabila direktno je i izlaz sklopa - registra. Zbog toga se registri mogu projektirati istim metodama kojima se projektiraju i strojevi s konačnim brojem stanja.
STROJEVI S KONAČNIM BROJEM STANJA REGISTRI
12.7. Zadatak Objasniti odnos između strojeva s konačnim brojem stanja i brojila.
Brojila su poseban slučaj strojeva s konačnim brojem stanja. Naime, može se reći da su brojila Mooreovi automati kod kojih je izlazna funkcija identitet. Drugim riječima, izlaz bistabila direktno je i izlaz sklopa - brojila. Zbog toga se brojila mogu projektirati istim metodama kojima se projektiraju i strojevi s konačnim brojem stanja.
258
Zbirka riješenih zadataka
STROJEVI S KONAČNIM BROJEM STANJA BROJILA
12.8. Zadatak Uporabom T bistabila projektirati četiribitno binarno brojilo metodom projektiranja stroja s konačnim brojem stanja. Pokazati da rezultat odgovara poznatom načinu spajanja bistabila sa paralelnim prijenosom. Pokazati način izvođenja brojila sa serijskim prijenosom.
Prikažimo tablicu promjene stanja:
B3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Trenutno stanje B2 B1 B0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
B3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
Sljedeće stanje B2 B1 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0
B0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
T3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
Potrebna pobuda T2 T1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1
T0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Minimizacijom slijedi: T0 = 1 T1 = B0 T2 = B1 ⋅ B0 T3 = B2 ⋅ B1 ⋅ B0 Ovo su već poznati izrazi za paralelni prijenos kod binarnog brojila. Pokažimo sada da se odavde direktno dobiju i izrazi za serijski prijenos. Uvedimo sljedeće supstitucije: S 0 = T0 = 1
Strojevi s konačnim brojem stanja.
259
S1 = T1 = B0 S 2 = T2 = B1 ⋅ B0 = B1 ⋅ S1 S 3 = T3 = B2 ⋅ B1 ⋅ B0 = B2 ⋅ S 2 Dobiveni izrazi direktno odgovaraju izrazima za serijski prijenos. 12.9. Zadatak Konstruirati sinkrono 3-bitno brojilo koje broji u binarnom (M=0) ili Grayevom (M=1) kodu. Koristiti T bistabile. Nacrtati sklop (DZ).
Sinkrona brojila samo su specijalan slučaj Mooreovih automata (kod kojih je izlaz jednak stanju) pa ih možemo projektirati na isti način. Prikažimo najprije dijagram promjene stanja. 1 1 S1
1 0
[001]
0
S2
S3
[010]
[011]
0
0
1
S0 [000]
1
1 0
S7 [111]
0
S6
S5
0
[110]
0
[101]
1
1 Trenutno stanje i pobuda
Q2 Q1 Q0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 Funkcije nakon minimizacije:
M 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
S4 [100]
Sljedeće stanje
Q2 Q1 Q0 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1
Potrebna pobuda bistabila
T2 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0
T1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1
T0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0
260
Zbirka riješenih zadataka
T2 = Q2Q1Q0 M + Q2Q1Q0 M + Q1Q0 M T1 = Q2Q1Q0 + Q2Q1Q0 + Q0 M T0 = Q2Q1Q0 + Q2Q1Q0 + Q2Q1Q0 + Q2Q1Q0 + M
Za vježbu. Nacrtati shemu automata. 12.10. Zadatak Konstruirati sinkrono brojilo koje broji u ciklusu sa 10 stanja. Za prekid ciklusa koristiti sinkrone ulaze za resetiranje bistabila. Sklop ostvariti uporabom T bistabila.
Budući da koristimo sinkrone ulaze za reset, djelovanjem na te ulaze prelazimo u stanje 0000, pa je stanje 0 sigurno dio ciklusa brojanja. Cijeli ciklus tada se sastoji od stanja:
1
2
3
4
0
5 9
8
7
6
Potrebno je dakle detektirati stanje 1001(2)=9, i tada djelovati na sinkrone ulaze za reset. Uočiti da se ulaskom u stanje 9 sklop neće odmah resetirati jer sinkroni ulazi za reset djeluju tek kada im to signal takta dopusti (što znači nailaskom sljedećeg impulsa takta sklop neće otići u stanje 10 već će se resetirati). Kako su stanja 10, 11, 12, 13, 14 i 15 dontcare stanja (jer se ne koriste za brojanje), funkciju reseta možemo napisati kao: R (Q3 , Q2 , Q1 , Q0 ) = ∑ m(9) + ∑ d (10,11,12,13,14,15) = Q3Q0
Napišimo tablicu prijelaza stanja i pobude bistabila:
Strojevi s konačnim brojem stanja.
Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Trenutno stanje Q2 Q1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1
Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Q3 0 0 0 0 0 0 0 1 1 1 x x x x x x
261
Sljedeće stanje Q2 Q1 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 x x x x x x x x x x x x
Reset R 0 0 0 0 0 0 0 0 0 1 x x x x x x
Q0 1 0 1 0 1 0 1 0 1 0 x x x x x x
T3 0 0 0 0 0 0 0 1 0 0 x x x x x x
Pobuda bistabila T2 T1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 x x x x x x x x x x x x
T0 1 1 1 1 1 1 1 1 1 1 x x x x x x
Nakon minimizacije dobije se: T0 = 1 T1 = Q0 T2 = Q1Q0 T3 = Q2Q1Q0 R = Q3Q0 Shema sklopa: D0
1
T
B0
Q
CP Cd
D1
T
B1
Q
CP Q
Cd
D2
&
T
B2
Q
CP Q
Cd
D3
&
T
B3
Q
CP Q
Cd
Q
CP
Ima li ovo brojilo siguran start? Nacrtajmo sada potpun dijagram prijelaza stanja.
&
262
Zbirka riješenih zadataka
10
11 1
12
13
3
4
0
5 9
14
2
8
7
6
15
Ukoliko se brojilo nađe u stanju 10 = 1010(2), sklop za reset neće djelovati i brojilo će se resetirati tek kod sljedećeg stanja. 12.11. Zadatak Projektirati sinkrono trobitno brojilo koje broji u Grayevom kodu uporabom D bistabila. Na raspolaganju su još samo osnovni logički sklopovi. Ako je tdb=20 ns, tsetup=20 ns, tdls=10 ns, odrediti maksimalnu frekvenciju rada sklopa. Pretpostaviti da svi osnovni logički sklopovi kasne jednako.
Prikažimo tablicu promjene stanja i potrebnih pobuda bistabila: Trenutno stanje brojila Q2 Q1 Q0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0
Novo stanje brojila Q2 Q1 Q0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0
D2 0 0 0 1 1 1 1 0
Potrebna pobuda D1 D0 0 1 1 1 1 0 1 0 1 1 0 1 0 0 0 0
Slijedi: D2 00
01
11
Q1Q0 10
1
1 1
Q2 0 1
1
D1 00 Q2 0 1
01
11
1
1
Q1Q0 10
1 1
Strojevi s konačnim brojem stanja.
263
D0 Q2 0
00
01
1
1
1
D2 = Q2Q0 + Q1Q0
&
≥1
&
B0
D CP
11
Q1Q0 10
1
1
D1 = Q2Q0 + Q1Q0
& Q
≥1
&
B1
D CP
Q
D0 = Q2Q1 + Q2Q1
&
≥1
Q & Q
B D 2Q CP Q
CP Na svim ulazima nalazi se dvorazinska logika, pa je najduže vrijeme potrebno na prolaz, stabilizaciju i mirovanje signala jednako: T = t db + 2t dls + t setup = 20 + 2 ⋅ 10 + 20 = 60ns
f max =
1 1 = = 16.66 MHz T 60n
12.12. Zadatak
Stroj s konačnim brojem stanja zadan je slikom. O kojoj se vrsti automata radi? Projektirati sklop i nacrtati logičku shemu ako je bistabil B1 tipa D, a bistabil B0 tipa JK. Koristiti minimalni broj osnovnih logičkih sklopova (I, ILI, NE). Stanje Si kodirati binarnim zapisom dekadskog broja i.
1/0 0/1
S0
1/0
S1
0/0 0/1 1/1
S2
Prikažimo stanja automata, prijelaze i pobude bistabila tablično.
264
Zbirka riješenih zadataka Q1 0 0 0 0 1 1 1 1
S0 S1 S2
×
Q0 0 0 1 1 0 0 1 1
I0 0 1 0 1 0 1 0 1
Q1 1 0 0 0 0 0 × ×
Q0 0 1 1 0 0 1 × ×
O 1 0 1 0 0 1 × ×
D 1 0 0 0 0 0 × ×
J 0 1 × × 0 1 × ×
K × × 0 1 × × × ×
Minimizacijom se dobije: J0 00
01
11
1
× ×
× ×
Q2 0 1
Q1 Q0 10
1
00 Q1 0 1
K2 Q2 0
J
00
01
11
Q1 Q0 10
× 1
×
× 1
× 1
Q2 0
J=I
K=I
01
11
Q0 I 10
1 1
× ×
× × Q1 Q0 10
J0
1
00
01
11
1
× ×
× ×
Slijedi: D = Q1Q0 I
I
O = Q1 I + Q1 I
1
B0 Q J CP Q K
&
B1 Q D CP Q
&
≥1
O
&
O kojoj se vrsti automata radi? Iako oznake na prijelazima upućuju na Mealyjev automat, odgovor se ne smije donijeti dok se ne proanalizira minimalni izraz za izlaz automata. U ovom zadatku izlaz zadanog sklopa doista ovisi o ulazu, pa je riječ o Mealyjevom automatu.
Strojevi s konačnim brojem stanja.
265
12.13. Pismeni ispit, 25. 02. 2004, 5. zadatak Uporabom minimalnog broja T bistabila i minimalnog potrebnog broja osnovnih logičkih sklopova projektirati sinkroni sekvencijski sklop koji na izlazu generira sljedeći niz brojeva:
Pogledamo li zadani ciklus, na prvi pogled se čini kako je ponašanje sekvencijskog sklopa nedeterminističko; naime, nakon "stanja" 1 može doći "stanje" 2 ili pak "stanje" 3. Kada bismo o sekvencijskom sklopu razmišljali kao o brojilu, prethodna bi tvrdnja imala smisla. Naime, kod brojila stanje sklopa jednako je izlazu sklopa, pa bi to brojilo bilo doista nemoguće napraviti. Zbog toga to nećemo niti pokušati! Umjesto toga, projektiranju zadanog sklopa pristupit ćemo kao da projektiramo konačni automat! I to je razlog zašto su na početku stanja bila pod znacima navodnika – to zapravo nisu stanja! Ciklus kroz koji prolazi zadani sekvencijski sklop duljine je 8, što znači da će naš sklop imati 8 stanja – a svako će stanje na izlazu davati ciklusom određenu vrijednost. Rješenje je prikazano u nastavku. Sljedeće stanje
Trenutno stanje Q2 0 0 0 0 1 1 1 1
Q1 0 0 1 1 0 0 1 1
Q0 0 1 0 1 0 1 0 1
Q2 0 0 0 1 1 1 1 0
Q1 0 1 1 0 0 1 1 0
Q0 1 0 1 0 1 0 1 0
Pobuda potrebna za prijelaz u sljedeće stanje T2 T1 T0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 1
Izlazi u trenutnom stanju O1 O0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 0
Minimizacijom slijedi:
T2:
Q2Q1 00
Q0
01
11
1
1
10
0 1 Q1Q0
Q1
Q0 Q2
266
Zbirka riješenih zadataka
T1: Q0
Q2Q1 00
01
11
10
1
1
1
1
0 1
T0: Q0
Q2
Q1
Q0
1
Q2Q1 00
01
11
10
0
1
1
1
1
1
1
1
1
1
Q1
Q2Q1 00
Q0
01
11
0
1
1
1
1
1
01
11
1 Q2Q0
O1 = Q1 , O0 = Q2 Q0 + Q1Q0 + Q2 Q1Q0 T2 = Q1Q0 , T1 = Q0 , T0 = 1
10
1
0 1
Q0
Q2Q1Q0
Q2Q1 00
Q0
10
Q2
Q1
O0:
Q0
Q2
Q1
O1:
Q0
1
1 Q1
Q0
Q2 Q1Q0
Strojevi s konačnim brojem stanja.
267
&
1
T CP
Q
Q0 T CP
Q Q1 Q
Q
Q2
Q
T CP
Q
CP
&
&
≥1
O0
&
O1
12.14. Pismeni ispit, 25. 02. 2004, 6. zadatak Logički blok FPGA sastoji se od dvoulaznog LUT-a na čiji je izlaz spojen ulaz D bistabila te od multipleksora koji određuje da li se na izlaz logički blok propušta izlaz LUTa ili izlaz bistabila. Nacrtati logički blok. Uporabom minimalnog broja logičkih blokova projektirati i prikazati sekvencijski sklop koji ciklički na izlazu generira niz 0, 5, 4, 6. Veze između logičkih blokova mogu se crtati direktno (nije potrebno crtati programirljive sklopke).
Jedan logički blok prikazan je na slici. A B
? 0
? ? ?
f D CP
Q Q
1 S
CP
Projektiranje zadanog sklopa ovakvim elementima ne razlikuje se bitno od projektiranja sklopa uporabom bistabila. Dakle, prvi korak jest izrada tablice prijelaza stanja. Uvidom u zadatak zaključujemo da je duljina ciklusa jednaka 4, tj, trebamo 2 "bistabila". Trenutno stanje Q1 Q0 0 0 0 1 1 0 1 1
Sljedeće stanje Q1 Q0 0 1 1 0 1 1 0 0
Izlazi u trenutnom stanju O2 O1 O0 0 0 0 1 0 1 1 0 0 1 1 0
Potrebna pobuda D1 D0 0 1 1 0 1 1 0 0
268
Zbirka riješenih zadataka
Umjesto da sada vršimo minimizaciju, uočimo kako su sve funkcije ovise o samo dvije varijable: Q1 i Q0. LUT-ovi koje imamo na raspolaganju upravo omogućavaju direktnu realizaciju bilo svake funkcije od dvije varijable, pa vrijednosti u stupcima ispod pojedine funkcije možemo direktno upisati u LUT onog logičkog bloka koji će realizirati dotičnu funkciju. Kako ne bismo svaki puta crtali internu strukturu logičkog bloka, uvest ćemo pojednostavljen prikaz istog, gdje ćemo naznačiti samo programabilne dijelove. Isto tako, uočimo da se logički blok može ponašati kao kombinacijski element (ukoliko je s=0) gdje se izlaz iz LUT-a direktno propušta na izlaz logičkog bloka, ili pak kao sekvencijski element, odnosno bistabil (ukoliko je s=1), gdje se izlaz bistabila propušta na izlaz logičkog bloka, a LUT se koristi za definiranje funkcije koja određuje pobudu bistabila. U svrhu pojednostavljenja također nećemo crtati način prospajanja linija, već ćemo veze crtati direktno. Kako bismo rješili zadatak, trebamo dakle dva "bistabila" (logičke blokove sa s=1) i tri kombinacijska sklopa (logičke blokove sa s=0) koji definiraju izlaze. Rješenje je prikazano na slici.
A B
A B
0 1 1 0
1 0 1 0
A
Q1
B
s= 1
A
Q0
B
s= 1
A B
0 1 1 1
0 0 0 1
0 1 0 0
O2 s= 0
O1 s= 0
O0 s= 0
Što bi uradili u slučaju da na raspolaganju imamo logičke blokove s dvoulaznim LUTovima a trebamo ostvariti funkcije od više varijabli? Tada bi za svaku funkciju trebalo koristiti više logičkih blokova!
Strojevi s konačnim brojem stanja.
269
12.15. Pismeni ispit, 01. 10. 2003, 1. zadatak Uporabom minimalnog potrebnog broja D bistabila projektirati sekvencijski sklop koji na izlazu ciklički generira sljedeći niz brojeva: 0
1
1
2
3
5
Analizom ciklusa vidimo da je duljina ciklusa jednaka 6. Trebat ćemo, dakle, barem tri bistabila (pa će dva stanja ostati neiskorištena). Kako se u ciklusu postoji "stanje" koje se javlja više od jedanput, očito ne možemo projektirati brojilo, već radimo stroj s konačnim brojem stanja. Tablica prijelaza stanja prikazana je u nstavku: Trenutno stanje Q2 0 0 0 0 1 1 1 1
Q1 0 0 1 1 0 0 1 1
Izlaz u trenutnom stanju O2 O1 O0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 1 × × × × × ×
Sljedeće stanje
Q0 0 1 0 1 0 1 0 1
Q2 0 0 0 1 1 0 × ×
Q1 0 1 1 0 0 0 × ×
Q0 1 0 1 0 1 0 × ×
Pobuda potrebna za promjenu stanja D2 D1 D0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 × × × × × ×
Prikazani sklop prolazit će kroz stanja 0, 1, 2, 3, 4, 5 pa opet 0, itd. Očitajmo sada i potrebne funkcije:
D2:
Q2Q0
Q2Q1 00
Q0
01
0
Q1Q0
10
×
1
×
1
1
11
Q1
Q0 Q2
270
Zbirka riješenih zadataka
D1:
Q1Q0
Q2Q1 00
Q0
0 1
01
11
1
× ×
1
Q0
Q0
Q2Q1 0
00
01
11
10
1
1
×
1
×
1
Q2Q1 00
Q0
01
11
0
×
1
×
1
Q0 Q2Q0
Q2Q0
Q2Q1 00
Q0
10
Q2
Q1
O1:
Q0 Q2
Q1
O2:
Q0 Q2
Q1
Q2Q1Q0
D0:
10
01
0
Q1Q0
10
×
1
×
1
1
11
Q1
Q0 Q2
Strojevi s konačnim brojem stanja.
O0:
271 Q1Q0
Q2Q1 00
Q0
0 1
01
11
10
1
×
1
×
1
1 Q1Q0
Q1
Q2 Q0
Q2
Slijedi: D2 = Q1Q0 + Q2 Q0 D1 = B1 B0 + B2 B1 B0 D0 = B0
O2 = Q2 Q0 O1 = Q2 Q0 + Q1Q0 O0 = Q1Q0 + Q1Q0 + Q2
Da bismo bili sigurni da sklop radi ispravno, potrebno je provjeriti što će se dogoditi ako se po uključenju sklop zatekne u nekom od nekorištenih stanja (naime, ukoliko ta stanja sama opet tvore neki zatvoren ciklus, sklop nikada neće proraditi ispravno). Za slučaj B2B1B0=110 prethodni izrazi daju: D2=1, D1=1, D0=1. Dakle, iz ovog stanja sklop će otići u stanje 111, koje također ne pripada zadanom ciklusu. Za slučaj B2B1B0=111 prethodni izrazi daju: D2=1, D1=0, D0=0. Dakle, iz ovog stanja sklop će otići u stanje 100, a to stanje pripada zadanom ciklusu. Kako smo ovime provjerili sva nespecificirana stanja, sklop će očito raditi ispravno (uz najviše dva neispravna stanja na početku rada). 12.16. Pismeni ispit, 10. 10. 2003, 1. zadatak Uporabom D bistabila realizirati sinkrono trobitno brojilo koje broji ovisno o signalu d: ako je d=1, tada n←n+1 inače n←n-2. Sklop treba imati i sinkroni ulaz za brisanje c (koji bistabili nemaju). Koristiti minimalni broj osnovnih logičkih sklopova.
Prikažimo rad sklopa tablično.
272
Zbirka riješenih zadataka
Upravljački signali c d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 ×
Trenutno stanje Q2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 ×
Q1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 ×
Sljedeće stanje
Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ×
Q2 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0
Q1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0
Q0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0
Potrebna pobuda D2 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0
D1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0
D0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0
Pronađimo minimalne izraze za potrebnu pobudu: D2 :
cdQ2
c d Q2Q1
000 Q1Q0
c dQ2Q1
c=0 001 011
00
1
1
01
1
1
11
1
10
1 c d Q2Q1
010
1
110
Q0
Q0
Q1
1 Q2
100
c=1 101 111
d c Q2Q1Q0
c dQ2Q1Q0
Q1 Q2
d
Strojevi s konačnim brojem stanja.
273
c d Q1
D1:
cdQ2 000
Q1Q0
c=0 001 011
00
1
1
01
1
1
010
1
110
Q0
10
1
1 d
Q2
Q0
Q1
Q1
c=0 001 011
010
1
00 01
1
1
11
1
1
d
Q2
c dQ1Q0
c d Q0
cdQ2
000 Q1Q0
100
c=1 101 111
1
11
D0:
c Q1Q0
100
c=1 101 111
110
1 Q0
10
1 Q2
1 d
Q0
Q1
Q1 c dQ0
Q2
d
Dakle, slijedi: D2 = c d Q2 Q1 + c dQ2 Q1 + c d Q2 Q1 + c Q2 Q1Q0 + c dQ2 Q1Q0 D1 = c Q1Q0 + c d Q1 + c dQ1Q0 D0 = c dQ0 + c d Q0
12.17. Pismeni ispit, 09. 02. 2004, 7. zadatak Na raspolaganju su trobitni posmačni registar (vidi sliku), D bistabil te potreban broj osnovnih logičkih sklopova. Njihovom uporabom ostvariti sklop koji na izlazu Q2 posmačnog registra ciklički generira sljedeći niz: 0→0→0→0→1→1→1→1.
Q2 Q1 Q0 Sin
→
CP
Posmačni registar ima tri izlaza, dok zadani bistabil ima jedan. Sve skupa nam na raspolaganju stoji 4 izlaza, odnosno možemo ostvariti sklop s maksimalno 16 stanja.
274
Zbirka riješenih zadataka
Neka izlaz posmačnog registra Q2 bude u oznaci stanja bit najveće težine, a izlaz bistabila QB bit najmanje težine. Potrebno je dakle trobitni posmačni registar i dani bistabil povezati u četiribitni posmačni registar. Tada želimo da sklop prolazi kroz sljedeća stanja: Q2 0 0 0 0 1 1 1 1
Q1 × 0 0 0 0 1 1 1
Q0 × × 0 0 0 0 1 1
QB × × × 0 0 0 0 1
Sin za prijelaz u sljedeće stanje 0 0 0 1 1 1 1 0
pokrivena stanja 4, 5, 6, 7 2, 3 1 0 8 12 14 15
Iz stanja 0××× želimo u stanje 00××, pa u stanje 000×, pa u stanje 0000, pa zatim redom u stanja 1000, 1100, 1110, 1111, nakon čega zatvaramo ciklus i prelazimo u stanje 0111 (koje je već pokriveno maskom 0×××). Ako na ovaj način mijenjamo stanja, tada ćemo na izlazu Q2 dobiti traženi niz. No otkud baš ovakvi zahtjevi? Najjednostavnije govoreći, želimo na Q2 četiri puta zaredom dobiti 0, pa četiri puta zaredom dobiti 1. Znači da prvo stavimo 0 na Q2 (bez obzira na ostale izlaze; zato tri '×'), pa zatim iz tog stanja još jednom stavimo 0 (pa ostanu dva '×') itd. Sada treba uočiti da su maske nekih stanja općenitije od drugih. Npr. prvi redak tablice definira masku 0××× (čime su pokrivena stanja 0,1,2,3,4,5,6 i 7), dok drugi redak definira 00×× (čime pokriva stanja 0,1,2 i 3) zbog čega ta stanja treba izuzeti iz prvog retka! Zapravo treba krenuti od najspecifičnijeg stanja prema općenitijim. Jedino što u ovom sklopu treba odrediti jest što dovoditi na ulaz Sin kako bi sklop prolazio kroz željena stanja. No to je već određeno prethodnom tablicom: imamo Sin u ovisnosti o pokrivenim stanjima: S in (Q2 , Q1 , Q0 , QB ) = ∑ m(0,8,12,14)
Minimizacijom sljedi: S in = Q2 Q1QB + Q1Q0 QB
& 1 &
1
Q2 Q1 Q0
≥1
→
Sin
S/R 1
CP
D
Q
CP Q CP
Strojevi s konačnim brojem stanja.
275
Malo pažljivijom analizom možemo uočiti da sklop nikada ne prolazi kroz stanja 9, 10, 11 ili 13. Zbog toga ta stanja možemo proglasiti don't care stanjima za funkciju Sin, čime se može dobiti još minimalniji izraz: S in = Q2 Q B + Q1Q0 QB
12.18. Pismeni ispit, 25. 02. 2004, 4. zadatak U VHDL-u napisati ponašajni model sekvencijskog sklopa prikazanog na slici. Sklop na svaki padajući impuls takta obavlja funkciju dekodiranja podatka iz 11-bitne Hammingove kodne riječi koju dobiva na ulazu. Prilikom kodiranja podatka korišten je neparni paritet. Ukoliko na ulaz dođe kodna riječ s pogreškom, pretpostaviti da se radi o pogreški u jednom bitu, tako da se na izlazu mora pojaviti ispravljen podatak. Prikazati korišteni raspored zaštitnih bitova u kodnoj riječi. Kodna riječ
Hammingov dekoder
Podatak
CP
Prilikom rješavanja zadatka pretpostavit će se sljedeći raspored podatkovnih i zaštitnih bitova: D(0) C
D(1) C
D(2) P
D(3) C
D(4) P
D(5) P
D(6) P
D(7) C
D(8) P
D(9) P
D(10) P
C su zaštitni, a P podatkovni bitovi. D(0 to 10) je kodna riječ koja dolazi na ulaz sklopa. library IEEE; use IEEE.std_logic_1164.all; ENTITY hamming IS PORT ( D : IN BIT_VECTOR(0 to 10); CP: IN STD_LOGIC; O : OUT BIT_VECTOR(0 to 6)); END hamming; ARCHITECTURE hamming_ARCH OF hamming IS BEGIN PROCESS (D, CP) VARIABLE sindrom1 : BIT_VECTOR(0 to 3); VARIABLE sindrom2 : BIT_VECTOR(0 to 3); VARIABLE sindrom : BIT_VECTOR(0 to 3); VARIABLE izlaz : BIT_VECTOR(0 to 10); VARIABLE ispravka: BIT_VECTOR(0 to 11); BEGIN
------
očitani sindrom izračunati sindrom mjesto pogreške ispravljeni izlaz riječ pogreške
276
Zbirka riješenih zadataka
IF cp'event AND cp='0' THEN -- Ocitavanje sindroma sindrom1(0) := D(0); sindrom1(1) := D(1); sindrom1(2) := D(3); sindrom1(3) := D(7); -- Izracun sindroma sindrom2(0) := NOT(D(2) XOR D(4) XOR D(6) XOR D(8) XOR D(10)); sindrom2(1) := NOT(D(2) XOR D(5) XOR D(6) XOR D(9) XOR D(10)); sindrom2(2) := NOT(D(4) XOR D(5) XOR D(6)); sindrom2(3) := NOT(D(8) XOR D(9) XOR D(10)); -- Izracun pogresnog bita sindrom(0) := sindrom1(0) XOR sindrom2(0); sindrom(1) := sindrom1(1) XOR sindrom2(1); sindrom(2) := sindrom1(2) XOR sindrom2(2); sindrom(3) := sindrom1(3) XOR sindrom2(3); -- Ispravljanje pogresnog bita ispravka := "100000000000"; IF( sindrom(0) = '1' ) THEN ispravka := ispravka SRL 1; END IF; IF( sindrom(1) = '1' ) THEN ispravka := ispravka SRL 2; END IF; IF( sindrom(2) = '1' ) THEN ispravka := ispravka SRL 4; END IF; IF( sindrom(3) = '1' ) THEN ispravka := ispravka SRL 8; END IF; -- Ispravljanje pogresnog bita izlaz := D XOR ispravka(1 to 11); -- Stavljanje ispravljene podatkovne rijeci na izlaz sklopa O <= izlaz(2) & izlaz(4 to 6) & izlaz(8 to 10); END IF; END PROCESS; END hamming_ARCH;
Na svaki rastući brid signala vremenskog vođenja događa se sljedeće: • • • • • •
Očitava se sindrom iz primljene riječi. Računa se sindrom za podatke iz primljene riječi. Računa se mjesto na kojem je došlo do pogreške. Generira se riječ pogreške: to je riječ koja ima jedinicu na onom mjestu na kojem je djelovala pogreška. Dobije se tako da se '1' posmakne udesno za onoliko mjesta koliko je to zapisano u binarnom obliku u varijabli sindrom. Računa se ispravljena kodna riječ (preko XOR logičke operacije s riječi pogreške). Na izlas se preslikavaju samo podatkovni bitovi ispravljene kodne riječi.
Da bi se što jasnije ilustrirala ideja rješenja, podatkovni ulaz i izlaz modelirani su BIT_VECTOR tipom podatka, jer su nad tim tipom definirane i operacije logičkog
Strojevi s konačnim brojem stanja.
277
posmaka (sll, srl), aritmetičkog posmaka (sla, sra) itd. No kako uobičajeno koristimo STD_LOGIC_VECTOR tip, u nastavku je prikazano odgovarajuće rješenje, pri čemu su korišteni operatori posmaka direktno implementirani. library IEEE; use IEEE.std_logic_1164.all; ENTITY hamming IS PORT ( D : IN STD_LOGIC_VECTOR(0 to 10); CP: IN STD_LOGIC; O : OUT STD_LOGIC_VECTOR(0 to 6)); END hamming; ARCHITECTURE hamming_ARCH OF hamming IS BEGIN PROCESS (D, CP) VARIABLE sindrom1 : STD_LOGIC_VECTOR(0 to 3); VARIABLE sindrom2 : STD_LOGIC_VECTOR(0 to 3); VARIABLE sindrom : STD_LOGIC_VECTOR(0 to 3); VARIABLE izlaz : STD_LOGIC_VECTOR(0 to 10); VARIABLE ispravka: STD_LOGIC_VECTOR(0 to 11); BEGIN IF cp'event AND cp='1' THEN -- Ocitavanje sindroma sindrom1(0) := D(0); sindrom1(1) := D(1); sindrom1(2) := D(3); sindrom1(3) := D(7); -- Izracun sindroma sindrom2(0) := NOT(D(2) XOR D(4) XOR D(6) XOR D(8) XOR D(10)); sindrom2(1) := NOT(D(2) XOR D(5) XOR D(6) XOR D(9) XOR D(10)); sindrom2(2) := NOT(D(4) XOR D(5) XOR D(6)); sindrom2(3) := NOT(D(8) XOR D(9) XOR D(10)); -- Izracun pogresnog bita sindrom(0) := sindrom1(0) XOR sindrom2(0); sindrom(1) := sindrom1(1) XOR sindrom2(1); sindrom(2) := sindrom1(2) XOR sindrom2(2); sindrom(3) := sindrom1(3) XOR sindrom2(3); -- Ispravljanje pogresnog bita ispravka := "100000000000"; IF( sindrom(0) = '1' ) THEN ispravka := "0" & ispravka(0 to 10); END IF; IF( sindrom(1) = '1' ) THEN ispravka := "00" & ispravka(0 to 9); END IF; IF( sindrom(2) = '1' ) THEN ispravka := "0000" & ispravka(0 to 7); END IF; IF( sindrom(3) = '1' ) THEN ispravka := "00000000" & ispravka(0 to 3); END IF; -- Ispravljanje pogresnog bita izlaz := D XOR ispravka(1 to 11); O <= izlaz(2) & izlaz(4 to 6) & izlaz(8 to 10); END IF; END PROCESS; END hamming_ARCH;
278
Zbirka riješenih zadataka
12.19. Zadatak Prikazati osnovnu strukturu VHDL modela kojim se opisuje Mooreov stroj s konačnim brojem stanja.
ulazi
U VHDL-u ne postoji jedinstven način opisivanja strojeva s konačnim brojem stanja. Međutim, pogledamo li opću strukturu Mooreovog stroja s konačnim brojem stanja (slika ispod), dolazi se do jednog mogućeg rješenja koje će se koristiti u nastavku ove zbirke.
Kombinacijski dio
Kombinacijski dio
izlazi
Sekvencijski dio
CP
Na slici raspoznajemo tri osnovna dijela Mooreovog stroja s konačnim brojem stanja: 1. Sekvencijski dio – pamti trenutno stanje, te kada mu signal takta dozvoli, prelazi u novo stanje. 2. Kombinacijski dio (1) – na temelju trenutnih ulaza i trenutnog stanja računa u koje će sljedeće stanje sekvencijski dio prijeći. 3. Kombinacijski dio (2) – na temelju trenutnog stanja računa izlaze sklopa. Ova struktura prirodno se preslikava u VHDL model čija se arhitektura sastoji od tri bloka PROCESS, s odgovarajućim listama osjetljivosti. Pogledajmo npr. kako bi izgledao model stroja s konačnim brojem stanja koji ima (N+1) sinkroni ulaz, jedan asinkroni ulaz (reset) te (M+1) izlaz. Stroj pri radu prolazi kroz toliko stanja da se njihovo kodiranje koristi (K+1) bit. Stanja su redom označena S0, S1, S2, ... i kodirana su binarnim kodom. library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY automatMoore IS PORT ( ulazi: IN std_logic_vector(N DOWNTO 0); reset: IN std_logic; izlazi: OUT std_logic_vector(M DOWNTO 0); clock: IN std_logic ); END automatMoore;
Strojevi s konačnim brojem stanja.
279
ARCHITECTURE Behavioral OF automatMoore IS SIGNAL state_present, state_next: std_logic_vector(K DOWNTO 0); CONSTANT S0: std_logic_vector(K DOWNTO 0) := "0...000"; CONSTANT S1: std_logic_vector(K DOWNTO 0) := "0...001"; -- ... BEGIN -- Blok koji modelira Kombinacijski dio (1); na temelju ulaza -- i trenutnog stanja računa sljedeće stanje. PROCESS(ulazi, state_present) BEGIN -- na temelju signala iz liste osjetljivosti odrediti -- u koje bi sljedeće stanje sklop trebao prijeći. -- Npr. za bezuvjetan prijelaz u stanje S0: state_next <= S0; END PROCESS; -- Blok koji modelira Kombinacijski dio (2); na temelju -- trenutnog stanja računa izlaz sklopa. PROCESS(state_present) BEGIN -- na temelju trenutnog stanja odrediti izlaz sklopa: CASE state_present IS WHEN S0 => izlazi <= ...; WHEN S1 => izlazi <= ...; -- ... WHEN OTHERS => izlaz <= ...; END CASE; END PROCESS; -- Blok koji modelira Sekvencijski dio; na temelju signala -- clock i asinkronih ulaza mijenja stanje PROCESS( clock, reset ) BEGIN -- Provjera asinkronih ulaza IF reset = '1' THEN state_present <= S0; -- Inače slijedi sinkrono djelovanje ELSIF falling_edge(clock) THEN state_present <= state_next; END IF; END PROCESS; END BEHAVIORAL;
Prilikom pisanja ovog modela pojedina stanja definirana su kao konstante kako bi kod bio čitljiviji. Naime, uvođenjem konstanti omogućeno je u kodu pisati nazive stanja umjesto njihovih binarnih kodova, čime se ujedno i smanjuje vjerojatnost pogreške prilikom pisanja modela. Osim ovog načina (gdje sami određujemo s koliko će bitova biti kodirana stanja, i definiramo kod za svako stanje) VHDL nam omogućuje alternativnu sintaksu. Npr. ukoliko imamo stroj s četiri stanja, možemo pisati: SIGNAL state_present, state_next: std_logic_vector(1 DOWNTO 0); CONSTANT S0: std_logic_vector(1 DOWNTO 0) := "00"; CONSTANT S1: std_logic_vector(1 DOWNTO 0) := "01"; CONSTANT S2: std_logic_vector(1 DOWNTO 0) := "10";
280
Zbirka riješenih zadataka
CONSTANT S3: std_logic_vector(1 DOWNTO 0) := "11";
ili pak: TYPE stateType IS (S0, S1, S2, S3); SIGNAL state_present, state_next: stateType;
Ovaj posljednji način definira novi tip podatka pod nazivom stateType kao enumeraciju od četiri elementa, i zatim kaže da su signali state_present i state_next upravo tog novodefiniranog tipa. Ako stroj s konačnim brojem stanja opišemo na ovaj način, tada ni u kojem trenutku zapravo nismo naveli koliko će bitova biti korišteno za kodiranje stanja, i na koji će način pojedino stanje biti kodirano, pa sintetizatoru sklopovlja ostavljamo na volju da stanja kodira tako da utroši minimalni broj sklopovlja i provede dodatne optimizacije. Dakako, VHDL nam omogućava i eksplicitno definiranje kako će pojedino stanje biti kodirano, no budući da to zahtjeva uvođenje dodatnih elemenata VHDL-a (a pristup se zapravo svodi na prethodno opisani definiranjem konstanti), ovdje to nećemo obrađivati. Obratite također pažnju na liste osjetljivosti pojedinih blokova PROCESS. Prvi blok na temelju ulaza i trenutnog stanja računa sljedeće stanje. Zbog toga je njegova lista osjetljivosti (ulazi, state_present). Sljedeći blok PROCESS na temelju trenutnog stanja određuje izlaz sklopa. Time je definirana njegova lista osjetljivosti kao (state_present). Konačno, posljednji blok PROCESS zadužen je za promjenu stanja pod utjecajem clock-a ili asinkronog ulaza reset, pa je lista osjetljivosti definirana kao ( clock, reset ). 12.20. Zadatak Prikazati osnovnu strukturu VHDL modela kojim se opisuje Mealyjev stroj s konačnim brojem stanja.
Kao što za modeliranje Mooreovog stroja s konačnim brojem stanja u VHDL-u nema jedinstvenog načina, isto vrijedi i za modeliranje Mealyjevog stroja s konačnim brojem stanja. Osnovna struktura ovog stroja prikazana je na sljedećoj slici.
ulazi
Strojevi s konačnim brojem stanja.
281
Kombinacijski dio
Sekvencijski dio
CP izlazi
Kombinacijski dio
ulazi
Veliki je problem pri tome činjenica da izlaze generira čista kombinacijska logika na temelju trenutnog stanja i trenutnih izlaza. Naime, ukoliko se ulazi mijenjaju asinkrono, tada će se i izlazi mijenjati asinkrono, što svakako nije željeno ponašanje. Zbog toga se prilikom modeliranja Mealyjevog stroja s konačnim brojem stanja uobičajeno promatra sljedeća struktura sklopa:
Kombinacijski dio
Sekvencijski dio
CP Registar
izlazi
Kombinacijski dio
Modifikacija sklopa sastoji se u dodavanju registra na izlaz kombinacijskog dijela koji određuje izlaze sklopa. Na ovaj način istovremeno kada sklop mijenja stanje, izlaz koji je određen tim prijelazom pohranjuje se u izlazni registar. Eventualne asinkrone promjene ulaza sada više nemaju utjecaja na izlaze sklopa budući da te promjene dolaze samo do ulaza registra, ali ne i dalje. Prilikom opisivanja ovog sklopa registar i sekvencijski dio uobičajeno se stapaju zajedno (u jedan blok PROCESS), baš kao i kombinacijski dijelovi (u jedan blok PROCESS). Rezultat je arhitektura sklopa koja se sastoji od dva bloka PROCESS:
282
Zbirka riješenih zadataka 1. kombinacijski dijelovi – utvrđuju sljedeće stanje i sljedeće izlaze stroja na temelju trenutnog stanja i trenutnih ulaza, te 2. sekvencijski dio + registar – pamte trenutno stanje i izlaze te ih mijenjaju tek kad im to signal takta dozvoli.
Struktura VHDL modela Mealyjevog stroja s konačnim brojem stanja prikazana je u nastavku. library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY automatMealy IS PORT ( ulazi: IN std_logic_vector(N DOWNTO 0); reset: IN std_logic; izlazi: OUT std_logic_vector(M DOWNTO 0); clock: IN std_logic ); END automatMealy; ARCHITECTURE Behavioral OF automatMealy IS SIGNAL state_present, state_next: std_logic_vector(K DOWNTO 0); CONSTANT S0: std_logic_vector(K DOWNTO 0) := "0...000"; CONSTANT S1: std_logic_vector(K DOWNTO 0) := "0...001"; SIGNAL izlazi_next: std_logic_vector(M DOWNTO 0); BEGIN -- Blok koji modelira ujedinjene kombinacijske dijelove. -- Na temelju ulaza i trenutnog stanja računa sljedeće stanje -- i sljedeće izlaze. PROCESS( ulazi, state_present ) BEGIN -- utvrdi koje će stanje biti sljedeće i koji izlaz. -- odluka se donosi na temelju trenutnog stanja i ulaza. -- npr. za bezuvjetni prijelaz u stanje S0 i sve '0' -- na izlazima: state_next <= S0; izlazi_next <= "000..000"; -- niz od (K+1) nule. END PROCESS; -- Blok koji modelira Sekvencijski dio i registar; na temelju -- signala clock i asinkronih ulaza mijenja stanje i izlaz PROCESS( clock, reset ) BEGIN -- Provjera asinkronih ulaza IF reset = '1' THEN state_present <= S0; -- postavi stanje na S0 izlaz <= "000...00"; -- postavi izlaze na npr. '0' -- Inače slijedi sinkrono djelovanje ELSIF falling_edge(clock) THEN state_present <= state_next; izlazi <= izlazi_next; END IF; END PROCESS; END Behavioral;
Strojevi s konačnim brojem stanja. 12.21. Zadatak Stroj s konačnim brojem stanja (vidi zadatak 12.1) opisati VHDL-om.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY automat1 IS PORT ( input0: IN std_logic; y: OUT std_logic; clock: IN std_logic); END automat1; ARCHITECTURE Behavioral OF automat1 IS SIGNAL state_present, state_next: std_logic_vector(1 DOWNTO 0); CONSTANT S0: std_logic_vector(1 DOWNTO 0) := "11"; CONSTANT S1: std_logic_vector(1 DOWNTO 0) := "01"; CONSTANT S2: std_logic_vector(1 DOWNTO 0) := "10"; BEGIN PROCESS(input0, state_present) BEGIN CASE state_present IS WHEN S0 => IF input0 = '0' THEN state_next <= S0; ELSE state_next <= S1; END IF; WHEN S1 => IF input0 = '0' THEN state_next <= S1; ELSE state_next <= S2; END IF; WHEN S2 => IF input0 = '0' THEN state_next <= S2; ELSE state_next <= S0; END IF; WHEN OTHERS => state_next <= S0; END CASE; END PROCESS; PROCESS( clock ) BEGIN IF falling_edge(clock) THEN state_present <= state_next; END IF; END PROCESS; PROCESS(state_present) BEGIN CASE state_present IS WHEN S0 => y <= '1'; WHEN S1 => y <= '0'; WHEN S2 => y <= '0'; WHEN OTHERS => y <= '0'; END CASE; END PROCESS; END BEHAVIORAL;
283
284
Zbirka riješenih zadataka
12.22. Zadatak Stroj s konačnim brojem stanja (vidi zadatak 12.2) opisati VHDL-om.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY automat2 IS PORT ( i1 : IN std_logic; i0 : IN std_logic; o1 : OUT std_logic; o0 : OUT std_logic; ka : OUT std_logic; clock: IN std_logic); END automat2; ARCHITECTURE Behavioral OF automat2 IS SIGNAL state_present, state_next: std_logic_vector(1 DOWNTO 0); SIGNAL o1_next, o0_next, ka_next: std_logic; CONSTANT S0: std_logic_vector(1 DOWNTO 0) := "00"; CONSTANT S1: std_logic_vector(1 DOWNTO 0) := "01"; CONSTANT S2: std_logic_vector(1 DOWNTO 0) := "10"; BEGIN PROCESS( i1, i0, state_present ) VARIABLE pom: std_logic_vector(1 DOWNTO 0); BEGIN pom := (i1, i0); CASE state_present IS WHEN S0 => CASE pom IS WHEN "00" => state_next <= S1; o1_next <= '0'; o0_next <= '0'; ka_next <= '1'; WHEN "01" => state_next <= S1; o1_next <= '0'; o0_next <= '1'; ka_next <= '1'; WHEN "10" => state_next <= S1; o1_next <= '1'; o0_next <= '0'; ka_next <= '1'; WHEN "11" => state_next <= S0; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN OTHERS => state_next <= S0; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; END CASE; WHEN S1 => CASE pom IS WHEN "00" => state_next <= S2; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN "01" => state_next <= S2; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN "10" => state_next <= S2; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN "11" => state_next <= S0; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN OTHERS => state_next <= S0; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; END CASE; WHEN S2 => CASE pom IS WHEN "00" => state_next <= S2; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN "01" => state_next <= S2; o1_next <= '0';
Strojevi s konačnim brojem stanja.
285
o0_next <= '0'; ka_next <= '0'; WHEN "10" => state_next <= S2; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN "11" => state_next <= S0; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; WHEN OTHERS => state_next <= S0; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; END CASE; WHEN OTHERS => state_next <= S0; o1_next <= '0'; o0_next <= '0'; ka_next <= '0'; END CASE; END PROCESS; PROCESS( clock ) BEGIN IF falling_edge(clock) THEN state_present <= state_next; o1 <= o1_next; o0 <= o0_next; ka <= ka_next; END IF; END PROCESS; END Behavioral;
12.23. Zadatak Stroj s konačnim brojem stanja (vidi zadatak 12.5) opisati VHDL-om.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY automat3 IS PORT ( ulaz : IN std_logic; reset: IN std_logic; clock : IN std_logic; izlaz : OUT std_logic); END automat3; ARCHITECTURE Behavioral OF automat3 IS SIGNAL state_present, state_next: std_logic_vector(1 DOWNTO 0); CONSTANT S0: std_logic_vector(1 DOWNTO 0) := "00"; CONSTANT S1: std_logic_vector(1 DOWNTO 0) := "01"; CONSTANT S2: std_logic_vector(1 DOWNTO 0) := "10"; CONSTANT S3: std_logic_vector(1 DOWNTO 0) := "11"; BEGIN PROCESS( ulaz, state_present ) BEGIN CASE state_present IS WHEN S0 => IF ulaz = '1' THEN ELSE state_next <= WHEN S1 => IF ulaz = '1' THEN ELSE state_next <= WHEN S2 => IF ulaz = '1' THEN ELSE state_next <= WHEN S3 => IF ulaz = '1' THEN ELSE state_next <= WHEN OTHERS => state_next <= S0; END CASE; END PROCESS;
state_next <= S0; END IF; state_next <= S0; END IF; state_next <= S3; END IF; state_next <= S0; END IF;
S1; S2; S2; S2;
286
Zbirka riješenih zadataka
PROCESS( clock, reset ) BEGIN IF reset = '1' THEN state_present <= S0; ELSIF falling_edge(clock) THEN state_present <= state_next; END IF; END PROCESS; PROCESS( state_present ) BEGIN CASE state_present IS WHEN S0 => izlaz <= '0'; WHEN S1 => izlaz <= '0'; WHEN S2 => izlaz <= '1'; WHEN S3 => izlaz <= '1'; WHEN OTHERS => izlaz <= '0'; END CASE; END PROCESS; END Behavioral;
ZADACI ZA VJEŽBU 1.
Uporabom logičkih blokova iz zadatka 12.14 realizirati sklop s dva izlaza (f1 i f2), pri čemu je: f1 ( A, B, C , D ) = A ⋅ (B + C ) ⋅ D + A C f 2 ( A, B, C , D ) = (B + C ) ⋅ A + AD
2.
VHDL-om je opisan neki automat. Na temelju tog opisa nacrtati grafički prikaz automata. O kojoj se vrsti automata radi i zašto? library IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY automat IS PORT (
cp, x1, x2 : IN std_logic; a, b, c : OUT std_logic);
END automat; ARCHITECTURE Behavioral OF automat IS SIGNAL p_st, n_st: std_logic_vector( 1 DOWNTO 0 ); CONSTANT s0: std_logic_vector( 1 DOWNTO 0 ) := "10"; CONSTANT s1: std_logic_vector( 1 DOWNTO 0 ) := "01"; CONSTANT s2: std_logic_vector( 1 DOWNTO 0 ) := "11"; SIGNAL n_a, n_c: std_logic; BEGIN PROCESS (p_st, x1, x2) BEGIN CASE p_st IS WHEN S0 => n_a <= '0'; n_c <= '1'; IF x1 = '1' THEN b <= '1'; n_st <= S1; ELSIF x2 = '0' THEN b <= '0'; n_st <= S2; ELSIF x1 = '0' THEN b <= '1'; n_st <= S1; ELSE b <= '0'; n_st <= S0;
Strojevi s konačnim brojem stanja.
287
END IF; WHEN S1 => n_a <= '1'; n_c <= '1'; IF x1 = '0' THEN b <= '0'; n_st <= S0; ELSIF x2 = '1' THEN b <= '0'; n_st <= S2; ELSIF x1 = '1' THEN b <= '1'; n_st <= S1; ELSE b <= '1'; n_st <= S2; END IF; WHEN S2 => n_a <= '0'; n_c <= '0'; b <= '1'; IF x1 = '1' THEN n_st <= S0; ELSIF x1 = '0' THEN n_st <= S1; ELSIF x2 = '0' THEN n_st <= S2; ELSE n_st <= S0; END IF; WHEN OTHERS => n_a <= '0'; n_c <= '0'; b <= '0'; n_st <= S0; END CASE; END PROCESS; PROCESS( cp ) BEGIN IF falling_edge(cp) THEN p_st <= n_st; a <= n_a; c <= n_c; END IF; END PROCESS; END Behavioral;
3.
U zadatku 12.1 projektiran je konačni automat. Ako su na raspolaganju D-bistabili čije je sučelje prikazano u nastavku, napisati strukturni model navedenog automata. Osnovne logičke operacije (I, ILI, …) nije potrebno strukturno modelirati novim komponentama, već se mogu koristiti odgovarajući operatori VHDL-a.
ENTITY DBistabil IS PORT ( CP, D: IN std_logic; Q, Qn: OUT std_logic); END DBistabil;
Sučelje D bistabila
4.
Proučiti građu FPGA logičkog bloka iz zadatka 12.14. Realizirati: a) pomoću jednog takvog bloka T bistabil. b) pomoću najviše 3 takvih blokova JK bistabil. c) pomoću 4 takva bloka 4-bitni posmačni registar udesno; registar ima serijski ulaz i paralelne izlaze. d) pomoću 4 takva bloka 4-bitni posmačni registar ulijevo; registar ima serijski ulaz i paralelne izlaze. e) pomoću jednog troulaznog logičkog bloka JK bistabil (tada LUT ima 8 memorijskih lokacija). f) pomoću potrebnog broja troulaznih logičkih blokova multipleksor 8/1 (naputak – realizirati multipleksorsko stablo).
5.
Upotrebom troulaznog logičkog bloka FPGA (slično zadatku 12.14) realizirati T bistabil sa sinkronim ulazom za poništavanje stanja. Potom, upotrebom odgovarajućeg broja tih blokova načiniti brojilo sa paralelnim prijenosom koje broji u ciklusu 0, 1, …, 7, 0, …. Da li bi isto brojilo izvedeno sa serijskim prijenosom moglo raditi na višoj frekvenciji?
6.
Pismeni ispit 12. 11. 2004.
288
Zbirka riješenih zadataka
Uporabom minimalnog broja D-bistabila i osnovnih logičkih sklopova projektirati sinkroni sekvencijski sklop koji na izlazu ciklički generira slijed od 7 Fibbonaccijevih brojeva (F0=0, F1=1, Fn=Fn-1+Fn-2 za n>2). Provjeriti (i objasniti) da li je to sklop sa sigurnim startom. 7.
Pismeni ispit 12. 11. 2004. Zadan je stroj s konačnim brojem stanja prema slici. Projektirati sklop. Na raspolaganju su 2 D bistabila i minimalno potreban broj osnovnih logičkih sklopova. 0 S0 [0,0]
S1 [1,0]
1
1 1
0 0
1
8.
S2 [1,1]
0
S3 [1,1]
Pismeni ispit 12. 11. 2004. Napisati ponašajni VHDL model stroja s konačnim brojem stanja zadanog (gornjom) slikom.
Memorije.
13.
289
Memorije. 13.1. Zadatak Prikazati osnovnu memorijsku ćeliju kod permanentne memorije izvedene diodnim poljem. Prikazati memoriju tipa 4×8 izvedenu ovom tehnologijom, u koju je upisan sljedeći sadržaj: ED, 2D, DA, AD.
Pohranjena logička nula
Pohranjena logička jedinica
BL
BL
WL
WL
Pri tome WL označava liniju riječi (engl. Word Line) koja u aktivnom stanju ima logičku jedinicu, a BL označava liniju bita (engl. Bit Line) koja je preko otpora pritegnuta na masu.
WL[0]
WL[1]
WL[2]
WL[3]
BL[0]
BL[1]
BL[2]
BL[3]
BL[4]
BL[5]
BL[6]
BL[7]
Sadržaj pohranjen u memoriju (raspisano po bitovima) definiran je tablicom prikazanom u nastavku.
290
Zbirka riješenih zadataka
Lokacija Sadržaj ED 2D DA AD
0 1 2 3
LSB b0 1 1 0 1
b1 0 0 1 0
b2 1 1 0 1
Sadržaj po bitovima b3 b4 1 0 1 0 1 1 1 0
b5 1 1 0 1
MSB b7 1 0 1 1
b6 1 0 1 0
13.2. Zadatak Prikazati osnovnu memorijsku ćeliju kod permanentne memorije izvedene MOSFET-om. Prikazati memoriju tipa 4×8 izvedenu ovom tehnologijom, u koju je upisan sljedeći sadržaj: ED, 2D, DA, AD.
Pohranjena logička nula
Pohranjena logička jedinica
BL
BL
WL
WL
Pri tome WL označava liniju riječi (engl. Word Line) koja u aktivnom stanju ima logičku jedinicu, a BL označava liniju bita (engl. Bit Line) koja je preko "otpora" pritegnuta na napajanje ("otpor" je također izveden MOSFET-om). +UDD
+UDD
+UDD
+UDD
+UDD
+UDD
+UDD
+UDD
WL[0]
WL[1]
WL[2]
WL[3]
BL[0]
BL[1]
BL[2]
BL[3]
BL[4]
BL[5]
BL[6]
BL[7]
Memorije.
291
13.3. Zadatak Prikazati jednotranzistorsku MOSFET DRAM ćeliju. Objasniti način čuvanja, zapisivanja i čitanja informacije. Pretpostaviti da CS iznosi 50 fF, kapacitet linije bita CB = 25⋅CS a logičkoj jedinici odgovara napon od 5V. Izračunati napon na liniji BL prilikom čitanja pohranjene logičke jedinice. Jednotranzistorska MOSFET DRAM ćelija prikazana je na slici. WL
CS
US , Q S
BL
Podaci se čuvaju na kondenzatoru preko naboja (na slici označeno s QS). Za odnos napona i naboja na kapacitetu vrijedi sljedeća relacija: QS = C S ⋅ U S Ako je US=0, tada je QS=0 te je pohranjena logička nula. Ako je US velik, tada je QS>0 te je pohranjena logička jedinica. Ćelija može raditi na tri načina: čuvanje, čitanje i pisanje. Kada ćelija čuva sadržaj, tranzistor je isključen (WL=0) čime se čuva naboj na kondenzatoru. Zapisivanje sadržaja obavlja se postavljanjem vrijednosti na liniju bita (logičko 0 ili logičko 1) te otvaranjem tranzistora (WL=1). Npr. ako zapisujemo logičko 1, na liniju bita dovodimo UDD i zatim otvaramo tranzistor. Kapacitet CS nakon nekog će se vremena nabiti na UDD, i tada možemo zatvoriti tranzistor i ukloniti podatak s linije bita. Čitanje podatka obavlja se dovođenjem WL=1 jedinice na WL, te očitavanjem napona na liniji bita. Pretpostavimo da je u ćeliji BL US → UF CS zapisana logička jedinica. Tada će se naboj QS pohranjen na kapacitetu CS nakon otvaranja UB → UF CB tranzistora podijeliti na kondenzatore CS i CB (CB je kapacitet same linije bita). Kako su oni spojeni paralelno, podjela će se obaviti tako da napon na oba kondenzatora bude jednak i iznosi UF, tj. vrijedit će sljedeće: •
Prije otvaranja tranzistora: UB=0 V US>0 V, QS = C S ⋅ U S
292
Zbirka riješenih zadataka •
Nakon otvaranja tranzistora: Napon paralele je UF. Prema zakonu o očuvanju naboja: QS = C S ⋅ U F + C B ⋅ U F Zamjenom QS slijedi: CS ⋅ U S = CS ⋅ U F + C B ⋅ U F pa je konačni napon na paraleli tada jednak:
UF =US
CS CS + CB
Uz zadane vrijednosti za UF se dobiva: UF =US
CS CS 1 = US = 5⋅ = 192 mV CS + CB C S + 25 ⋅ C S 1 + 25
Da je u ćeliji bila zapisana logička nula, konačni napon bio bi jednak nuli, iz čega slijedi da se naponi na liniji bita dobiveni čitanjem nule ili jedinice razlikuju vrlo malo (manje od 1V) pa je za očitavanje tog napona potrebno osjetljivo pojačalo za čitanje. Razlog ovako malog napona jest omjer kapaciteta CS i CB, tj. CB>>CS. Osim toga, nakon čitanja sadržaja ćelije zapisani je podatak izgubljen (napon na CS je prilikom čitanja logičke jedinice pao na svega 192 mV) te je potrebno ponovno zapisati pročitani sadržaj (dakle, čitanje je destruktivno). 13.4. Zadatak Procijeniti vrijeme čuvanja podatka MOSFET DRAM 1T ćelije. Pretpostaviti da je IL=1 nA, CS=50 fF a ∆US=1V.
Kada je tranzistor isključen, kapacitet CS se ipak izbija određenom strujom curenja IL, te će napon US polako padati. US(t) Umax
WL=0 IL CS
U1,min US(t), QS(t)
BL
th
t
Memorije.
293
Neka logičkoj razini 1 odgovara napon Umax. Da bi se sadržaj ćelije ispravno očitao, napon na CS smije pasti najniže do napona U1,min, čime je određena razlika napona ∆U S = U max − U 1,min . Za struju IL vrijedi: IL = −
dQS dU S = −C S dt dt
Pretpostavimo li da su naponi Umax i U1,min relativno blizu, početak eksponencijale možemo linearizirati, te možemo promatrati da je IL u tom području konstantno. Tada slijedi: U max − U 1,min U max − U 1, min ∆U S = −C S = CS ∆t 0 − th th
I L = −C S odnosno
th =
(
CS ⋅ U max − U 1, min IL
)
Uz podatke iz zadatka slijedi:
th =
CS 50 fF ⋅ ∆U S = ⋅ 1V = 50 µs. 1nA IL
13.5. Zadatak
Prikazati CMOS SRAM ćeliju i objasniti načine rada. Idejno rješenje ćelije prikazano je na slici. WL
Q TA
b
Q TB
b
Dva invertora povezana su u bistabilni element. Ćelija može raditi na tri načina rada: • • •
Čuvanje podatka – TA i TB su isključeni (WL=0), te se podatak čuva u bistabilu. Zapisivanje podatka – TA i TB su uključeni (WL=1); novi podatak dovodi se na linije b i b čime se mijenja stanje u bistabilu. Isključivanjem TA i TB ćelija čuva novoupisani podatak. Čitanje podatka – TA i TB su uključeni (WL=1); linije b i b očitavaju se na pojačalu za čitanje.
294
Zbirka riješenih zadataka
Pojačalo za čitanje spojeno je na linije b i b i generira izlaz 0 ako je b < b , odnosno 1 ako je b > b . Svaki od invertora može se izvesti s 2 tranzistora (tj. tranzistorskim parom PMOS+NMOS), što daje osnovnu 6T ćeliju prikazanu na slici. WL +UDD
T5
T2
T4
T1
T3
T6
b
b
Postoji i izvedba 4T ćelije, pri čemu su PMOS tranzistori zamijenjeni velikim otpornicima spojenim na UDD. 13.6. Zadatak Prikazati barem dva načina organizacije memorije čiji je kapacitet 256 bitova, a duljina logičke riječi 8 bitova. Procijeniti duljine linije bita i linije riječi. Pogledajmo prvo "prirodni" način organizacije memorije: memorijske ćelije koje čuvaju bitove iste logičke riječi smještene su jedna do druge, a pojedine riječi smještene su jedna ispod druge. M bitova
WL[0] WL[1]
A[0]
WL[2]
A[1]
Mem. riječ 1 Mem. riječ 2
Dekoder
WL[3]
Mem. riječ 0
A[K-1] WL[N-2] WL[N-1]
Mem. riječ N-2 Mem. riječ N-1
Podaci
Memorijska ćelija (1 bit)
Memorije.
295
Kako je u ovom slučaju kapacitet memorije (C=256 bitova) određen umnoškom broja logičkih riječi (N) i broja bitova u jednoj logičkoj riječi (M), broj logičkih riječi jednak je: N=
C 256 = = 32 M 8
Za adresiranje nam tada treba K adresnih bitova, pri čemu je K određen izrazom:
2K = N pa slijedi: K = log 2 N = log 2 32 = 5 Procijenimo još i duljine linije riječi i bita. Kao što je poznato, linija riječi (WL) se proteže do svih memorijskih ćelija koje čuvaju bitove iste memorijske riječi. Pretpostavimo li da su dimenzije memorijske ćelije kvadratne, tada će ukupna duljina biti zapravo proporcionalna broju ćelija do kojih linija dolazi, odnosno broju bitova. Linija bita se pak proteže do svih ćelija koje čuvaju isti bit u svakoj memorijskoj riječi. Tako kod ovakve organizacije memorije vrijedi da je duljina linije riječi ≈ 8, a duljina linije bita ≈ 32. Već iz ove niskokapacitetne memorije vidljiv je osnovni problem ovakve ogranizacije: duljina linije bita >> duljina linije riječi (a time je i parazitni kapacitet linije bita vrlo velik). Napomena: U knjizi [Peruško] ovakav način organizacije memorije poznat je kao 2D organizacija. Ukoliko se želi dobiti više informacija o ovom tipu (npr. Google), tada treba obratiti pažnju da je na većini stranih sveučilišta ovaj tip poznat kao 1D organizacija (jer su memorijske riječi organizirane uzduž jedne dimenzije; odozgo prema dolje). Drugi primjer organizacije memorije temelji se ne popravljanju odnosa duljina linija riječi i bita, i prikazan je na sljedećoj slici. Kod ovog pristupa jedna fizička memorijska riječ sadrži P logičkih riječi (svaka logička riječ je duljine M bitova). Cijela memorija pri tome sadrži N = 2 K logičkih riječi. Dekoder retka na temelju viših bitova adrese odabire adresiranu fizičku riječ, čime na ulaze dekodera stupca dolazi P⋅M pohranjenih bitova, tj. sadržaj P logičkih riječi. Dekoder stupca na temelju nižih bitova adrese odabire adresiranu logičku riječ. Dekoder stupca logički se može promatrati kao M multipleksora tipa P/1 gdje se na 0. multipleksor dovode 0. bitovi od P logičkih riječi, na 1. multipleksor dovode 1. bitovi od P logičkih riječi, itd. Proračunajmo sada sve potrebne veličine.
296
Zbirka riješenih zadataka M bitova
Q=2
M bitova
M bitova
K −L
Logička riječ 1
Logička riječ P-1
Fizička riječ 0
Logička riječ P
Logička riječ P+1
Logička riječ 2P-1
Fizička riječ 1
A[L+1]
Logička riječ 2P
Logička riječ 2P+1
Logička riječ 3P-1
Fizička riječ 2
Logička riječ 3P
Logička riječ 3P+1
Dekoder retka
Logička riječ 0 A[L]
A[K-1]
Memorijska ćelija (1 bit)
Logička riječ 0
Logička riječ 1
Logička riječ P-1
Fizička riječ Q-2
Logička riječ (Q-1)P
Logička riječ (Q-1)P+1
Logička riječ QP-1
Fizička riječ Q-1
M ⋅ P = M ⋅ 2L A[0]
Dekoder stupca
A[L-1]
Podaci (M bitova)
Memorija iz zadatka imat će N logičkih riječi, pri čemu je N određen s: N=
C 256 = = 32 M 8
Za adresiranje N=32 logičke riječi trebamo ukupno:
2K = N adresnih bitova, pa slijedi: K = log 2 N = log 2 32 = 5 Kako je kod ove organizacije ukupni broj logičkih riječi definiran umnoškom
N = P⋅Q gdje su N, P i Q cijeli brojevi, jedno rješenje koje zadovoljava prethodni izraz jest P=2, Q=16. Za adresiranje logičke riječi unutar fizičke riječi koristi se L bitova. Slijedi: 2 L = P ⇒ L = log 2 P = log 2 2 = 1 Dakle, jedan adresni bit dovodi se na dekoder stupca, a preostalih K-L=5-1=4 adresna bita dovode se na dekoder retka. Memorija u tom slučaju ima Q = 24 = 16 fizičkih riječi, gdje svaka fizička riječ sadrži dvije logičke riječi. Proračunajmo još i duljine linija riječi i bita. Jedna fizička riječ sadrži P⋅M=2⋅8=16 bitova, pa je duljina linije riječi ≈ 16. Memorija ima Q=16 fizičkih riječi pa je duljina linije bita ≈ 16.
Memorije.
297
Napomena: U knjizi [Peruško] ovakav način organizacije memorije poznat je kao 2 ½ D organizacija. Ukoliko se želi dobiti više informacija o ovom tipu (npr. Google), tada treba obratiti pažnju da je na većini stranih sveučilišta ovaj tip poznat kao 2D organizacija (jer su logičke riječi organizirane u 2D matricu, a ne linearno). Za vježbu. Nacrtajte strukture memorija uz proračunate parametre. Drugi dio zadatka ima više mogućih rješenja (tj. jednadžba N=P⋅Q ima više rješenja u skupu cijelih brojeva). Pronađite sva rješenja. Proračunajte duljine linija riječi i bita za te slučajeve.
13.7. Pismeni ispit, 09. 02. 2004, 9. zadatak Zadana je uređena n-torka P=(8,1,5,2,3,3,12,14,7,2,0,1,6,6,2,4). Funkcija F(i) vraća i-ti element od P (npr. F(0)=8). Projektirati sklop koji ostvaruje ovu funkciju. Na raspolaganju su ispisna memorija 8×8 te 4 multipleksora 2×1. Prikazati sadržaj memorije po lokacijama, u heksadekadskom obliku.
Memorija koju imamo na raspolaganju pohranjuje riječi širine 8 bita, a za pohranu svakog broja koji trebamo vratiti nužna su samo 4 bita. Zbog toga ćemo na svaku memorijsku lokaciju pohranjivati po dva broja. Sadržaj memorije prikazan je u nastavku: lokacija: 0 1 2 3 4 5 6 7 Sklop je prikazan na slici:
Sadržaj memorije (hex) 1 8 2 5 3 3 E C 2 7 1 0 6 6 4 2
298
Zbirka riješenih zadataka
I3
A2
I2
A1
I1
A0
RAM 8x8 D7
D6
D5
D4
D3
D2
D1
D0
I0 1
0
O3
1
0
1
O2
0
1
O1
0
O0
13.8. Zadatak
Na raspolaganju je potreban broj memorijskih modula prikazanih na slici. Njihovom uporabom projektirati memoriju 512×3. R /W
Kako memorijski modul ima 8 adresnih linija, očito je da može adresirati 256 memorijskih lokacija, svaka širine jednog bita. Budući da trebamo 512 memorijskih lokacija, morat ćemo iskoristiti 512/256=2 memorijska modula, kako bismo dobili memoriju koja može adresirati 512 memorijskih lokacija. Budući da memorijske riječi moraju biti široke 3 bita, trebat ćemo još 3/1=3 memorijska modula u paraleli. Ideja rješenja prikazana je na slici desno.
000
000
000
0FF
0FF
0FF
100
100
100
1FF
1FF
1FF
1. bit
2. bit
3. bit
Svako polje predstavlja jedan memorijski modul. Analizom slike može se uočiti kako je razlika između gornjih i donjih modula u najvišem bitu: A8. I upravo ćemo taj bit koristiti za selekciju onog rezultata koji će se pojaviti na izlazu sklopa. Shema spajanja prikazana je na slici:
Memorije.
R /W
299
R /W
R /W
R /W
R /W
R /W
R /W
Podatkovni izlazi gornjih i donjih memorijskih modula spojeni su preko ILI sklopa: Dout,dolje ⋅ Dout, gore = Dout,dolje + Dout, gore
Naime, ti su izlazi izvedeni s otvorenim kolektorom, a njihovim kratkim spajanjem i pritezanjem na napajanje ostvarili smo I logičku funkciju komplemenata izlaza. Kada to na kraju invertiramo, dobivamo ILI logičku operaciju. Kada je A8 jednak 0, donji moduli su onemogućeni (CE=0), a gornji su omogućeni. Zbog toga na izlaz prolaze podaci pohranjeni u gornjim modulima. Kada je A8 jednak 1, gornji moduli su onemogućeni (CE=0), a donji su omogućeni. Zbog toga na izlaz prolaze podaci pohranjeni u donjim modulima.
ZADACI ZA VJEŽBU 1.
Objasnite organizacije memorijskih čipova kod statičkih i dinamičkih poluvodičkih memorija. Navedite i objasnite tipične predstavnike istih.
A/D i D/A konverzija.
14.
301
A/D i D/A konverzija. 14.1. Zadatak Na slici je prikazan D/A konvertor. Ako je ulaz konvertora 4-bitni binarni broj a3a2a1a0, UREF=+5V i R0=80 kΩ, odrediti preostale otpore tako da napon koji odgovara najmanjem bitu bude |0.4| V. Kako se zove prikazani D/A konvertor? Koji je najveći napon na izlazu konvertora?
+UREF
Rf IN a3
R3
I3
a2
R2
I2
a1
R1
I1
a0
R0
I0
UN
A = −∞ +
Uizl
Pogledajmo najprije završni dio D/A konvertora. Napon UN je napon između (-) stezaljke operacijskog pojačala i mase. Kako je napon između (-) i (+) stezaljke operacijskog pojačala jednak nuli, a (+) stezaljka je spojena na masu, tada je i (-) stezaljka (prividno) kratko spojena na masu, pa je UN=0 (virtualni kratki spoj). Drugo bitno svojstvo operacijskog pojačala je beskonačno veliki otpor između (-) i (+) stezaljki pa tim putem ne teče struja. Zbog toga sva struja koja dolazi iz otporne mreže ide dalje kroz otpor Rf. Možemo pisati: U izl = − I N ⋅ R f + U N = − I N ⋅ R f + 0 = − I N ⋅ R f
(1)
Isto tako vrijedi: I N = a3 I 3 + a 2 I 2 + a1 I1 + a 0 I 0
(2)
Gdje je ai 1 (sklopka je uključena i struja teče) ili 0 (sklopka je isključena i struja ne teče). Uvrštavanjem (2) u (1) slijedi: U izl = −(a3 I 3 + a 2 I 2 + a1 I 1 + a0 I 0 ) ⋅ R f
(3)
302
Zbirka riješenih zadataka
Kako struje Ii odgovaraju vrijednostima pojedinih binarnih znamenaka a da bi izlazni napon odgovarao vrijednosti binarnog broja na ulazu, tada odnos među strujama mora odgovarati težinskom odnosu među znamenkama. Npr. znamenka a1 ima dvostruku težinu od znamenke a0, pa struja I1 mora biti dvostruko veća od struje I0, odnosno općenito: I i = 2i ⋅ I 0
(4)
Iz čega uvrštavanjem u (3) slijedi: 3
U izl = − R f ⋅ I 0 ⋅ ∑ ai ⋅ 2 i
(5)
i =0
Iz sheme proizlazi: Ii =
U REF − U N U REF − 0 U REF = = Ri Ri Ri
(6)
Uvrštavanjem (4) u (6) slijedi: 2i ⋅ I 0 =
R U REF U U ⇒ 2 i ⋅ REF = REF ⇒ Ri = 0i Ri R0 Ri 2
(7)
Što daje: R1 =
R0 80k = = 40kΩ, 2 2
R2 =
R0 80k = = 20kΩ, 4 4
R3 =
R0 80k = = 10kΩ 8 8
Uvrštavanjem (6) u (5) slijedi: U izl = − R f ⋅
U REF 3 ⋅ ∑ ai ⋅ 2 i R0 i =0
(8)
Poznato je da napon najmanje značajnog bita iznosi |0.4| V, pa uvrštavanjem broja a3a2a1a0=0001 u (8) slijedi: 0. 4 = R f ⋅
pa slijedi:
R f = R0 ⋅
(
)
U REF 3 U U ⋅ ∑ ai ⋅ 2 i = R f ⋅ REF ⋅ 0 ⋅ 2 3 + 0 ⋅ 2 2 + 0 ⋅ 21 + 1⋅ 2 0 = R f ⋅ REF ⋅ 1 R0 i =0 R0 R0
0.4 0.4 = 80k ⋅ = 6.4kΩ U REF 5
A/D i D/A konverzija.
303
Maksimalni napon na izlazu odgovara najvećem binarnom broju koji se može dovesti na ulaz: 1111(2)≡15. Tada je prema (8): U izl (15 ) = −6.4k ⋅
5 ⋅ 15 = 6 V 80k
Konvertor se zove težinski D/A konvertor, ili konvertor sa težinski raspoređenim otporima u otpornoj mreži. 14.2. Zadatak Kako se zove na slici prikazani 4-bitni D/A konvertor? Odrediti napon Uizl, ako je poznato da je UREF=+5V, R=1kΩ a napon najmanjeg bita |0.4| V. Rf 2R
1
2
R
R
3
IN
4
R
2R UN
2R a0
2R a1
2R a2
2R
A = −∞ +
Uizl
UX
a3
UREF
Prikazan je ljestvičasti D/A konvertor. Potrebno je uočiti kako su u mreži složeni otpori. Promatrajmo otpor točke 1 (lijevo i dolje): imamo 2R || 2R = R. Otpor koji se vidi iz točke 2 tada je (R plus točka 1) || 2R = (R+R) || 2R je opet R! Zbog prividnog kratkog spoja (UN=0) ista analiza vrijedi i ako promatramo otpore s desne strane. Izračunajmo sada koliko iznosi napon UX. Kako imamo otpornu mrežu, možemo primijeniti princip superpozicije, koji kaže da je za takav slučaj dozvoljeno izračunati napon UX tako da se promatra utjecaj svakog pojedinog izvora (odnosno svakog bita) na taj napon. Imamo 4 slučaja: 1. slučaj: a3=1, a2=0, a1=0, a0=0 Lijevo od točke 4 mreža djeluje otporom 2R, desno je također otpor 2R prema masi pa imamo (nadomjesna shema):
304
Zbirka riješenih zadataka
2R
4
4
2R
2R
UX UREF
R
2R UREF
Pa je: U X ,a3 = U 4 =
U REF R U REF ⋅ R = U REF = R + 2R 3R 3
2. slučaj: a3=0, a2=1, a1=0, a0=0 Izračunajmo napon u točki 3. Iz točke 3 na lijevo i desno vidimo otpore 2R, pa je nadomjesna shema ista kao u prethodnom slučaju: 3
2R
2R
2R UREF Slijedi: U3 =
U REF R U REF ⋅ R = U REF = R + 2R 3R 3
Sada je još potrebno izračunati doprinos U3 naponu UX. Nacrtajmo nadomjesnu shemu desno od točke 3. Imamo R do točke 4, i zatim otpor koji se vidi iz točke 4 (dolje, desno) što je još R (2R || 2R = R). 3
U3
Slijedi:
4
R
R
UX
A/D i D/A konverzija.
U X ,a 2 = U 4 = U 3
305
U U U R = 3 = REF = X ,a 3 R+R 2 3⋅ 2 2
Odmah vidimo i bitno svojstvo mreže: napon generiran jednim izvorom iz jedne točke se u drugu prenosi sa pola amplitude! 3. slučaj: a3=0, a2=0, a1=1, a0=0 Prema prethodnim razmatranjima već znamo da je nadomjesna shema ista kao i prije, i da vrijedi: U REF 3 Napon u točki 3 biti će pola tog napona, a napon u točki 4 pola od napona u točki 3, pa slijedi: U2 =
U U X , a1 = U 4 = 3 = 2
U2
2 = U REF = U X ,a 3 2 3⋅ 4 4
4. slučaj: a3=0, a2=0, a1=0, a0=1 Vrijedi: U REF 3 Napon u točki 2 biti će pola tog napona, a napon u točki 3 pola od napona u točki 2, a napon u točki 4 pola od napona u točki 3, pa slijedi: U1 =
U X ,a 0 = U 4 =
U3 = 2
U2 2
U1 2 =
2
2
2
=
U REF U X , a3 = 3⋅8 8
Sumiramo li utjecaj svih izvora na napon točke X (pomnožen sa ai, jer ako je ai=0, tada taj napon ne doprinosi naponu UX), slijedi:
U X = a3 ⋅ U X , a3 + a2 ⋅ U X , a 2 + a1 ⋅ U X ,a1 + a0 ⋅ U X ,a 0 = a3 ⋅ U X , a3 + a2 ⋅
U X ,a 3
+ a1 ⋅
U X ,a3
2 4 U a a a = REF a3 + 2 + 1 + 0 3 2 4 8 U = REF (8a3 + 4a2 + 2a1 + a0 ) 3⋅ 8 U REF 3 = ai ⋅ 2 i ∑ 3 ⋅ 8 i =0
+ a0 ⋅
U X ,a 3 8
Sada kada znamo koliko iznosi UX, možemo izračunati izlazni napon:
306
Zbirka riješenih zadataka
Rf IN
4
2R UX
IN =
A = −∞ +
UN
Uizl
U X −U N U X − 0 U X = = 2R 2R 2R
U izl = − I N ⋅ R f + U N = − I N ⋅ R f + 0 = − I N ⋅ R f = −U X ⋅ Što daje: U izl
R f U REF =− ⋅ 2R 3 ⋅ 8
3
∑a ⋅2 i =0
i
i
Slijedi: 0.4 = −
R f U REF Rf 5 ⋅ = ⋅ ⇒ R f = 3.84kΩ 2R 3 ⋅8 2 ⋅1k 3 ⋅ 8
Rf 2R
A/D i D/A konverzija.
307
14.3. Zadatak
Konstruirati D/A konvertor koji će na ulazu primati dvoznamenkasti dekadski broj zapisan u BCD kodu, i koristiti mrežu s težinski raspoređenim otporima. Neka dvoznamenkasti broj N ima znamenke A i B, pri čemu vrijedi: N = 10 A + B . Ako su a3a2a1a0 i b3b2b1 b0 reprezentacije tih znamenaka u BCD kodu, tada je traženi konvertor prikazan na slici:
Rf +UREF
IN a3
R
a2
2R
a1
4R
a0
8R
b3
10R
b2
20R
b1
40R
b0
80R
A = −∞ +
Uizl
Vrijedi: U REF U U U U U U U + a 2 ⋅ REF + a1 ⋅ REF + a 0 ⋅ REF + b3 ⋅ REF + b2 ⋅ REF + b1 ⋅ REF + b0 ⋅ REF R 2R 4R 8R 10 R 20 R 40 R 80 R 3 3 U U = REF ∑ ai ⋅ 2 i + REF ∑ bi ⋅ 2 i 8R i =0 80 R i =0
I N = a3 ⋅
=
3 3 U REF 10 ⋅ ∑ ai ⋅ 2 i + ∑ bi ⋅ 2 i 80 R i =0 i =0
308
Zbirka riješenih zadataka
14.4. Zadatak Na slici je prikazan D/A konvertor koji na ulaz prima troznamenkasti dekadski broj, pri čemu su znamenke prikazane BCD kodom (pri čemu se na odgovarajuća mjesta za vrijednost bita 1 spaja UREF=+5V, inače 0 V). Izračunati otpore R0, RS i Rf. Poznato je da je R=4.5kΩ, a broju 125 odgovara napon od 0.5V. Rf RS
R0
8R
4R
c0
2R
c1
R
c2
8R
c3
R0
RS
4R
b0
jedinice
2R
b1
R
b2
desetice
8R
b3
4R
a0
2R
a1
A = −∞ +
R
a2
IN
Uizl
a3
stotice
Dijelove mreže koji generiraju napon pojedine znamenke možemo zamijeniti nadomjesnim otporom RP i nadomjesnim naponskim izvorom U. Naime, svaku pasivnu mrežu možemo zamijeniti ekvivalentnim naponskim izvorom kojemu je u seriju spojen nadomjesni otpor (Theveninov teorem), ili par strujnim izvorom kojemu je u paralelu spojen nadomjesni otpor (Nortonov teorem). Primijenimo na ovaj slučaj Theveninov teorem. Nadomjesni otpor RP je: RP = 8 R || 4 R || 2 R || R =
8 R 15
Napon UT možemo izračunati prema Millmannu: U C 0 U C1 U C 2 U C 3 + + + 8 R 4 R 2 R R = R c0U REF + c1U REF + c 2U REF + c3U REF UT = P 1 1 1 1 4R 2R R 8R + + + 8R 4 R 2 R R 8 R ⋅ U REF 3 U REF 3 RPU REF 3 i i 15 = c 2 = c 2 = ci 2 i ∑i ∑ ∑ i 8 R i =0 8R 15 i =0 i =0
Ako umjesto UT pišemo samo U, nadomjesna shema početnog sklopa prikazana je na sljedećoj slici:
A/D i D/A konverzija.
309
Rf 1
R0
2
RS
U
jedinice
UX
U desetice
IN
R0
RP
RP
RP
3
RS
UN
A = −∞ +
Uizl
U stotice
Prikazanu mrežu svodi se na klasičnu ljestvičastu obrađenu kod pretvorbe binarnih znamenki postavljanjem zahtjeva: RS + RP || R0 = R0 Uočimo najprije da je mreža s obje strane prema masi zaključena otporom R0 (virtualni kratko spoj kod ulaza operacijskog pojačala!). Dovedimo sada na ulaze mreže broj A00 (dakle samo znamenka A različita od 0). Koliki je napon u točki 3? Desno od točke 3 imamo otpor R0 prema masi. Lijevo od točke 3 isto imamo otpor R0 prema masi. Naime, cijela mreža na lijevoj strani djeluje kao jedan otpor od R0 zbog prethodno spomenutog zahtjeva na otpore R0, RP i RS. Tada slijedi nadomjesna shema:
R0
3
R0
RP
UX U
U X ,100 = U 3 = U
3
R0||R0
RP U
R0 || R0 RP + R0 || R0
Analizirajmo sada utjecaj na napon UX, kada na mrežu dovedemo samo znamenku B različitu od 0 (istu koja je prije bila na A). Tada imamo identični slučaj prethodnome, osim što je sada odmah vidljiv napon u točki 2: U2 = U
R0 || R0 RP + R0 || R0
No kakav je utjecaj ovog napona na UX? Imamo sljedeću nadomjesnu shemu:
310
Zbirka riješenih zadataka
2
U2
RS
3
RP
R0
UX
Očito je da je tada:
U X ,10 = U 2
R0 || RP R0 || R0 R0 || RP =U ⋅ RS + R0 || RP RP + R0 || R0 RS + R0 || RP
Kako imamo dekadski D/A konvertor, utjecaj desetica na izlazni napon treba biti 10 puta manji od utjecaja stotica, odnosno vrijedi: 10 ⋅ U X ,10 = U X ,100
Uvrštavanjem dobivenih izraza slijedi: 10 ⋅ U
R0 || R0 R0 || RP R0 || R0 ⋅ =U RP + R0 || R0 RS + R0 || RP RP + R0 || R0
odakle slijedi zahtjev: 10 ⋅
R0 || RP =1 RS + R0 || RP
Uvrštavanjem zahtjeva RS + RP || R0 = R0 u prethodnu jednadžbu slijedi: 10 ⋅
R0 || RP RR R = 1 ⇒ 0 P = 0 ⇒ R0 = 9 RP − R0 || RP + R0 + R0 || RP R0 + RP 10
Uvrstimo li dobiveni rezultat u zahtjev RS + RP || R0 = R0 , dobit ćemo: R0 R0 R0 RP 9 81 9 RS + = R0 ⇒ RS + = R0 ⇒ RS = R0 = RP = 8.1RP R0 R0 + RP 10 10 + R0 9 Sada možemo izračunati tražene otpore: RP =
8 8 R = 4.5k = 2400Ω 15 15
R0 = 9 RP = 21,6kΩ
A/D i D/A konverzija.
311
RS = 8.1RP = 19.44kΩ Za izlazni napon vrijedi sljedeća nadomjesna shema: Rf
UN
UX
IN =
IN
R0
3
A = −∞ +
Uizl
U X −U N U X − 0 U X = = R0 R0 R0
U izl = − I N ⋅ R f + U N = − I N ⋅ R f + 0 = − I N ⋅ R f = −U X ⋅
Rf R0
Ako na ulaz dovedemo broj 100, tada je: U X = U X ,100 + U X ,10 + U X ,1
Theveninov napon koji generira stotica 1 je: U T ,stotica =
U REF ⋅1 . Taj se napon do točke 3 15
prenosi kao:
U X ,100 = U 3 =
U REF R0 || R0 U 9 = REF 15 RP + R0 || R0 15 11
Theveninov napon koji generira desetica 2 je: U T ,desetica = točke 2 prenosi kao: U2 =
U REF ⋅ 2 . Taj se napon do 15
U REF R0 || R0 U 9 ⋅2⋅ = REF ⋅ 2 RP + R0 || R0 15 15 11
a napon U2 naponu UX doprinosi iznosom: U X ,10 = U 2
R0 || RP U 1 9 = REF ⋅ 2 ⋅ RS + R0 || RP 15 11 10
Theveninov napon koji generira jedinica 5 je: U T , jedinica = točke 1 prenosi kao:
U REF ⋅ 5 . Taj se napon do 15
312
U1 =
Zbirka riješenih zadataka
R0 || R0 U REF U 9 ⋅5⋅ = REF ⋅ 5 RP + R0 || R0 15 15 11
Napon U1 naponu U2 doprinosi iznosom: U 2 = U1
R0 || RP U 9 1 = REF ⋅ 5 ⋅ 15 11 10 RS + R0 || RP
a napon U2 naponu UX doprinosi iznosom: U X ,1 = U 2
R0 || RP U 1 1 9 = REF ⋅ 5 ⋅ ⋅ RS + R0 || RP 15 11 10 10
Napon UX jednak je sumi svih doprinosa: U REF 9 U 9 1 U 9 1 ⋅1 + REF ⋅ 2 ⋅ + REF ⋅ 5 ⋅ 15 11 15 11 10 15 11 100 9 1 9 1 U U = REF ⋅ ⋅ (100 ⋅1 + 10 ⋅ 2 + 1 ⋅ 5) = REF ⋅ ⋅ 125 15 11 100 15 11 100 75 = U REF 1100
U X ,125 = U X ,100 + U X ,10 + U X ,1 =
Dok je izlazni napon jednak: U izl ,125 = −U X ,125 ⋅
Rf R0
= −U REF
75 R f 1100 R0
Odavde možemo pročitati Rf: Rf =
| U izl ,125 | 1100 0.5 1100 ⋅ R0 = ⋅ 21.6k = 31.68kΩ U REF 75 5 75
Iz prethodnog razmatranja možemo doći i do općenitog izraza za UX: U X ,125 = U X ,100 + U X ,10 + U X ,1 =
U REF 9 1 ⋅ ⋅ (100 ⋅ A + 10 ⋅ B + 1 ⋅ C ) 15 11 100
kao i izlaznog napona: U izl ,125 = −U X ⋅
Rf R U 9 1 = − REF ⋅ ⋅ (100 ⋅ A + 10 ⋅ B + 1⋅ C ) ⋅ f R0 15 11 100 R0
A/D i D/A konverzija.
313
14.5. Zadatak Kako se zove 10 bitni A/D pretvornik čija je principijelna shema prikazana na slici? Ako je tdb 20 ns, tsetup 20 ns, tls 10 ns, tda 100 ns (vrijeme potrebno za d/a pretvorbu), te tk 50 ns (vrijeme reagiranja komparatora), koja se frekvencija očitavanja uzoraka može postići u najgorem slučaju? Koji je najmanji napon koji sklop može izmjeriti? Poznato je da se na ulaz sklopa mogu dovoditi naponi od 0 do 10 V. Brojilo je izvedeno kao sinkrono, sa serijskim prijenosom. START Q
S uul
CE CP
B
A = −∞ +
BROJILO
R
ud
D/A
CP
Prikazani pretvornik zove se brojeći A/D pretvornik. Dok je bistabil B u stanju 0, brojilo ne broji jer mu je na ulaz za omogućavanje takta (CE, Clock Enable) nula. U trenutku kada dođe impuls za start, brojilo počinje brojati impulse takta. Svaki puta kada se stanje brojila promijeni, D/A pretvornik generira napon ud koji odgovara pohranjenom broju. Taj se napon vodi na (+) stezaljku operacijskog pojačala koje radi kao komparator. Sve dok je ud manji od uul, postupak se nastavlja. Prvi puta kada se dogodi da je ud>uul, na izlazu komparatora pojavljuje se pozitivna naponska razina koja resetira bistabil, i time onemogućava daljnje povećavanja sadržaja brojila. Broj pohranjen u brojilu u tom trenutku odgovara (do na konstantu proporcionalnosti) ulaznom naponu. Ako je maksimalni napon koji sklop može izmjeriti 10 V, taj će napon biti prikazan najvećim brojem koji možemo upisati u brojilo: 210-1. Tada jednom bitu odgovara napon: 10 ub = 10 ≅ 0.009775 V 2 −1 Odredimo maksimalnu brzinu kojom mogu dolaziti impulsi CP. Promatrajmo pojave od trenutka u kojem naiđe padajući brid CPa. Nakon tdb brojilo je prešlo u novo stanje. U tom trenutku kreće rasprostiranje prijenosa, a kako je ono serijsko, trebat će proći još (n-2)tdls (gdje je n broj bitova brojila). Nakon toga potrebno je sačekati još vrijeme postavljanja tsetup, i tada može doći novi CP impuls. Dakle, maksimalna brzina rada 10 bitnog sinkronog brojila sa serijskim prijenosom uz zadana vremena iznosi:
314
Zbirka riješenih zadataka
f cnt ,max =
1 1 1 = = = 8.33MHz t db + (n − 2)t dls + t setup 20n + 8 ⋅10n + 20n 120n
Međutim, kada se nakon tdb pojavi novo stanje brojila, paralelno započinje i proces D/A pretvorbe koji je gotov nakon tda. Zatim je potrebno tk da reagira komparator, i zatim (budući da koristimo sinkroni bistabil) mora proći još tsetup vremena prije no što može naići novi CP impuls. Za obilazak ove staze treba nam dakle: t conv,1 = t db + t da + t k + t setup
pa je maksimalna frekvencija kojom se ovo može događati:
f conv,1 =
1 1 1 = = = 5.26 MHz t db + t da + t k + t setup 20n + 100n + 50n + 20n 190n
Očito je da je najveća frekvencija određena najmanjom dozvoljenom (odnosno najdužom stazom), pa impulsi CPa smiju biti maksimalne frekvencije: f CP , max = min( f cnt , max , f conv,1 ) = 5.26MHz
Najdulje vrijeme pretvorbe dobiva se kada se pretvara maksimalni dopušteni napon, jer tada brojilo mora brojati do kraja. To znači da je za pretvorbu u tom slučaju potrebno potrošiti 2n-1 impulsa takta, pa je maksimalna frekvencija očitavanja u najgorem slučaju jednaka: f ocitavanja, max =
f CP ,max 2 −1 n
=
f CP ,max 2 −1 10
=
5.26 M = 5.15kHz 1023
14.6. Zadatak Potrebno je vrlo često mjeriti ulazni napon koji se mijenja vrlo sporo. Predložiti pretvornik pogodan za ovakav problem. Izračunati maksimalnu frekvenciju CPa, i maksimalnu frekvenciju očitavanja uzoraka u najgorem slučaju. Pogodan je kontinuirano brojeći A/D pretvornik, čija je principijelna shema prikazana na slici u nastavku. Brojilo na svaki impuls CPa ili povećava sadržaj za jedan, ili smanjuje sadržaj za jedan, a smjer je određen izlazom komparatora. Ako trenutno stanje brojila odgovara manjem naponu od ulaznog, tada će na izlazu D/A pretvornika napon ud biti manji od uul, i na izlazu komparatora će biti niska razina, koja odgovara brojanju unaprijed. Ovime će na sljedeći impuls CPa brojilo povećati svoj sadržaj za jedan i time prići bliže stvarnom ulaznom naponu. Ako bi broj zapisan u brojilu odgovarao većem naponu od CPa, tada bi brojilo na sljedeći CP smanjilo svoj sadržaj za 1.
A/D i D/A konverzija.
315
CP
CP
naprijed / / natrag
UP
REVERZIBILNO BROJILO
DN
K
+
uul
D/A KONVERTER
ud
Neka je brojilo izvedeno kao 10 bitno sinkrono sa serijskim prijenosom, i neka su sva vremena ista kao u prethodnom zadatku. Tada je maksimalna frekvencija rada brojila:
f cnt ,max =
1 1 1 = = = 8.33MHz t db + (n − 2)t dls + t setup 20n + 8 ⋅10n + 20n 120n
Kada se nakon tdb pojavi novo stanje brojila, paralelno započinje i proces D/A pretvorbe koji je gotov nakon tda. Zatim je potrebno tk da reagira komparator, i zatim (budući da koristimo sinkrono brojilo) mora proći još tsetup vremena prije no što može naići novi CP impuls (da se stabilizira signal za smjer brojanja). Za obilazak ove staze treba nam dakle: t conv,1 = t db + t da + t k + t setup
pa je maksimalna frekvencija kojom se ovo može događati:
1 1 1 = = = 5.26 MHz t db + t da + t k + t setup 20n + 100n + 50n + 20n 190n Najveća frekvencija CPa određena je najmanjom dozvoljenom frekvencijom (odnosno najdužom stazom), pa impulsi CPa smiju biti maksimalne frekvencije: f conv,1 =
f CP , max = min( f cnt , max , f conv,1 ) = 5.26MHz u
u
u ul d Do razlike u odnosu na prethodni zadatak dolazi se kod određivanja maksimalne frekvencije očitavanja vrijednosti napona. Naime, kako je ulazni napon po Početak definiciji vrlo sporo mijenjajući, jednom kada ga rada t pretvornik stigne, stalno će moći pratiti ispravnu vrijednost, i rezultat će se moći očitavati na svaki CP! Dakle, upravo frekvencijom od 5.26 MHz. Ovaj pretvornik imati će problema samo u dva slučaja: (1) na početku ako ulazni napon nije nula, trebati će određeno vrijeme da se dostigne ulaz, i (2) ako se ulazni napon počne brzo mijenjati, jer ga tada pretvornik neće moći slijediti dovoljno brzo. Slučaj 1 ilustriran je na skici. Na slici se također vidi da
316
Zbirka riješenih zadataka
pretvornik uvijek oscilira oko prave vrijednosti (mijenja se napon koji odgovara vrijednosti jednog bita). Ako se napon naglo promijeni, dobiti će se efekt početka rada gdje brojilo postupno prilazi novoj vrijednosti, ali je za to potrebno određeno vrijeme, pa očitanja u tom trenutku više ne odgovaraju ulaznom naponu. Možemo i procijeniti maksimalnu brzinu promjene ulaznog signala. Neka je naš pretvornik u stanju mjeriti napone od 0 do 10 V. Kako imamo 10 bitova, napon jednog bita je: ub =
10 ≅ 0.009775 V 2 −1 10
i brojilo "ažurira" svoje stanje 5.26M puta u sekundi. To znači da se i ulazni napon smije promijeniti za maksimalno ub svakih 1/5.26M sekundi, što daje promjenu napona od:
∆u ul =
V 0.009775 = 51416.5 1 s 5.26M
što zapravo i nije tako "spora" promjena napona! 14.7. Zadatak
Objasniti princip rada brzog A/D pretvornika i prikazati jednu od mogućih izvedbi. Ako je na raspolaganju 4-bitni A/D pretvornik sa maksimalnim ulaznim naponom od 15 V, a na ulazu je napon od 10.2 V, prikazati tijek pretvorbe ovog napona i rezultat.
Brzi A/D pretvornik poznatiji pod nazivom A/D pretvornik sa sukcesivnom aproksimacijom modifikacija je klasičnih A/D pretvornika s brojilom. Razlika je u tome što brojilo ne broji po jedan, već se ispituje utjecaj svakog bita na rezultat, počev od bita najveće težine. Objasnimo to na primjeru. 4-bitni pretvornik kod kojega je maksimalni ulazni napon jednak 15 V ima napon najmanjeg bita jednak: ub =
15 15 = = 1V 4 2 − 1 15
Rezultat pretvorbe je 4-bitni broj koji je manji ili jednak mjerenome ulaznom naponu. Zapišimo taj broj binarno: b3b2b1b0. Kod brzog A/D pretvornika postupak pretvorbe napona je sljedeći:
A/D i D/A konverzija.
b=1000 ud(b)>uul?
b=1010 gotovo
317
NE
b=1100 ud(b)>uul?
8<10.2!
poništi zadnji podignuti bit b=1010
DA 12>10.2!
b=1011 ud(b)>uul?
poništi zadnji podignuti bit b=1000
NE 10<10.2!
b=1010 ud(b)>uul?
Vidimo, zapravo, da se kod svakog bita (odnosno bistabila koji pohranjuje taj bit) obavljaju sljedeće tri operacije:
2) Ako je izlazni napon preveliki, vrati bistabil u 0
1) Postavi bistabil u 1
3) Prijeđi na sljedeći bistabil, ako postoji
Na ovaj način postupak pretvorbe završava nakon onoliko koraka koliko ima bistabila, dok je kod klasičnih pretvornika s brojilima postupak u najgorem slučaju završavao nakon čak 2n-1 koraka. Jedna moguća principijelna implementacija ovakvog pretvornika prikazana je na sljedećoj slici.
318
Zbirka riješenih zadataka
uul
D/A pretvornik -
+ Clear
K
Q B3
S
Q Cd
Q
R
S
B2
Q Cd
Q
R
S
B1
Q Cd
Q
R
S
B0
Q Cd R
& o0
CP
o0
o1
A i
CP B
C
a1
CE
o1
o2
o2
o3 a0
i
o3 a a1 0
& ≥1 CP
n1
n0
Start
Sklop se sastoji od sljedećih dijelova: D/A pretvornik, 4 SR bistabila s asinkronim ulazom za brisanje koji pohranjuju vrijednost broja koji odgovara ulaznom naponu, dvobitno brojilo koje određuje koji će se bit ispitivati, dva demultipleksora koji signale postavljanja i brisanja usmjeravaju na bistabil indeksiran dvobitnim brojilom, Jonhnsonovog brojila s izlazima A, B i C (koje je izvedeno tako da se osigura siguran start) i nešto dodatne logike koja zaustavlja konverziju. Sklop radi na sljedeći način. Neka je stanje brojila n1 n0=11 (odnosno 3), čime je odabran zadnji bistabil (koji čuva bit najmanje težine), i neka je na B izlazu 1. Tada NI sklop na ulazu ima sve-jedan stanje, pa je izlaz NI sklopa 0. Ako je na Start ulazu također 0, na CE (Clock Enable) se dovodi 0 pa Johnsonovo brojilo ostaje u stanju 010 i sklop miruje. Ovo je stanje kada konverzija još nije započela. Sada se svi bistabili mogu poništiti djelovanjem na asinkroni ulaz Clear'. Neka sada Start ode kratkotrajno u 1. Nailaskom CPa Johnsonovo brojilo prelazi u stanje 001, čime se na izlazu C dobije visoka razina. Na taj rastući brid reagira dvobitno brojilo i prelazi u stanje 00, čime se odabire bistabil B3. Kako je sada više dvobitno brojilo nije u stanju 11(2), NI sklop na izlazu daje 1, i ulaz CE dovodi se 1 zbog NI sklopa pa Start može prestati djelovati. Na sljedeći CP Johnsonovo brojilo prelazi u stanje 100, čime se na izlazu A generira 1. Ta jedinica vodi se preko demultipleksora na ulaz S bistabila B3 i uzrokuje njegovo postavljanje. Time smo na ulaze D/A doveli broj 8, pa na izlazu ud imamo 8 V. Kako je 8<10.2, na izlazu komparatora imamo logičku 0. Na sljedeći CP Johnsonovo brojilo prelazi u stanje 010, čime se na B pojavljuje 1. Time nestaje 1 sa ulaza S bistabila B3, i dolazi izlaz komparatora na ulaz R. Kako je on 0, bistabil se ne resetira. Na sljedeći CP Johnsonovo brojilo prelazi u stanje 001 (1 na izlazu C). Rastući brid koji se time dobije okida dvobitno brojilo i ono prelazi u stanje 01, čime se selektira bistabil B2. Sljedeći CP Johnsonovo brojilo prebacuje u stanje 100, i uzrokuje postavljanje B2. No kako je sada na ulazu D/A broj 12 (1100), ud je veći od 10.2 V i na izlazu komparatora dobije se 1. Na sljedeći CP Johnsonovo brojilo prebacuje u stanje 010, i uzrokuje reset B2 (na ulaz R dovodi se jedinica iz komparatora koja resetira bistabil). Na sljedeći CP Johnsonovo brojilo prelazi u stanje 001 (1 na izlazu C). Rastući brid koji se time dobije okida dvobitno brojilo i ono prelazi u stanje
A/D i D/A konverzija.
319
10, čime se selektira bistabil B1. Sljedeći CP Johnsonovo brojilo prebacuje u stanje 100, i uzrokuje postavljanje B1. Na izlazu D/A time se dobije napon 10 V koji je manji od 10.2 V pa je izlaz komparatora 0. Na sljedeći CP Johnsonovo brojilo prebacuje u stanje 010, no kako se na ulaz R od B1 dovodi 0, ništa se ne događa. Sljedeći CP Johnsonovo brojilo prebacuje u stanje 001 (1 na izlazu C). Rastući brid koji se time dobije okida dvobitno brojilo i ono prelazi u stanje 11, čime se selektira bistabil B0. Sljedeći CP Johnsonovo brojilo prebacuje u stanje 100, i uzrokuje postavljanje B0. Na izlazu D/A time se dobije napon 11.2 V koji je veći od 10.2 V pa je izlaz komparatora 1. Na sljedeći CP Johnsonovo brojilo prebacuje u stanje 010, a kako se time na ulaz R od B0 dovodi 1, B0 se resetira. Istodobno na ovo stanje reagira i NI sklop (dvobitno brojilo je u stanju 11, i B=1) i na izlazu daje 0 čime se na CE dovodi 0 (jer je po pretpostavci Start odavno završio). Ovime se blokira daljnje odbrojavanje Johnsonovog brojila, i postupak konverzije je gotov. 14.8. Pismeni ispit, 10. 10. 2003, 6. zadatak Zadan je sklop prema slici. Poznato je: R=2kΩ, Rf=1,12kΩ. Napon napajanja kao i izlazi digitalnih sklopova u visokoj razini iznose 5V. Napon niske razine iznosi 0V. Nacrtati dijagram izlaznog napona u ovisnosti o signalu takta kroz 16 perioda. Pretpostaviti da se svi bistabili u digitalnim sklopovima uključenjem napona resetiraju, te da se napon na izlazu operacijskog pojačala može mijenjati beskonačno brzo.
Rf 8R
A = −∞ +
4R 2R
Uizl
R
CP
+UCC A
Sin
B
C
a 1 i0 a0
i1 i2 i3 MUX y
Da bismo rješili ovaj zadatak, moramo najprije analizirati rad sekvencijskog dijela sklopa. Jedini sekvencijski dio čini posmačni registar s 3 izlaza, što znači da ćemo imati maksimalno 8 stanja sustava. Proglasimo izlaz A izlaz najviše težine. Potrebno je napraviti tablicu prijelaza stanja. Tablicu ćemo odmah proširiti svim potrebnim ulazima, kao i binarnim brojem koji se dovodi na ulaz D/A pretvornika. Tu je potrebno uočiti da se kao najviši bit broja za D/A pretvorbu (koji se dovodi na otpor R) dovodi bit najmanje težine iz posmačnog registra (uz prethodni dogovor da je izlaz A najviše težine). Tada je tablica prikazana u nastavku:
320
Zbirka riješenih zadataka
Trenutno stanje A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
Ulazi mux-a i1/i2 1 0 1 0 1 0 1 0
a1 0 0 0 0 1 1 1 1
a0 0 0 1 1 0 0 1 1
Izlaz y 1 1 1 0 1 0 0 0
Sljedeće stanje A 1 1 1 0 1 0 0 0
B 0 0 0 0 1 1 1 1
C 0 0 1 1 0 0 1 1
Broj za D/A n3 0 1 0 1 0 1 0 1
n2 0 0 1 1 0 0 1 1
n1 0 0 1 1 0 0 1 1
Br. n0 0 0 0 0 1 1 1 1
n 0 8 6 14 1 9 7 15
Prikažimo i dijagram promjene stanja:
0
4
2
6
5
3
1
7
Iz dijagrama je vidljivo da sklop nema siguran start, niti je otporan na pogreške u radu. Naime, ukoliko se po uključenju sklop nađe u stanju 2 ili u stanju 5, nikada neće izaći iz ciklusa (2,5). Isto tako, ukoliko tijekom rada pod utjecajem pogreške sklop pređe u stanje 2 ili 5, ostati će zaglavljen u ciklusu (2,5). Po pretpostavci zadatka, sklop se po uključenju nalazi u stanju 0, pa je dijagram izlaznog napona prikazan u nastavku. Izlazni napon kod zadanog D/A pretvornika računa se po formuli: U izl = − R f ⋅
U REF ⋅ n = −0.35 ⋅ n 8R
A/D i D/A konverzija.
−
321
U izl 0.35 16 14 12 10 8 6 4 2
−
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16
n
U izl 0.35 16 14 12 10 8 6 4 2 n
ZADACI ZA VJEŽBU 1.
2.
Konstruirati D/A pretvornik po uzoru na zadatak 14.4 koji na ulaz dobiva troznamenkasti heksadekadski broj. Ako je najmanji otpor kod težinskog pretvornika (jedna znamenka) jednak 1 kΩ, a izlazni napon koji odgovara broju 1E7(16) na ulazu pretvornika iznosi -0,5946V, izračunati sve ostale otpore, kao i maksimalnu amplitudu izlaznog napona pretvornika. UREF iznosi +5V. Napomena: omjer najmanjeg i najvećeg otpora kod težinskog dijela pretvornika ne smije biti veći od 8. Neki analogni signal potrebno je konvertirati u ekvivalentnu digitalnu vrijednost koristeći A/D konvertor sa sukcesivnom aproksimacijom. Očekivana vrijednost ulaznog napona je u granicama 0V do 10V. Ako razlika između očitanja i stvarne vrijednosti nikada ne smije prijeći 0.5% maksimalne analogne vrijednosti, koliko bitova treba upotrijebiti? Grafički prikazati vrijednost apsolutne i relativne pogreške navedenog A/D
322
Zbirka riješenih zadataka
konvertora za digitalne izlaze u rasponu od 20 do 40. Vrijednost relativne pogreške računati uz pomoć izraza: Rel_err = (ispravna_vrijednost - očitana_vrijednost) / ispravna_vrijednost * 100 [%]. Prikažite postupak pretvorbe ulaznog napona od 5,17734 V. Koliko iznose apsolutna i relativna pogreška pretvorbe za taj slučaj?
Integrirani logički sklopovi.
15.
323
Integrirani logički sklopovi. 15.1. Zadatak Nacrtati osnovni sklop porodice RTL. Koju funkciju obavlja taj sklop i kako se ona ostvaruje? Poznati su sljedeći podaci: napon napajanja UCC=6 V, tranzistori su silicijski s minimalnim faktorom istosmjernog strujnog pojačanja hFE=25 (reverzna struja zasićenja ICB0 može se zanemariti), UCEzas=0.3 V, kolektorski otpor iznosi RC=1 kΩ a bazni otpori iznose RB=10 kΩ. Odredite: a) Faktor grananja n b) Faktor grananja n, uz tolerancije otpora 20%
Osnovni sklop porodice RTL (Resistor-Transistor Logic) je NILI sklop, koji se temelji na paralelnom radu tranzistora, i prikazan je na sljedećoj slici: +UCC
RC f = A+ B
RB
A
RB
B
a) Faktor grananja bez tolerancija otpora Da bismo mogli odrediti faktor grananja, moramo pretpostaviti da se na izlaze ovoga sklopa spajaju ulazi identičnog sklopa, kao što je prikazano na sljedećoj slici. Promotrimo rad lijevog sklopa. Kada je na barem jednom od ulaza (A ili B) visoka razina, tada će taj tranzistor (ili oba ako su oba ulaza na visokoj razini) provesti, i izlaz f bit će pritegnut na nisku razinu. No kada je izlaz f na niskoj razini, tada tranzistor idućeg stupnja čija je baza spojena na taj izlaz neće voditi, i taj stupanj neće opterećivati dodatnom strujom tranzistor u prvom sklopu koji je proveo. Iz ovoga slijedi da nema nikakvih ograničenja na broj sklopova koji se mogu spojiti na izlaz. Promotrimo sada i preostali slučaj. Kada je na oba ulaza (A i B) niska razina, tada niti jedan tranzistor ne vodi, te je izlaz f sklopa spojen na visoku naponsku razinu. Visoka razina na izlazu f znači da će
324
Zbirka riješenih zadataka
tranzistori sljedećeg stupnja čiji su ulazi spojeni na taj izlaz provesti. Struja koja će poteći iz promatranog sklopa tada se dijeli za struje baza svih tranzistora. +UCC
RC
+UCC
RB
RC
RB
f
A'
RB
A
B'
RB
B
Treba uočiti da struja u tom slučaju teče iz UCC kroz RC na izlaz f, i dalje se dijeli kroz sve tranzistore sklopova sljedećeg stupnja spojene na taj izlaz. Što je ta struja veća, veći je pad napona na RC, i napon izlaza f pada. Ukoliko je previše sklopova spojeno na taj izlaz, napon na f će previše pasti, i struja više neće biti dovoljna za držanje svih tranzistora u zasićenju, čime se dobiva neispravan rad. Vidimo dakle da ovaj slučaj postavlja ograničenje na broj ulaza koje spajamo na promatrani izlaz. Sklop u ovom slučaju izgleda kako je prikazano na sljedećoj slici. Kako tranzistori u sljedećem stupnju vode (jer je f=1), njihova maksimalna struja kolektora određena je s:
I Czas =
U CC − U CEzas = 5.7mA RC
Izraz je dobiven uz pretpostavku da vodi samo jedan od tranzistora u sklopu (jer bi se u suprotnom slučaju struja dijelila na pola kroz svaki tranzistor). Struja baze potrebna za održavanje izračunate kolektorske struje određena je uvjetom zasićenja: I Bzas ≥
I Czas I 5. 7 m ⇒ I Bzas = Czas = = 228µA hFE hFE 25
Integrirani logički sklopovi.
325 +UCC
RC
IC
+UCC
I
RC
f
RB A
RB
IB
RB
A'
(n − 1) I B
B' +UCC
RC
n
RB
IC
B
RB
RB
A' '
B' '
Nadomjesna shema: I
f RC
RB
RB
+UCC
+UBEzas
+UBEzas
n
Napon U možemo izračunati prema Milmannu: U CC U BEzas U U CC U + + " + BEzas + n BEzas R RB RB R RB U= C = C 1 1 1 1 n + +"+ + RC RB RB RC R B
U
326
Zbirka riješenih zadataka
Struja IB tada je:
U CC U + n BEzas RC RB − U BEzas U CC U BEzas 1 n + − U − U BEzas RC R B RC RC U − U BEzas IB = = = = CC RB RB RB RB + nRC +n RC U − U BEzas − I B RB = 13.25 n = CC I B RC Slijedi da je maksimalni broj ulaza koji se smije priključiti na izlaz f jednak 13. b) Faktor grananja uz tolerancija otpora Odredimo ponovno maksimalnu struju kolektora tranzistora sljedećeg stupnja: I Czas =
U CC − U CEzas U CC − U CEzas = = 7.125mA RC RC (1 − 0.2)
Struja baze potrebna za održavanje izračunate kolektorske struje određena je uvjetom zasićenja: I Bzas ≥
I Czas I 7.125m ⇒ I Bzas = Czas = = 285µA hFE hFE 25
Nadomjesna shema ista je kao i prije. Razlika je samo u tome što svi otpori imaju svoje tolerancije, pa treba odrediti kada će nastupiti najgori slučaj. To će biti kada jedan otpor baze bude najveći, a svi ostali otpori baza najmanji, jer će tada kroz najveći otpor teći najmanja struja (koja možda neće biti dovoljna da tranzistor održava u zasićenju). Možemo pisati: U CC U=
RC
+
U BEzas RB
+
U BEzas U + " + BEzas RB RB
1 1 1 1 + + +"+ RB RC R B R B
U CC =
RC
+
U BEzas RB
+ (n − 1)
U BEzas RB
1 1 n −1 + + RB RC RB
Struja baze tranzistora koji ima najveći bazni otpor tada je:
Integrirani logički sklopovi.
U CC RC IB =
=
U − U BEzas RB
+
327
U BEzas RB
+ (n − 1)
U BEzas RB
1 1 n −1 + + RB RC RB
=
− U BEzas
U CC =
RB
RC
−
U BEzas RC
RB R + 1 + (n − 1) B RB RC
U CC − U BEzas RB + RC + (n − 1) RC
RB RB
pa je n određen izrazom:
n=
(
U CC − U BEzas − I B RB + RC I B RC
RB RB
) = 2.998
Dakle, faktor grananja u ovom slučaju iznosi svega 2. 15.2. Zadatak Nacrtati DTL sklop u diskretnoj izvedbi. Koju funkciju obavlja sklop? Neka je k takvih sklopova s otvorenim kolektorom spojeno u spojeni I, i neka je na taj izlaz spojeno n ulaza istih sklopova. Poznati su sljedeći podaci: napon napajanja UCC=5V, ulazna struja DTL sklopa IIL = 0.5 mA, struja baze izlaznog tranzistora iznosi IBzas = 0.1 mA. Minimalni faktor istosmjernog pojačanja tranzistora je hFE = 40. Odrediti izraz za minimalni iznos vanjskog otpora da bi sklop radio ispravno. Koliko iznosi taj otpor za slučaj k=6, n=4?
Shema DTL sklopa u diskretnoj izvedbi za dva karakteristična slučaja: +UCC
I IL
RC
R1
RC
R1
f=V
R2 A=N B=V
+UCC
R2
I Bzas
f=N
A=V R3 -UBB
Struja teče iz ulaza sklopa prema van. Sklop obavlja logičku funkciju NI.
B=V
R3 -UBB
Nema struje prema van iz ulaza sklopa.
328
Zbirka riješenih zadataka
U slučaju da su zadani sklopovi s otvorenim kolektorom spojeni kako je opisano, shema je: +UCC +UCC
R
I IL
RC
R1 R2
f=V
sklop 1
R3 -UBB +UCC
sklop 2
I IL
RC
R1 R2
f=V
R3
sklop k
-UBB
k
n
Ako su svi izlazni tranzistori zatvoreni, tada kroz R ne teče struja. Ako neki od izlaznih tranzistora vodi, tada mu je struja baze IB = 0.1 mA, pa je maksimalna struja kolektora izlaznog tranzistora jednaka: I C max = hFE I B = 40 ⋅ 0.1m = 4mA Kada nastupa najgori slučaj? Ako više tranzistora vodi, tada će se struja koja dolazi iz ulaza sljedećeg stupnja, kao i kroz otpor R dijeliti kroz te tranzistore. Najgori slučaj je ako samo jedan izlazni tranzistor vodi, jer će tada on sam morati provesti svu struju i ostati u zasićenju (a struja baze mu je ograničena). U tom slučaju vrijedi: IC =
U CC − U CEzas + n ⋅ I IL R
Odavde možemo izračunati R:
Rmin =
U CC − U CEzas I C max − n ⋅ I IL
Za slučaj k=6, n=4 imamo:
Integrirani logički sklopovi.
Rmin =
329
5 − 0.3 = 2.35kΩ 4 m − 4 ⋅ 0. 5m
Ujedno vidimo i da broj izlaza koji je spojen zajedno ne utječe na iznos otpora R. 15.3. Zadatak Za TTL sklopove poznati su sljedeći podaci: IOL=16mA, IOH=250µA, IIL=1.6mA, IIH=40µA, UOHmin=2.4V, UOLmax=0.4V. Treba odrediti izraz za iznos vanjskog otpora R tako da se k izlaza sklopova s otvorenim kolektorom može spojiti u spojeni I, i zatim na tu točku priključiti n ulaza. Odrediti iznos R za slučaj k = 5, n = 4.
Uvijek moramo analizirati najnepovoljnije slučajeve. Neka je spojeni I na visokoj razini. Kako su kod spojenog I sklopovi spojeni u paralelu, napon u toj točki bit će određen najmanjim naponom koji drži neki izlaz. Tada u izlaze sklopova u najgorem slučaju ulazi struja IOH, a u ulaze sklopova struja IIH. Otpor R mora biti takav da propusti potrebnu struju, pa je njegov maksimalni iznos jednak:
R=
U CC − U OH min k ⋅ I OH + n ⋅ I IH +UCC
R I
&
&
&
&
&
&
Promotrimo sada slučaj kad je spojeni I na niskoj razini. Tada će maksimalni napon spojenog I biti upravo UOLmax. Tada će sva struja ulaziti u izlaze izlaznih sklopova, pa najgori slučaj nastupa kada je samo jedan sklop stvarno u niskoj razini, jer će on tada morati progutati svu struju:
330
Zbirka riješenih zadataka +UCC
R I
&
& &
&
U izlaz tog jednog sklopa tada ulazi struja: I* =
U CC − U OL max + n ⋅ I IL R
Kako izlazni sklop može maksimalno progutati struju IOL, struja I* ograničena je ovom strujom, pa je minimalni otpor R koji je potreban kako bi struja ostala u dozvoljenim granicama jednak: U − U OL max R = CC I OL − n ⋅ I IL Zašto je R određen razlikom U CC − U OL max a ne gledamo +UCC najnepovoljniji slučaj koji bi generirao najveću struju (pa bi R brojnik trebao biti maksimalan, dakle U CC )? Radi se o tome da je tranzistor aktivan element pa kod njega ne možemo samo tako izlazni napon uzeti kako želimo i pri tome držati struju po I = konst B volji veliku. Pogledajmo jednostavan sklop od jednog U CE tranzistora i jednog otpornika uz konstantnu baznu struju. Kako se mijenja izlazni napon ( U CE ) u ovisnosti o otporu R? Neka je iznos otpora R jednak 0. Tada je sav napon U CC na kolektoru tranzistora, pa vrijedi U CE = U CC . Kolika je tada struja kolektora? Kako je tranzistor u NAPu (normalnom aktivnom području) struja kolektora određena je strujom baze i za faktor istosmjernog pojačanja veća od bazne struje, pa iznosi (u našem slučaju kod TTL sklopa) upravo I OL , kao što je prikazano na slici.
Integrirani logički sklopovi.
331
U CE [V ] NAP!
U CC
I C = hFE ⋅ I B = I OL U CE = U CC − I C ⋅ R Zasićenje
I C ≤ hFE ⋅ I B = I OL U CE = U CEzas
0.4V 0.1V
R[Ω] 0Ω
R>0
Porastom vrijednosti otpora raste pad napona na njemu i smanjuje se napon U CE . Međutim, treba uočiti da je struja kolektora i dalje konstantna i određena izrazom I C = hFE ⋅ I B = I OL . Međutim, do kada možemo povećavati R? Ako bi R postao jako veliki, tada bi se prema jednadžbi U CE = U CC − I C ⋅ R moglo dogoditi da umnožak kolektorske struje i otpora bude veći od U CC , pa bi U CE postao negativan. Međutim, to se fizikalno ne može dogoditi, jer kako napon U CE pada prema nuli, tranzistor polako ulazi u zasićenje, i napon U CE neće ići do nule, već će u dubokom zasićenju biti oko 0.1V. No kako jednadžba izlaznog kruga i dalje mora vrijediti ( U CE = U CC − I C ⋅ R ), to će sada struja kolektora početi padati, pa će vrijediti I C ≤ hFE ⋅ I B = I OL . Kako u našem slučaju tražimo minimalni iznos otpora, promatrajmo sada proces naopačke. Uz jako velike otpore nema problema. Smanjivanjem otpora polako izlazimo iz zasićenja i napon U CE počinje rasti. U našem slučaju dozvoljeno je da izlazni napon poraste do maksimalno UOLmax=0.4V, i u toj točki treba izračunati vrijednost otpora. Za konkretni slučaj k = 5, n = 4 slijedi:
R=
U CC − U OH min = 1.84kΩ k ⋅ I OH + n ⋅ I IH
R=
U CC − U OL max = 0.479kΩ I OL − n ⋅ I IL
pa možemo uzeti npr. otpor od 1kΩ.
332
Zbirka riješenih zadataka
15.4. Zadatak
Nacrtati standardni TTL. Koju funkciju ostvaruje sklop? Koji su dijelovi sklopa? Analizirati rad sklopa (bez opterećenja i sa opterećenjem identičnim sklopovima). Analizirati spojeni I izveden ovim sklopovima.
Standardni TTL sklop prikazan je na slici. +UCC 5V
R1
4kΩ
R2 1.62kΩ
R4 130Ω Tr4
A B
Tr1
Tr2
f = AB
D Tr3
R3 1kΩ
Sklop ostvaruje funkciju NI. Sastoji se od tri dijela: ulaznog I sklopa, međustupnja (obrtač faze) i izlaznog stupnja ("totemski stup"). Ulazne diode služe za uklanjanje negativnih napona nastalih uslijed refleksija u sustavu. Promotrimo slučaj kada su oba ulaza na visokoj naponskoj razini. Tr1 se tada nalazi u inverznom području, a Tr2 i Tr3 u zasićenju. Očekujemo da će Tr4 biti u zapiranju. U B 4 = U BEzas 3 + U CEzas 2 = 0.75 + 0.2 = 0.95V U C 3 = U CEzas 3 = 0.2V Da bi tranzistor Tr4 vodio (ili barem došao do ruba vođenja), UBE4 mora biti barem Uγ=0.65V, isto kao i UD. Slijedi da bi UB4-UC3 moralo biti veće ili jednako od Uγ+Uγ=1.3V. No upravo smo pokazali da je UB4-UC3=0.95-0.2=0.75V što je manje od potrebnih 1.3V, pa zaključujemo da je Tr4 stvarno u zapiranju. Što bi bilo da nema diode D? Tada bi napon UB4-UC3=0.75V bio veći od napona Uγ i tranzistor Tr4 također bi vodio! Dakle, dioda D potrebna je zato da drži tranzistor Tr4 isključenim. Pogledajmo sada što se događa ako je barem jedan od ulaza spojen na nisku naponsku razinu (npr. A). Kako identičan sklop pobuđuje ulaz sklopa, niskom ulaznom naponu odgovara napon UCEzas3=0.2V. Tada je tranzistor Tr1 duboko u zasićenju (napon UCEzas1=0.1V), pa je napon UB2 jednak: U B 2 = U C 1 = uul + U CEzas1 = U CEzas 3 + U CEzas1 = 0.2 + 0.1 = 0.3V Da bi Tr2 došao na rub vođenja, mora i Tr3 biti na rubu vođenja, pa bi napon baze tranzistora Tr2 trebao biti barem Uγ+Uγ=1.3V. No upravo smo izračunali da je taj napon
Integrirani logički sklopovi.
333
svega 0.3V što nije dovoljno da provede serija tranzistora Tr2 i Tr3, pa su oni sigurno u zapiranju. Pretpostavimo sada da izlaz sklopa nije opterećen. Tada je struja baze IB4 = 0, nema pada napona na otporu R2 te je UB4=UCC. Bitno je uočiti da zbog nepostojanja opterećenja izlaza izlazna je struja jednaka 0, pa Tr4 nije u zasićenju (unatoč visokom naponu baze) već je na rubu zapiranja i aktivnog područja. Tada je UBE4 isto kao i UD jednako Uγ. Izlazni napon tada je: U izl = U CE 3 = U B 4 − U BE 4 − U D = U CC − U γ − U γ = 5 − 0.65 − 0.65 = 3.7V
Sada je očito da je izlazni napon čak i bez opterećenja izlaza manji od UCC. Ako izlaz sklopa opteretimo sa n ulaza (pretpostavimo da je IIH=100µA, i neka bude n=10, a hFE barem 50), tada tranzistor Tr4 više neće biti na rubu aktivnog područja i zapiranja, već će ući u aktivno područje (naime, sada će moći poteći struja baze i kolektora Tr4). Struja IB4 na otporu R2 stvarati će pad napona i umanjiti napon baze Tr4 (ali neznatno): U B 4 = U CC − I B 4 ⋅ R2 Izlazna struja biti će jednaka: I izl = n ⋅ I IH = 10 ⋅ 100µ = 1mA Kako je to ujedno i emiterska struja Tr4, bazna struja bit će hFE puta manja, pa vrijedi:
U B 4 = U CC − I B 4 ⋅ R2 = U CC −
I izl 1m ⋅ R2 == 5 − ⋅1.62k = 5 − 32.4mV = 4.9676V hFE 50
Tada je izlazni napon: U izl = U B 4 − U BE 4 zas − U D = 4.9676 − 0.7 − 0.7 = 3.5676V
Vidimo dakle da izlazni napon vrlo malo ovisi o opterećenju izlaza (naime, u primjeru smo izlaz opteretili s čak 10 ulaza!). Kada sklop prelazi iz stanja u kojem je izlaz nizak, u stanje u kojem je izlaz visok, postoji kratkotrajna pojava zbog činjenice da se tranzistor Tr4 prije uključi no što se Tr3 isključi. Zbog toga jedno kratko vrijeme (cca 2 ns) teče struja:
I=
UCC − U CE 4tas − U D − U CE 3 zas 5 − 0.3 − 0.7 − 0.3 = = 28.5mA R4 130
Analiza spojenog I Neka jedan sklop na izlazu daje visoku naponsku razinu (lijevi sklop), a drugi nisku (desni).
334
Zbirka riješenih zadataka
+UCC 5V
R1
4kΩ
R2 1.62kΩ
5V
R4 R4 130Ω 130Ω Tr4
A B
Tr1
Tr2
D Tr3
Tr3
R3 1kΩ
Lijevi Tr3 biti će u zapiranju, no desni će voditi i zatvoriti će se strujni krug UCC – R4 – Tr4 – D – Tr3 – masa. Struja koja će poteći: U CC − U CE 4 zas − U D − U CE 3 zas 5 − 0.2 − 0.7 − 0.2 3.9 = = = 30mA R4 130 130 Struja od 30 mA u relativno bi kratkom periodu uzrokovala termičko uništenje tranzistora, pa se zbog toga spojeni I ne smije izvoditi s standardnim TTL sklopom! I=
15.5. Zadatak Nacrtati prijenosnu karakteristiku standardnog TTLa.
Promatramo NI sklop u funkciji invertora. Kada je Uul=0V: U B 2 = U C 1 = uul + U CEzas1 = U CEzas1 = 0.1V Da bi Tr2 došao na rub vođenja, mora i Tr3 biti na rubu vođenja, pa bi napon baze tranzistora Tr2 trebao biti barem Uγ+Uγ=1.3V. No upravo smo izračunali da je taj napon svega 0.3V što nije dovoljno da provede serija tranzistora Tr2 i Tr3, pa su oni sigurno u zapiranju. Pretpostavimo sada da izlaz sklopa nije opterećen. Tada je struja baze IB4 = 0, nema pada napona na otporu R2 te je UB4=UCC. Bitno je uočiti da zbog nepostojanja opterećenja izlaza izlazna je struja jednaka 0, pa Tr4 nije u zasićenju (unatoč visokom naponu baze) već je na rubu zapiranja i aktivnog područja. Tada je UBE4 isto kao i UD jednako Uγ. Izlazni napon tada je: U izl = U CE 3 = U B 4 − U BE 4 − U D = U CC − U γ − U γ = 5 − 0.65 − 0.65 = 3.7V
Integrirani logički sklopovi.
335
Porastom ulaznog napona prva se promjena događa kada Tr2 počinje voditi (dolazimo do točke A). Tada na bazi Tr2 mora biti napon UB2 jednak Uγ, pa je na ulazu potreban napon: U ul = U γ − U CEzas1 = 0.65 − 0.1 = 0.55V
Sve do tog napona izlaz je bio nepromjenjen (3.7V), i napon UB4 bio je jednak UCC. Kako sada Tr2 počinje voditi, pada napon baze UB4, što direktno smanjuje i izlazni napon (idemo prema točki B). Nova prekretnica događa se u trenutku kada i Tr3 počinje voditi (točka B). Tada je i njegov UBE3 jednak Uγ, što znači da je odgovarajući ulazni napon bio: U ul = U BE 2 zas + U BE 3 − U CEzas1 = U BE 2 zas + U γ − U CEzas1 = 0.75 + 0.65 − 0.1 = 1.3V
Struja kroz R3 tada je: I R3 =
U BE 3 U γ 0.65 = = = 0.65mA R3 R3 1k
Otprilike ta ista struja teče i kroz otpor R2, pa izlazni napon jednak: U izl = U CE 3 = U B 4 − U BE 4 − U D = U CC − I R 3 R2 − U γ − U γ
= 5 − 0.65m ⋅1.62k − 0.65 − 0.65 = 2.647V Napon baze UB4 iznosi: U B 4 = U CC − I R 3 R2 = 2.647 + 0.65 + 0.65 = 3.947V
Daljnjim porastom ulaznog napona raste struja kroz R2 i ruši napon UB4; Tr4 se isključuje, Tr2 i Tr3 idu u zasićenje (prema točki C). U točki C Tr4 je isključen. Napon UCE1 iznosi 0V, pa je ulazni napon kod kojega se ovo dogodi jednak: U ul = U BE 2 zas + U BE 3 zas = 0.75 + 0.75 = 1.5V Izlazni napon tada je: U izl = U CE 3 = 0.2V i dalje ostaje nepromijenjen.
336
Zbirka riješenih zadataka
Tr4 vodi Tr2, Tr3 u zapiranju
uizl [V] 4
Tr2 vodi Tr3 ne vodi
3.7 V
A
2.647 V
B
3
Tr2 u zasićenju Tr3 vodi (ide u zasićenje) Tr4 ide u zapiranje
2
Tr2, Tr3 u zasićenju Tr4 u zapiranju
1 C 0.2 V
0
2 0.55 1 1.3 1.5
3.7 4 uul [V]
3
15.6. Zadatak Prikazati TTL sklop s tri stanja. Prikazati simbol sklopa. Objasniti način rada.
Sklop s tri stanja prikazan je na slici.
+UCC 5V R4
R2 R1
Tr4 A B
Tr1
Tr2
f = AB
D Tr3
R3 D' EN
Integrirani logički sklopovi.
337
Kada je ulaz EN na nuli, sklop se ponaša kao "obični" standardni TTL sklop. Kad je EN na visokoj razini, tranzistor provede i uzrokuje zatvaranje Tr2 (što zatvori i Tr3) i Tr4. Izlaz f tada je izoliran i od visoke, i od niske razine. Simbol sklopa je: & EN
15.7. Zadatak Prikazati i objasniti opću strukturu CMOS sklopa. Izvesti sklopove koji ostvaruju: a) f = A b) f = A + B c) f = AB d) f = A B + C e) f = A B + (C + D ) E
Opća struktura CMOS sklopova prikazana je na slici. +UDD
Pull Up Network (PUN)
f X1 Pull Down Network (PDN) Xn
Sklop se sastoji od dva dijela: mreže za pritezanje na +UDD (PUN), i mreže za pritezanje na masu (PDN). Ove dvije mreže uvijek ostvaruju komplementarne funkcije, tako da ili PUN priteže izlaz na UDD, ili PDN priteže izlaz na masu. U svakom slučaju, nikada obje mreže nisu aktivne (jer su komplementarne), pa nikada ne teče struja iz UDD ka masi kroz njih. Zbog toga ovi sklopovi troše vrlo malo. PUN mreža ostvaruje se PMOS tranzistorima, a PDN mreža NMOS tranzistorima. Koristiti ćemo sljedeće simbole NMOSa i PMOSa:
338
Zbirka riješenih zadataka
NMOS
PMOS
Rad mreža možemo si pojednostavljeno predočiti sljedećim ekvivalentnim shemama: +UDD
+UDD
f=0
f=1
Kada f treba biti 1, izlaz se kratko spaja na napajanje, a otpaja od mase.
Kada f treba biti 0, izlaz se kratko spaja na masu, a otpaja od napajanja.
a) Invertor Funkcija je zadana izrazom f = A . Ovaj izraz određuje kada je vrijednost funkcije 1, dakle određuje PUN mrežu. Kako je PUN sastavljen od PMOSa koji vodi kada je na upravljačkom ulazu (G) niska razina, možemo dovesti direktno A (jer tranzistor i treba provesti kada je A nisko da izlaz spoji na UDD). PDN mora ostvarivati komplement funkcije, dakle: f = A = A . No kako je PDN sastavljen od NMOSa koji vodi kada mu je na upravljačkoj elektrodi visoka razina, možemo na njegov ulaz dovesti direktno A (jer PDN mora izlaz pritegnuti na masu kada je A visoko). Shema sklopa:
+UDD
Tr1
f =A A
Provjerimo da li sklop radi dobro:
Tr2
Integrirani logički sklopovi.
339
A nisko visoko
Tr1 vodi ne vodi
Tr2 ne vodi vodi
f UDD 0
Interpretacija u pozitivnoj logici: A 0 1
f 1 0
A 1 0
U tablici je napisana očekivana vrijednost funkcije (dakle, komplement) i stvarna vrijednost funkcije. Vidi se da je dobivena funkcija upravo A . b) Nili Funkcija je zadana izrazom f = A + B . Ovaj izraz određuje kada je vrijednost funkcije 1, dakle određuje PUN mrežu. Kako je PUN sastavljen od PMOSa koji vodi kada je na upravljačkom ulazu (G) niska razina (pomozimo si na sljedeći način: varijabla je u logičkoj nuli onda kada je komplement 1; zato je pogodno funkciju napisati preko komplemenata varijabli), primjenimo DeMorgana: f = A+ B = A⋅B
Vidimo da je funkcija 1 onda kada je A = 1 I B = 1 . I funkciju ostvariti ćemo serijskim povezivanjem tranzistora u PUNu, a na ulaze dvaju tranzistora dovodimo direktno varijable A i B. PDN mora ostvarivati komplement funkcije, dakle:
f = A + B = A + B . Kako je PDN sastavljen od NMOSa koji vodi kada mu je na upravljačkoj elektrodi visoka razina, i budući da imamo funkciju napisanu direktno preko varijabli (a ne komplemenata), na ulaze tranzistora u PDNu dovesti ćemo direktno varijable, a tranzistorima moramo ostvariti ILI funkciju – što ćemo dobiti paralelnim povezivanjem tranzistora. Shema sklopa prikazana je na slici.
Provjerimo da li sklop radi ispravno:
+UDD
Tr1
Tr2
f = A+ B A
Tr3
B
Tr4
340
Zbirka riješenih zadataka
A nisko nisko visoko visoko
B nisko visoko nisko visoko
Tr1 vodi vodi ne vodi ne vodi
Tr2 vodi ne vodi vodi ne vodi
Tr3 ne vodi ne vodi vodi vodi
Tr4 ne vodi vodi ne vodi vodi
f UDD 0 0 0
Interpretacija u pozitivnoj logici: A 0 0 1 1
B 0 1 0 1
A+ B 1 0 0 0
f 1 0 0 0
Iz tablice se vidi da je dobivena funkcija upravo f = A + B . c) Ni Funkcija je zadana izrazom f = AB . Ovaj izraz određuje kada je vrijednost funkcije 1, dakle određuje PUN mrežu. Kako je PUN sastavljen od PMOSa koji vodi kada je na upravljačkom ulazu (G) niska razina, primjenimo DeMorgana: f = AB = A + B
Vidimo da je funkcija 1 onda kada je A = 1 ILI B = 1 . ILI funkciju ostvariti ćemo paralelnim povezivanjem tranzistora u PUNu, a na ulaze dvaju tranzistora dovodimo direktno varijable A i B. +UDD
PDN mora ostvarivati komplement funkcije,
f = AB = AB . Kako je PDN dakle: sastavljen od NMOSa koji vodi kada mu je na upravljačkoj elektrodi visoka razina, i budući da imamo funkciju napisanu direktno preko varijabli (a ne komplemenata), na ulaze tranzistora u PDNu dovesti ćemo direktno varijable, a tranzistorima moramo ostvariti I funkciju – što ćemo dobiti serijskim povezivanjem tranzistora. Shema sklopa prikaza je desno.
Provjerimo da li sklop radi ispravno:
Tr1
Tr2
f = AB A
Tr3
B
Tr4
Integrirani logički sklopovi. A nisko nisko visoko visoko
B nisko visoko nisko visoko
341 Tr1 vodi vodi ne vodi ne vodi
Tr2 vodi ne vodi vodi ne vodi
Tr3 ne vodi ne vodi vodi vodi
Tr4 ne vodi vodi ne vodi vodi
f UDD UDD UDD 0
Interpretacija u pozitivnoj logici: A 0 0 1 1
B 0 1 0 1
AB 1 1 1 0
f 1 1 1 0
Iz tablice se vidi da je dobivena funkcija upravo f = AB . d) f = A B + C Funkcija je zadana izrazom f = A B + C . Ovaj izraz određuje kada je vrijednost funkcije 1, dakle određuje PUN mrežu. Kako je PUN sastavljen od PMOSa koji vodi kada je na upravljačkom ulazu (G) +UDD niska razina, a funkcija je zadana upravo preko komplemenata, na upravljačke ulaze dovodit ćemo A Tr1 direktno varijable. Pri tome moramo ostvariti funkciju (A' I B') ILI C', što Tr3 C znači da ćemo I funkciju ostvariti serijskim povzivanjem dvaju B Tr2 tranzistora, a zatim ćemo ILI ostvariti paralelnim povezivanjem. f = AB + C PDN mora ostvarivati komplement funkcije, dakle: Tr4 Tr5 f = A B + C = A B ⋅ C = ( A + B) ⋅ C . Kako je PDN sastavljen od NMOSa koji vodi kada mu je na upravljačkoj elektrodi visoka razina, i budući da imamo funkciju napisanu direktno Tr6 preko varijabli (a ne komplemenata), na ulaze tranzistora u PDNu dovesti ćemo direktno varijable. Tranzistorima moramo ostvariti I funkciju – što ćemo dobiti serijskim povezivanjem dvaju tranzistora, a na jedan ulaz dovodimo rezultat ILI operacije ostvarene paralelnim povezivanjem tranzistora. Shema sklopa prikazan na prethodnoj stranici.
342
Zbirka riješenih zadataka
Provjerimo da li sklop radi ispravno: A
B
C
Tr1
Tr2
Tr3
nisko nisko nisko nisko visoko visoko visoko visoko
nisko nisko visoko visoko nisko nisko visoko visoko
nisko visoko nisko visoko nisko visoko nisko visoko
vodi vodi vodi vodi ne vodi ne vodi ne vodi ne vodi
vodi vodi ne vodi ne vodi vodi vodi ne vodi ne vodi
vodi ne vodi vodi ne vodi vodi ne vodi vodi ne vodi
Tr4 ne vodi ne vodi vodi vodi ne vodi ne vodi vodi vodi
Tr5 ne vodi ne vodi ne vodi ne vodi vodi vodi vodi vodi
Tr6 ne vodi vodi ne vodi vodi ne vodi vodi ne vodi vodi
f UDD UDD UDD 0 UDD 0 UDD 0
Interpretacija u pozitivnoj logici: A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
AB + C 1 1 1 0 1 0 1 0
f 1 1 1 0 1 0 1 0
Iz tablice se vidi da je dobivena funkcija upravo f = A B + C . e) f = A B + (C + D ) E Analogno prethodnom zadatku, PUN je određen direktno izrazom za f (jer su prisutni samo komplementi varijabli), pa treba PMOS tranzistore povezati tako da se ostvari funkcija: (A' I B') ILI ((C' ILI D') I E'). PDN određujemo iz komplementa: f = A B + (C + D ) E = ( A + B ) ⋅ (CD + E )
Dakle, uporabom NMOS tranzistora trebati će ostvariti funkciju (A ILI B) I ((C I D) ILI E). Sklop je prikazan na slici. Tranzistori Tr1 i Tr2 spojeni su u seriju i ostvaruju (A' I B'). Tranzistori Tr3 i Tr4 spojeni su u paralelu i ostvaruju (C' ILI D'). Paraleli tranzistora Tr3 i Tr4 u seriju je spojen Tr5 čime se ostvaruje ((C' ILI D') I E'). Konačno, serija tranzistora Tr1 i Tr2 spojena je u paralelu s upravo opisanom podmrežom čime se ostvaruje (A' I B') ILI ((C' ILI D') I E'). Na sličan način može se analizirati i PDN.
Integrirani logički sklopovi.
343 +UDD
A
Tr1
B
Tr2
Tr3
Tr4
Tr5
f = A B + (C + D ) E
Tr6
C
Tr7
Tr8 Tr10
D
E
Tr9
344
Zbirka riješenih zadataka
15.8. Zadatak CMOS tehnologijom ostvarena je funkcija f (vidi sliku). O kojoj se funkciji radi? +UDD
C
A
D
B
F
E
f
E
B
A
F
D
C
Direktnim očitanjem PUN-a dolazimo do funkcije sklopa: f = ( A ⋅ B + C ⋅ D ) ⋅ (E + F ) = ( A + B )(C + D ) + E ⋅ F .
15.9. Zadatak Uporabom CMOS tehnologije izvesti sklopove koji ostvaruju funkcije: a) f = A + B b) f = A ⋅ B c) f = ( A + B) ⋅ C d) f = ( A + B) ⋅ (CD + E )
Zajednička karakteristika svim navedenim funkcijama jest ovisnost o direktnoj vrijednosti funkcije (a ne o njezinom komplementu). U prethodnom smo zadatku vidjeli da PUN, koji direktno određuje kada je izlaz sklopa u 1, ovisi o komplementima varijable, zbog P-kanalnih tranzistora. Zbog toga se ovakve funkcije realiziraju na sljedeći način: 1. korak: realizirati komplement zadane funkcije g= f Ovime će funkcija g ovisiti samo o komplementima ulaznih varijabli. 2. korak: invertirati izlaz sklopa
Integrirani logički sklopovi.
345
izlaz = g = f = f
Krenimo redom u rješavanje zadanih funkcija. a) Komplement funkcije glasi: g = f = A⋅B Rješenje je prikazano na slici. +UDD +UDD
Tr1
Tr5 Tr2
f = g = A+ B Tr6
A
B
Tr3
Tr4
g = A⋅B b) Komplement funkcije glasi: g= f = A+B Rješenje je prikazano na slici. +UDD +UDD Tr5 Tr1
f = g = AB
Tr2 Tr6
A
Tr3
g = A+B B
Tr4
346
Zbirka riješenih zadataka
c) Komplement funkcije glasi: g = f = A ⋅ B + C . Rješenje je prikazano na slici. +UDD
+UDD A
Tr1 Tr3
C B
Tr7
f = g = ( A + B) ⋅ C
Tr2 Tr8
Tr4
g = AB + C
Tr5
Tr6
d) Komplement funkcije glasi: g = f = A ⋅ B + (C + D ) ⋅ E . Rješenje je prikazano na slici. +UDD
A
Tr1
B
Tr2
Tr3
Tr4
Tr5
+UDD
Tr11
f = g = ( A + B ) ⋅ (C ⋅ D + E ) Tr12 Tr6
Tr7
g = A B + (C + D ) ⋅ E
C
Tr8 Tr10
D
E
Tr9
Integrirani logički sklopovi.
347
15.10. Zadatak Uporabom CMOS tehnologije izvesti sklopove koji ostvaruju funkcije: a) f = A + B b) f = A ⋅ B c) f = A ⋅ B + C d) f = ( A + B) ⋅ (C ⋅ D + E )
Kada u funkcijskom izrazu imamo miješane varijable i komplemente, funkciju ćemo ralizirati uz uporabu dodatnih tranzistora koji će ostvarivati invertore. Pri tome ćemo se u nastavku razmatranja voditi sljedećim zahtjevom: potrebno je potrošiti što manje tranzistora. Kako bismo to postigli, najprije je potrebno utvrditi što je dominantno u funkcijskom izrazu – varijable ili komplementi. Možemo razlučiti četiri (nedisjunktna) slučaja. Ukoliko su dominantni komplementi, projektiramo sklop direktnim izvođenjem zadane funkcije, pri čemu dodatno generiramo sklopovlje za realizaciju potrebnih komplemenata varijabli (1. slučaj). Ukoliko su dominantne nekomplementirane varijable, projektiramo sklop izvođenjem komplementa funkcije nakon čega dodajemo invertor, te na ulazu generiramo sklopovlje za realizaciju nekomplementiranih ulaza (2. slučaj). Kao poseban slučaj možemo promotriti izraz kod kojega je broj komplementiranih varijabli jednak broju nekomplementiranih varijabli (3. slučaj). Tada se sklop projektira direktnim izvođenjem zadane funkcije (jer se u suprotnom slučaju troše dva tranzistora više). Dakle, slučaj 3 rješava se kao slučaj 1. Također specifičan slučaj nastupa kada imamo izraz u kojem je broj nekomplementiranih varijabli za jedan veći od broja komplementiranih varijabli. Tada se može izabrati proizvoljan način projektiranja sklopa. Neka u tom slučaju funkcija ovisi o 2n+1 varijable, i to n+1 nekomplementiranih i n komplementiranih varijabli. Ovime je nastupio slučaj 2. Krene li se, zbog toga, realizirati komplement funkcije, trebat će dodati invertor na izlaz, i napraviti invertore za n komplementiranih ulaznih varijabli, čime je ukupan broj dodatnih invertora jednak n+1. Ukoliko se ipak odlučimo postupiti prema slučaju 1, potrebno je napraviti invertore za n+1 nekomplementiranu varijablu, čime je broj dodanih invertora opet jednak n+1. Krenimo redom u realizaciju zadanih funkcija. a) U izrazu imamo jedan komplement (A) i jednu nekomplementiranu varijablu (B). Nastupio je slučaj 3. Zbog toga ćemo sve nekomplementirane varijable prevesti u komplemente (u našem slučaju to je varijabla B), i realizirati ostatak sklopa kao da cijeli izraz ima samo komplementirane varijable. Dakle, projektiramo sklop koji obavlja funkciju: f '= A + B pri čemu na ulaz B dovodimo komplement. Rješenje je prikazano na slici.
348
Zbirka riješenih zadataka +UDD
Tr1
Tr2
f = A+B +UDD Tr3
A
Tr5 Tr4
B B
Tr6
b) U izrazu imamo jedan komplement (B) i jednu nekomplementiranu varijablu (A). Nastupio je slučaj 3. Zbog toga ćemo sve nekomplementirane varijable prevesti u komplemente (u našem slučaju to je varijabla A), i realizirati ostatak sklopa kao da cijeli izraz ima samo komplementirane varijable. Dakle, projektiramo sklop koji obavlja funkciju: f '= A ⋅ B pri čemu na ulaz A dovodimo komplement. Rješenje je prikazano na slici. +UDD
Tr1
Tr2
+UDD
f = A⋅ B
Tr5 Tr3
A A
B
Tr4
Tr6
c) U izrazu imamo dva komplementa (A i B) i jednu nekomplementiranu varijablu (C). Očito je dominantan komplement, pa je nastupio slučaj 1. Zbog toga ćemo sve
Integrirani logički sklopovi.
349
nekomplementirane varijable prevesti u komplemente (u našem slučaju to je varijabla C), i realizirati ostatak sklopa kao da cijeli izraz ima samo komplementirane varijable. Dakle, projektiramo sklop koji obavlja funkciju: f '= A ⋅ B + C pri čemu na ulaz C dovodimo komplement. Rješenje je prikazano na slici. +UDD
+UDD
Tr7
A
Tr1 Tr3
C C
Tr8
B
Tr2
f = AB + C
Tr4
Tr5
Tr6
d) U izrazu imamo jedan komplement (A) i četiri nekomplementirane varijable (B, C, D i E). Očito su dominantne nekomplementirane varijable, pa je nastupio slučaj 2. Zbog toga ćemo sve komplementirane varijable prevesti u nekomplementirane (u našem slučaju to je varijabla A), i realizirati ostatak sklopa kao da cijeli izraz ima samo nekomplementirane varijable. Dakle, projektiramo sklop koji obavlja funkciju:
f ' = ( A + B) ⋅ (CD + E ) pri čemu na ulaz A dovodimo komplement. Ovakav oblik funkcije rješava se realizacijom njezinog komplementa g ' = f ' = A ⋅ B + (C + D ) ⋅ E , i dodatnim invertorom na izlazu. Rješenje je prikazano na slici.
350
Zbirka riješenih zadataka +UDD +UDD
Tr7 Tr1
Tr3
Tr4
+UDD
A A
Tr8 Tr1
Tr5
Tr2
B
f = g = ( A + B) ⋅ (C ⋅ D + E ) Tr2 Tr6
Tr7
g = AB + (C + D ) E
Tr8
C
Tr10 Tr9
D
E
15.11. Zadatak Prikazati "propusna vrata" izvedena u CMOS tehnologiji.
Ovaj sklop uspostavlja električku vezu između ulaza A i izlaza B (i to u oba smjera) ovisno o signalu na upravljačkom ulazu EN. Sklop je prikazan na slici. Sklop se sastoji od dva tranzistora koji su direktno povezani, a na upravljačke elektrode se dovode komplementarni signali. Ponašanje sklopa prikazano je tablici.
EN EN
EN EN 0 1
n-MOS isključen uključen
p-MOS isključen uključen
izlaz visoki otpor "kratki spoj" A i B
Kada su oba tranzistora uključena, otpor između točaka A i B iznosi svega nekoliko stotina Ω, tako da u tom slučaju možemo govoriti o "kratkom spoju".
Integrirani logički sklopovi.
351
O popularnosti ove strukture dovoljno govori podatak da u seriji 40xx postoji nekoliko čipova s ovim vratima. Čip 4016 sadrži 4 propusna vrata, dok čip 4066 sadrži vrata poboljšanih karakteristika. Čipovi s oznakama 4051, 5052 i 4053 sadrže implementacije multipleksora/demultipleksora uporabom propusnih vrata, i to: 4051 sadrži jedan 8/1 multipleksor/demultipleksor, 4052 sadrži dva 4/1 multipleksora/demultipleksora a 4053 sadrži tri 2/1 multipleksora/demultipleksora. Dobra karakteristika ovih sklopova vidljiva je iz njihovog opisa: oni mogu biti multipleksori ili demultipleksori, jer propusna vrata propuštaju o oba smjera! To znači da kod npr. multipleksora/demultipleksora 8/1 sklop možemo koristiti kao multipleksor, pri čemu imamo 8 ulaza i 1 izlaz, ili kao demultipleksor pri čemu imamo 1 ulaz i 8 izlaza. Struktura prikazana na prethodnoj slici gdje se uvodi i odvodi n- i p-kanalnog MOSFET-a direktno spajaju često se označava simbolom prikazanim na slici desno. Slovo p pri tome označava upravljački ulaz (engl. gate) p-kanalnog MOSFET-a, a slovo n označava upravljački ulaz n-kanalnog MOSFET-a. 15.12. Zadatak Prikazati multipleksor 2/1 u izveden u CMOS tehnologiji.
Jedna moguća izvedba kojom se može uštediti određen broj tranzistora prikazana je na slici:
Za sklop na slici vrijedi: Y = S ⋅ i0 + S ⋅ i1 = MUX (i0 , i1 , S )
Međutim, multipleksor 2/1 se u CMOS tehnologiji standardno izvodi uporabom propusnih vrata (a ne realizacijom logičkog izraza koji opisuje funkciju multipleksora). Moguće rješenje prikazano je na slici.
352
Zbirka riješenih zadataka
S
Funkcija sklopa opisana je tablicom: S 0 1
TG1 propušta ne propušta
TG2 ne propušta propušta
Y i0 i1
Prikazan sklop ima jednu karakteristiku koja je istovremeno i dobra i loša. Naime, budući da je sklop ostvaren uporabom propusnih vrata (koja predstavljaju analognu sklopku, propusnu u oba smjera), sklop se istovremeno može koristiti i kao multipleksor (ako su i0 i i1 ulazi, a Y izlaz), i kao demultipleksor (ako je Y ulaz a i0 i i1 izlazi)! Međutim, ovakvo ponašanje nije uvijek poželjno, pa se multipleksor često izvodi dodavanjem još triju invertora prethodnom sklopu, kao što je prikazano na slici.
S
Ovaj se sklop može koristiti samo kao multipleksor. 15.13. Zadatak Prikazati multipleksor 8/1 izveden u CMOS tehnologiji.
Multipleksor 2 n / 1 , n>1, se u CMOS tehnologiji ostvaruje izgradnjom multipleksorskog stabla sa n razina, pri čemu se kao temeljni element koristi multipleksor 2/1 izveden pomoću propusnih vrata (vidi prethodni zadatak). Rješenje je prikazano na slici.
Integrirani logički sklopovi.
353
Prilikom realizacije sklopa (uz pretpostavku da se projektira sklop za implementaciju na čipu) invertori upravljačkih signala izbačeni su iz svih sklopova osim jednog u svakoj razini. Budući da je sklop ostvaren na način koji osigurava da se na putu između ulaza i izlaza nalaze samo propusna vrata, ulazi i izlazi su međusobno zamjenjivi, tako da se sklop može upotrijebiti i kao demultipleksor.
354
Zbirka riješenih zadataka
15.14. Zadatak Čip oznake CD40174B proizvođača Texas Instruments sadrži 6 pozitivnim bridom okidanih D bistabila izveenih CMOS tehnologijom. Bistabili imaju i dodatni ulaz za brisanje. Proučiti strukturu i način izvedbe ovih bistabila. Na što se svodi implementacija bridom okidanih D bistabila u CMOS tehnologiji?
Struktura jednog bistabila preuzeta iz kataloga proizvođača prikazana je na slici.
CL D
1
CL
1
&
CL
CL
CL
1
CL
1
&
CL
CLR CLK
1
1
CL
CL
CL
Kako bismo došli do principa izgradnje bistabila, pojednostavnimo shemu tako što ćemo eliminirati signal za brisanje. Ovo ćemo napraviti tako da pretpostavimo da je taj ulaz stalno spojen na '1'. Kako se ovaj signal vodi isključivo do NI logičkih sklopova, pogledajmo u što se oni pretvaraju:
(
NI CLR , X
)
⇒
NI (1, X ) = NI ( X ) = X
Dakle, svaki NI sklop zapravo se pretvara u invertor. Pojednostavljena shema prikazana je u nastavku.
Q
Integrirani logički sklopovi.
355
CL D
CL
1
1 CL
CL
CL
CL
1
1
CL
1
CLK
1
Q
1
1
CL
CL
CL
Na slici su odmah i osjenčanje dvije interesantne strukture; precrtajmo sliku još jednom: 1
CL
CL D
1
CL
CL 1
CLK
1
1
CL
CL
1
CL
1
1
Q
356
Zbirka riješenih zadataka
Uklanjanjem invertora odmah se dolazi do već poznatog sklopa D bistabila koji reagira na pozitivni brid izvedenog pomoću dva multipleksora. Jedan od razloga dodavanja d0 d1 ovih invertora prilikom izrade bistabila u y y Q CMOS tehnologiji jest činjenica da se D d0 d1 a a multipleksori direktno realiziraju strukturom prijenosnih vrata, gdje direktno spajanje izlaza na ulaz više ne bi funkcioniralo prema logičkoj shemi (jer bismo zapravo kratko CP spojili uvod i odvod MOSFET-a). Zbog toga se dodaju invertori koji osiguravaju električko odvajanje izlaza i ulaza multipleksora i unose kašnjenje u povratnu vezu.
15.15. Pismeni ispit, 10. 10. 2003, 10. zadatak Na raspolaganju su TTL sklopovi podskupine 74N i 74S čiji su parametri zadani u tablici. Sklop iz jedne podskupine pobuđuje više sklopova iz druge podskupine. Koliko se maksimalno sklopova može spojiti na izlaz jednog sklopa u oba slučaja?
74N 74S
IOL 16 mA 8 mA
IIL 1.6 mA 400 µA
IOH 400 µA 400 µA
IIH 40 µA 20 µA
Analizirajmo oba slučaja. Kada sklop porodice 74N pobuđuje više sklopova porodice 74S, vrijedi: Izlaz je L: Izlaz je H:
I OL , N ≥ n ⋅ I IL , S ⇒ n ≤ I OH , N ≥ n ⋅ I IH , S ⇒ n ≤
I OL , N
= 40
I IL , S I OH , N I IH , S
= 20
Kako obje nejednadžbe moraju biti zadovoljene, slijedi da je n=20. Kada sklop porodice 74S pobuđuje više sklopova porodice 74N, vrijedi: Izlaz je L: Izlaz je H:
I OL , S ≥ n ⋅ I IL , N ⇒ n ≤ I OH , S ≥ n ⋅ I IH , N ⇒ n ≤
I OL , S I IL , N I OH , S I IH , N
=5 = 10
Kako obje nejednadžbe moraju biti zadovoljene, slijedi da je n=5.
Integrirani logički sklopovi.
357
ZADACI ZA VJEŽBU 1.
U CMOS tehnologiji projektirati sklop čija je funkcija u negativnoj logici zadana izrazom f ( A, B, C , D, E ) = A E ⋅ C + DE .
2.
Objasnite izvedbu spojenog I kod: a) Standardnih TTL sklopova b) TTL sklopova s otvorenim kolektorom c) CMOS sklopova Obratite pažnju na struje i napone koji se pri tome pojavljuju.
3.
Prikažite izlazni stupanj standardnog TTL sklopa. Objasnite zašto je iznos otpora baš 130Ω (odnosno, čime je određena gornja a čime donja granica).
4.
U CMOS tehnologiji ostvariti funkciju f ( A, B , C , X , Y , P ) = A ⋅ P ⋅ ( X + C ⋅ (B + Y )) .
5.
Objasnite (definirajte) što znače sljedeće oznake: IILmax, IIHmax, IOLmax, IOHmax. Ako su ti podaci poznati za neku porodicu, na koji se način računa faktor grananja izlaza (engl. fan-out) nekog sklopa iz te porodice? Izračunajte to za slučaj 74S porodice, kod koje su podaci sljedeći: IILmax=400µA, IIHmax=20µA, IOLmax=8mA, IOHmax=400µA. Objasnite što je to faktor grananja na ulazu sklopa (engl. fan-in) i čime je on određen? Pokažite to na primjeru NI i NILI sklopova izvedenih u CMOS-u. Koji od ta dva sklopa ima veći faktor grananja na ulazu i zašto? Objasnite (definirajte) što znače sljedeće oznake: UOHmin, UIHmin, UILmax, UOLmax. U kakvom su međusobnom odnosu ti naponi? Definirajte kako se na temelju tih podataka računa granica istosmjerne smetnje?
6.
Zadan je CMOS invertor. Na izlaz invertora spojen je otpor R1 iznosa 1kΩ prema UDD=5V, te otpor R2 iznosa 1kΩ prema masi. Ako su za invertor poznati sljedeći podaci: UOLmax = 0.1V, UILmax = 1.5V, UIHmin = 3.5V, UOHmin = 4.9V, odredite koliko iznose izlazni naponi za slučaj kada je na izlazu logička 0, odnosno logička jedinica. Izračunajte koliko iznose struje IOLmax i IOHmax, uzimajući pri tome u obzir da napon na izlazu sklopa mora poštivati zadane naponske raspone! Pretpostavite da su otpori isključenih tranzistora veći od 100 MΩ, otpor uključenog NMOS tranzistora 100Ω, a otpor uključenog PMOS tranzistora 200Ω.
7.
TTL sklopom potrebno je pobuđivati CMOS sklop. Oba sklopa rade s naponom napajanja od 5V. Za TTL sklop poznato je UOLmax=0.5V, UOHmin=2.7V. Za CMOS sklop poznato je UILmax=1.5V, UIHmin=3.5V. Objasnite kako treba izvesti ovo spajanje, i zašto.
8.
TTL sklopom koji radi s naponom napajanja 5V potrebno je pobuđivati CMOS sklop koji radi s naponom napajanja od 10V. Za TTL sklop poznato je UOLmax=0.5V, UOHmin=2.7V. Za CMOS sklop poznato je UILmax=3V, UIHmin=7V. Objasnite kako treba izvesti ovo spajanje, i zašto.
9.
CMOS sklopom potrebno je pobuđivati TTL sklop. Oba sklopa rade s naponom napajanja od 5V. Objasnite kako treba izvesti ovo spajanje, i zašto.
10. CMOS sklopom koji radi s naponom napajanja 10V potrebno je pobuđivati TTL sklop koji radi s naponom napajanja 5V. Objasnite kako treba izvesti ovo spajanje, i zašto.
Dodatak 1. RC mreža.
359
Dodatak 1. RC mreža Zadana je RC mreža prema slici. Izvor napona u(t) spojen je na RC mrežu. Izračunajte napon na kondenzatoru ako su poznati iznosi otpora R i kapaciteta C, te vrijedi: t<0 0, u (t ) = U H , 0 <= t < t1 . U , t1 <= t L
R
i (t ) u (t )
C
uC (t )
Uočimo da vrijedi 1 u (t ) = i(t ) ⋅ R + ∫ i (t )dt . (1) C Kako je napon na kondenzatoru jednak 1 uC (t ) = ∫ i (t )dt (2) C slijedi i (t ) uC (t ) = . (3) C Uvrštavanjem (3) u (1) dobiva se (4) u (t ) = uC (t ) ⋅ RC + uC (t ) odnosno 1 1 ⋅ u (t ) = uC (t ) + ⋅ uC (t ) . (5) RC RC Da bismo opisali kretanje napona na kondenzatoru, potrebno je dakle riješiti (5). Ovo se može obaviti na više načina, a jedan je opisan u nastavku. Homogena jednadžba od (5) glasi 1 0 = uC (t ) + ⋅ uC (t ) (6) RC odnosno du (t ) 1 0= C + ⋅ uC ( t ) . dt RC Rješenje jednadžbe separacijom varijabli daje t − + K1 duC (t ) 1 t RC =− ⋅ dt ⇒ ln uC (t ) = − + K1 ⇒ uC (t ) = e uC (t ) RC RC odnosno
uC (t ) = e
−
t RC
⋅K.
(7)
Kako bismo riješili (5), koristiti ćemo varijaciju konstante. U tu svrhu pretpostavimo da K nije konstanta, pa pronađimo derivaciju od uC(t). Iz (7) slijedi
360
Zbirka riješenih zadataka t
t
− − 1 uC (t ) = − (8) ⋅ e RC ⋅ K (t ) + e RC ⋅ K (t ) . RC Uvrštavanjem (7) i (8) u (5) slijedi t t t − − − 1 1 1 RC RC RC ⋅ u (t ) = − ⋅e ⋅ K (t ) + e ⋅ K (t ) + ⋅e ⋅ K (t ) RC RC RC odnosno t − 1 RC (9) ⋅ u (t ) = e ⋅ K (t ) . RC U zadatku koji rješavamo, pobuda u(t) je vremenski promjenjiva, ali bitno je uočiti da je po dijelovima konstantna. Ukoliko se ograničimo na rješavanje jednadžbe po dijelovima, možemo postupiti na slijedeći način. Ako (9) zapišemo kao t − 1 dK (t ) RC ⋅ u (t ) = e ⋅ RC dt možemo opet primijeniti separaciju varijabli budući da je u(t) u određenom intervalu konstantno t 1 RC dK (t ) = ⋅ e ⋅ u (t ) ⋅ dt . RC Slijedi
t RC
K (t ) = e ⋅ u (t ) + W . pri čemu je W konstanta. Uvrštavanjem (10) u (7) konačno slijedi uC (t ) = e odnosno
−
t RC
t
⋅ e RC ⋅ u (t ) + e
uC (t ) = u (t ) + e
−
t RC
−
t RC
(10)
⋅W
⋅W .
(11)
Ovime smo došli do općeg rješenja. Promotrimo sada kako se to primjenjuje na naš konkretni zadatak. U trenutku t=0, pobuda skače na UH. U tom trenutku napon na kondenzatoru uC(0) iznosi 0V. Ako te podatke uvrstimo u (11) za t=0, slijedi −
0
0 = U H + e RC ⋅ W . iz čega slijedi iznos konstante W W = −U H . (12) Uvrštavanjem (12) u (11) slijedi jednadžba koja opisuje kretanje napona uC(t) od trenutka t=0, pa do trenutka t=t1 (naime, u tom intervalu u(t)=UH) uC (t ) = U H − U H ⋅ e
−
t RC
= U H (1 − e
−
t RC
).
(13)
U trenutku t=t1, pobuda u(t) pada na UL. Do tog trenutka vrijedila je (13) pa možemo izračunati napon uC(t1) koji je u tom trenutku vladao kondenzatoru −
t1 RC
uC (t1 ) = U H (1 − e ) . (14) Uvrštavanjem (14) u (11) u trenutku t=t1 možemo odrediti novi iznos konstante W
Dodatak 1. RC mreža. −
t1 RC
−
361 t1 RC
U H (1 − e ) = U L + e ⋅W te je t t1 − 1 W = U H (1 − e RC ) − U L ⋅ e RC (15) Uvrštavanjem (15) u (11) slijedi jednadžba koja opisuje kretanje napona uC(t) od trenutka t=t1 na dalje (jer u tom intervalu ostaje u(t)=UL) t t t1 − − 1 uC (t ) = U L + e RC ⋅ U H (1 − e RC ) − U L ⋅ e RC odnosno − t1 t − tRC − 1 RC (16) uC (t ) = U L + U H (1 − e ) − U L ⋅ e Iz (13) i (16) slijedi iznos napona uC(t) 0, t<0 t − uC (t ) = U H (1 − e RC ), 0 <= t < t1 t1 t −t1 − − U L + U H (1 − e RC ) − U L ⋅ e RC , t1 <= t
Dodatak 2. Booleova algebra – pregled potrebnih formula.
363
Dodatak 2. Booleova algebra – pregled potrebnih formula
Pregled potrebnih formula Definicija Booleove algebre: 1. Skup S od barem dva elementa S={a,b,…} 2. Binarni operacije + i ⋅ zatvorene obzirom na S. 3. Aksiomi: A.1, A.2, A.3, A.4 A.1. Neutralni element a) A + 0 = A b) A ⋅1 = A A.2. Komplement a) A + A = 1 b) A ⋅ A = 0
A.3. Komutativnost a) A + B = B + A b) A ⋅ B = B ⋅ A A.4. Distributivnost a) A ⋅ ( B + C ) = A ⋅ B + A ⋅ C b) A + B ⋅ C = ( A + B) ⋅ ( A + C ) Vrijedi metateorem o dualnosti: ako zamijenimo 1 i 0 te + i ⋅ iz a) dobijemo b) i obrnuto. Neka je f = f ( A, B, C ,...,+,⋅, ,0,1) . Dualna funkcija glasi f D = f ( A, B, C ,...,⋅,+ , ,1,0) . Koristit ćemo još i sljedeće zakone. Zakon involucije: A = A . Zakon asocijacije: a) ( A + B) + C = A + ( B + C ) b) ( A ⋅ B) ⋅ C= A ⋅ ( B ⋅ C )
De Morganov zakon: a) A + B = A ⋅ B b) A ⋅ B = A + B
364
Zbirka riješenih zadataka
Još jedna definicija Booleove algebre Booleova algebra može se definirati na različite načine. Osim definicije korištene u Zbirci, jedna od mogućnosti prikazana je u nastavku. Booleova algebra je neprazni skup B nad kojim su definirane dvije binarne operacije ⋅ i ⊕ koje zadovoljavaju sljedeće aksiome (za svaki X, Y i Z iz B): A1.
( X ⊕ Y ) ⊕ Z = X ⊕ (Y ⊕ Z ) ( X ⋅ Y ) ⋅ Z = X ⋅ (Y ⋅ Z )
Asocijativnost
A2.
X ⊕Y = Y ⊕ X X ⋅Y = Y ⋅ X
Komutativnost
A3.
Postoji 0∈B: X ⊕ 0 = X Postoji 1∈B: X ⋅1 = X
Neutralni element
A4.
X ⊕X =0 X ⋅X = X
Samoinverz Idempotentnost
A5.
X ⋅ (Y ⊕ Z ) = ( X ⋅ Y ) ⊕ ( X ⋅ Z )
Distributivnost
Operator ⋅ nazvat ćemo I, a operator ⊕ ISKLJUČIVO-ILI. Operatore + i
tada možemo definirati na sljedeći način:
Def1. X + Y = X ⊕ Y ⊕ ( X ⋅ Y ) Def2. X = 1 ⊕ X
Dodatak 3. K tablice.
365
Dodatak 3. K tablice
Prazne K-tablice Tablica za dvije varijable:
A 0 B
1
0 1
Tablica za tri varijable:
AB 00 C
01
11
10
01
11
10
0 1
Tablica za četiri varijable:
AB 00 CD
00 01 11 10
Tablica za pet varijabli (direktno Grayev kod):
366
Zbirka riješenih zadataka
ABC 000 DE
001
011
010
110
111
101
100
00 01 11 10
Tablica za pet varijabli (3D prikaz; A određuje visinu):
ABC 000 DE
001
011
010
100
00 01 11 10
Popis minterma po tablicama: Tablica za dvije varijable:
A B
0
1
0
0
2
1
1
3
Tablica za tri varijable:
AB C
00
01
11
10
0
0
2
6
4
1
1
3
7
5
101
111
110
Dodatak 3. K tablice.
367
Tablica za četiri varijable:
AB CD
00
01
11
10
00
0
4
12
8
01
1
5
13
9
11
3
7
15
11
10
2
6
14
10
Tablica za pet varijabli (direktno Grayev kod):
ABC DE
000
001
011
010
110
111
101
100
00
0
4
12
8
24
28
20
16
01
1
5
13
9
25
29
21
17
11
3
7
15
11
27
31
23
19
10
2
6
14
10
26
30
22
18
Tablica za pet varijabli (3D prikaz; A određuje visinu):
ABC DE
000
001
011
010
100
101
111
110
00
0
4
12
8
16
20
28
24
01
1
5
13
9
17
21
29
25
11
3
7
15
11
19
23
31
27
10
2
6
14
10
18
22
30
26
368
Zbirka riješenih zadataka
Susjednost: Kod K-tablica za dvije do četiri varijable susjedna polja su na istoku, zapadu, sjeveru i jugu (da se poslužimo "zemljopisnom" terminologijom). Ako se radi o polju koje je npr. na vrhu tablice, onda se termin polje iznad odnosi na polje koje je u istom stupcu ali na drugom kraju (kao da smo tablicu zamotali u valjak). Pogledajmo tablicu za četiri varijable. Vrijedi npr.: Polje 7 3 0 10
Susjedna polja 3, 5, 6, 15 1, 2, 7, 11 1, 2, 4, 8 2, 8, 11, 14
K-tablica za pet varijabli donekle je problematična. Naime, kod K-tablice dobivene direktno Grayevim kodom vrijedi sljedeće: polje 21, osim što ima susjedna polja (istok, zapad, sjever, jug) = (29, 17, 20, 23), ima i susjedno polje 5 (zbog promjene varijable A)! Zbog toga se puno češće koristi K-tablica za pet varijabli koja se dobije ako se A varijabla shvati kao dimenzija koja u 3D prostoru određuje na kojoj se visini nalazi tablica. U tom slučaju imamo dvije tablice dimenzija 4×4, pri čemu je kod lijeve A=0, a kod desne A=1 pa u prostoru desna tablica leži točno iznad lijeve tablice. Tada se susjednost može odrediti puno lakše, jer su susjedna polja (istok, zapad, sjever, jug), te polje iznad odnosno ispod. Pogledajmo ponovno slučaj za polje 21. To polje se nalazi u desnoj (gornjoj, A=1) tablici, pa će susjedna polja biti (istok, zapad, sjever, jug) = (29, 17, 20, 23) i polje ispod, a to je polje 5.
Literatura
369
Literatura 1. Materijali s auditornih vježbi (A.G. 2001./2002.) 2. Peruško, U., Digitalna elektronika. Logičko i električko projektiranje, III. prošireno izdanje, Školska knjiga, Zagreb, 1991. 3. Glavinić, V., Predavanja iz Digitalne elektronike (radni materijali za predavanje iz predmeta ZER03O4 Digitalna elektronika), Zagreb, 2002. 4. Glavinić, V., Digitalno upravljanje, zbirka riješenih zadataka, I dio, Uvod u digitalnu tehniku, Sveučilišna naklada, d.o.o., Zagreb, 1991. 5. Szabo, A., Impulsna i digitalna elektronika, Sveučilišna naklada Liber, Zagreb, 1976. 6. Gajski, D. D., Principles of digital design, Prentice Hall, Upper Saddle River, New Yersey, 1997. 7. Brown, S., Vranesic, Z., Fundamentals of digital logic with VHDL design, McGraw-Hill Companies, Inc., 2000. 8. Elec 326: Digital Logic Design, http://www.owlnet.rice.edu/~elec326/ Rice University (posjećeno: 05. 05. 2003.) 9. Lattice Semiconductor Corporation http://www.latticesemi.com/ (posjećeno: 05. 05. 2003.) 10. ELCT 762, Signal Integrity for High Speed Circuits - Fall 2003 http://www.ee.sc.edu/classes/fall03/elct762/ University of South Carolina (posjećeno: 06. 12. 2003.) 11. ECE 410, Fall 2003 http://www.egr.msu.edu/classes/ece410/mason/ Michigan State University College of Engineering (posjećeno: 17. 05. 2004.) 12. 6.111, Introductory Digital Systems Laboratory http://sunpal7.mit.edu/6.111/s2003/ Massachusetts Institute of Technology (posjećeno: 17. 05. 2004.) 13. CS/CoE 536, Reconfigurable System on Chip Design, Fall 2002 http://www.arl.wustl.edu/~lockwood/class/cs536/ Applied Research Laboratory (posjećeno: 17. 05. 2004.) 14. Internet (Google)