Professional Documents
Culture Documents
Čupić Marko - Zbirka Riješenih Zadataka Iz Digitalne Elektronike I Logike PDF
Čupić Marko - Zbirka Riješenih Zadataka Iz Digitalne Elektronike I Logike PDF
ZBIRKA RIJEENIH
ZADATAKA IZ
DIGITALNE
ELEKTRONIKE I
DIGITALNE LOGIKE
Zagreb, 2005
Minimizacija logikih funkcija. 103
Prikaite funkciju f = (0,2 ) pomou K-tablice, i zatim odredite minimalni oblik funkcije.
Usporedite s analitikom minimizacijom.
AB
A AB
0 1
B 0 1 1 B
1 B
f = A B + AB = ( A + A) B = B
5.2. Zadatak
Prikaite funkciju f = (1,3) pomou K-tablice, i zatim odredite minimalni oblik funkcije.
Usporedite s analitikom minimizacijom.
A A+ B A+B
0 1
B
B 0
1 0 0 B
f = ( A + B )( A + B ) = ( AA + B ) = B
A AB AB
0 1
B
B 0
1 1 1 B
A
f =B
f = f =B
5.3. Zadatak
ACD
AB
00 01 11 10
AD
CD 00 1 1
01 1 1
D
11 1 1
10 C
A
B
f = A C D + AD
Minimizacija logikih funkcija. 105
5.4. Zadatak
AB
00 01 11 10
BD
CD 00 1 1 1
AD
01
D
11
10 1 1 1 C
A
B
f = AD + BD
5.5. Zadatak
AB
00 01 11 10
CD 00 1 1 x BCD
AC
01 1 x
D
11 x 1 x
10 1 x C
AB A
B
f = A C + A B + BCD
106 M. upi Zbirka rijeenih zadataka
5.6. Zadatak
AC
AB
00 01 11 10
BC
C 0 0 0
1 0 0 C
A
B
f = A C + BC
f = f = ( A + C )( B + C )
5.7. Zadatak
BC D
AC D
AB
00 01 11 10
CD 00 0 0 0
01 0 0 BD
D
11 0 0
10 C
A
B
f = BD + AC D + B C D
f = f = ( B + D )( A + C + D)( B + C + D)
Minimizacija logikih funkcija. 107
5.8. Zadatak
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 + C C ) ( A + C + BB ) ( A + C )
= ( A + B ) (A + C ) (A + C )
= ( A + B ) ( A + CC )
= (A + B) A
= A A + B A
= AB
f = f
= AB
= A+ B
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 moe direktno upisati u
K-tablicu. Ako to nije ispunjeno, funkciju moemo 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 nain ako je funkcija zapisana kao suma produkata koji nisu nuno mintermi jer
analiza lan po lan. Jedini lan zadane funkcije koji nije minterm jest AC.
Zakljuujemo da je funkcija jednaka 1 kada su A i C jednaki 1, neovisno o ostalim
varijablama (u ovom sluaju 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
moemo upisati direktno.
B
AB A
00 01 11 10
C 0 1 1 1
1 1 1 1 C
Jo nismo gotovi jer je ostalo jo nezaokruenih jedinica. Npr. polje ABC = 000. Polje
juno takoer sadri jedinicu pa ih moemo prekriti pravokutnikom dimenzija 21.
Meutim, treba uoiti da ovo podruje ima susjede na istoku prekrivene jedinicama. To
su polja ABC=100 i 101, pa sve zajedno moemo obuhvatiti pravokutnikom dimenzija
22, kao na sljedeoj slici:
B
AB A
00 01 11 10
C 0 1 1 1
1 1 1 1 C
B A
f = f1 + f 2 = A + B
e) Quine-McCluskey metoda
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 zapiimo to tablino:
Minterm
000 (0)
001 (1)
100 (4)
101 (5)
110 (6)
111 (7)
Minterm
000 * (0) 00x (0,1)
001 * (1)
100 (4)
101 (5)
110 (6)
111 (7)
Prvi minterm prve grupe moemo jo kombinirati i s drugim mintermom druge grupe
(000 i 100 daju x00), pa i to zabiljeimo i oznaimo 100. Zatim ponovimo postupak
usporeujui svaki minterm iz druge grupe sa svakim mintermom iz tree grupe, itd.
Dobije se:
Minterm
000 * (0) 00x (0,1)
x00 (0,4)
001 * (1) x01 (1,5)
100 * (4) 10x (4,5)
1x0 (4,6)
101 * (5) 1x1 (5,7)
110 * (6) 11x (6,7)
111 * (7)
Minterm
000 * (0) 00x * (0,1) x0x (0,1,4,5)
x00 * (0,4)
001 * (1) x01 * (1,5) 1xx (4,5,6,7)
100 * (4) 10x * (4,5)
1x0 * (4,6)
101 * (5) 1x1 * (5,7)
110 * (6) 11x * (6,7)
111 * (7)
Iz ovih lanova kreiramo novu tablicu: stupci odgovaraju mintermima kojima je zadana
funkcija, a retci dobivenim lanovima iz prethodnog koraka. U tablici se ujedno oznai
koje minterme sadri (odnosno pokriva) koji lan.
0 1 4 5 6 7
B (0,1,4,5)
A (4,5,6,7)
Slijedei korak je pronalaenje onih lanova koji jedini pokrivaju neki minterm. Npr.
vidimo da B jedini pokriva minterm 0. To znai da je on primarni lan, i moramo ga
uzeti. No, ako smo uzeli njega, onda smo automatski pokrili i minterme 1, 4 i 5.
Oznaimo to:
0 1 4 5 6 7
B (0,1,4,5)
A (4,5,6,7)
Desno smo oznaili da smo uzeli B , a na dnu tablice smo oznaili koje smo sve
minterme pokrili. Ostali su nepokriveni mintermi 6 i 7, a njih sadri lan A. Kako je on
jedini koji ih sadri, on je takoer primaran lan. Uzmimo i njega, pa oznaimo to je
sve pokrio:
0 1 4 5 6 7
B (0,1,4,5)
A (4,5,6,7)
112 M. upi Zbirka rijeenih zadataka
f = A+ B
5.9. Zadatak
Minterm
0000 * (0) 000x * (0,1) 00xx (0,1,2,3)
00x0 * (0,2) 0xx0 (0,2,4,6)
0x00 * (0,4)
0001 * (1) 00x1 * (1,3) 0x1x (2,3,6,7)
0010 * (2) 001x * (2,3)
0100 * (4) 0x10 * (2,6)
01x0 * (4,6)
x100 (4,12)
0011 * (3) 0x11 * (3,7)
0110 * (6) 011x * (6,7)
1100 * (12) 110x (12,13)
0111 * (7) x111 (7,15)
1101 * (13) 11x1 (13,15)
1111 * (15)
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 1 2 3 4 6 7 12 13 15
BC D (4,12) P0
ABC (12,13) P1
BCD (7,15) P2
ABD (13,15) P3
AB (0,1,2,3) P4
AD (0,2,4,6) P5
AC (2,3,6,7) P6
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.
Dakle, dvije su mogunosti. Moemo ukljuiti jo lanove P0, P3 i P6, ili lanove P1, P2 i
P5. Ovisno o tome, dobiju se slijedee funkcije:
f = A B + BC D + ABD + A C
ili
f = A B + ABC + BCD + A D
Napomena: kod funkcije p traimo produkt koji sadri 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
izmnoi ne mora uvijek odgovarati minimalnom skupu, ve se ovaj podproblem moe
ponovno napasti nekim od minimizacijskih postupaka (ak i Quinne-McCluskey
metodom).
Za vjebu.
5.10. Zadatak
Minterm
0100 * (4) 010x (4,5) 10xx (8,9,10,11)
1000 * (8) x100 (4,12)
100x * (8,9)
10x0 * (8,10)
1x00 (8,12)
0101 * (5) 01x1 (5,7)
1001 * (9) 10x1 * (9,11)
1010 * (10) 101x * (10,11)
1100 * (12)
0111 * (7) x111 (7,15)
1011 * (11) 1x11 (11,15)
1111 * (15)
Ostali su sljedei 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:
4 5 7 8 9 10 11 12 15
A BC (4,5)
BC D (4,12)
AC D (8,12)
A BD (5,7)
BCD (7,15)
ACD (11,15)
AB (8,9,10,11)
4 5 7 8 9 10 11 12 15
A BC (4,5) P0
BC D (4,12) P1
AC D (8,12) P2
A BD (5,7) P3
BCD (7,15) P4
ACD (11,15) P5
AB (8,9,10,11) P6
Svi ostali nepokriveni mintermi pokriveni su s vie od jednog preostalog lana, pa se
postavlja pitanje koje jo lanove odabrati, tako da se pokriju svi mintermi, a zadri
minimalnost funkcije? Rjeenje nudi Pyne-McCluskeyev pristup: iskaz "potrebno je
pokriti preostale lanove" treba zapisati kao Booleovu funkciju, i pronai onaj produktni
Minimizacija logikih funkcija. 115
lan te funkcije koji sadri 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 moemo zapisati u obliku funkcije (obratiti
panju na podebljane 'i' i 'ili' u prethodnoj reenici):
Minimalni broj varijabli u produktima iznosi 3, i to u dva sluaja. Dakle, moemo uzeti
jo sljedee lanove:
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
5.11. Zadatak
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 nee niti dogoditi), to je oznaeno sumom d-lanova. Budui 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 nain, s time da zaokruenja smijemo iriti i na podruja
prekrivena x-evima (smatrajui da tamo pie 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
neemo niti trebati pokrivati.
116 M. upi Zbirka rijeenih zadataka
BD
ABC
000 001 011 010 100 101 111 110
DE 00 1 1 X X X X
ADE
01 X X 1 1 X
E E
11 X X X X 1 1
10 1 D
1 D
B B
C C
BC D
Npr. x-eve na 10000 i 10100 promatrali smo kao jedinice, kako bismo dobili to vee
zaokruenje kod jedinica 10001 i 10101, dok smo x-eve na 01000 i 00111 zanemarili.
5.12. Zadatak
f = (0,2,3,6,7,8,10,11) .
BD
AB
00 01 11 10 AC
CD 00 0 0 BC
01
D
11 0 0 0
10 0 0 0 C
A
B
f = AC + BD + BC
pa je:
f = f = ( A + C )( B + D)( B + C )
Komentar: Zato su polja 0000, 1000, 0010 i 1010 susjedna? Sigurno znamo da su polja
0000 i njegovo zapadno polje 1000 susjedni. Meutim, ta dva polja imaju na sjeveru
polja 0010 i 1010 sa kojima su susjedna, pa se ta etiri polja mogu obuhvatiti
pravokutnikom dimenzija 22.
5.13. Zadatak
f = m(5,9,12,15) + d (2,7,8,10,13) .
BD
AB AC
00 01 11 10
CD 00 1 X
01 1 X 1
D
11 X 1
10 X X C
A
B
f = AC + BD
5.14. Zadatak
BD
AB
00 01 11 10
CD 00 1 1 1
01 1 1 AD
ACD 11 1 1 1
10 1 1
BCD
f = B D + BCD + AD + A C D
AB
00 01 11 10
CD 00 0
01 0 0 ABD
11 0
ABD
10 0 0
ACD 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
B + D =1 B + D 1 B D 0 B D =1
Ovaj je umnoak 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 = 00, dakle minterme m0, m2, m8, m10. Kako se ti mintermi nikada nee
pojaviti, u svrhu minimizacije moemo ih tretirati kao don't care. Tada je postupak
minimizacije prikazan u nastavku.
AB AB
AB
00 01 11 10
CD 00 X 1 X
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 zapoinje tako da se generira poetna tablica koja sadri sve navedene
minterme (bitne i zanemarive) naravno, oznaene D: zastavicom. Nakon to se
provede prvi korak do kraja, u drugom se koraku generira klasina tablica koja u
stupcima sadri samo one minterme koji nisu bili zanemarivi, a u retcima samo one
produkte koji nisu bili oznaeni, i dodatno, koji nemaju zastavicu D: postavljenu na 1.
Evo rjeenja:
00000 * D:0 (0) 00X00 * D:0 (0, 4) X0X00 * D:0 (0, 4, 16, 20) X0X0X D:0
0000X * D:0 (0, 1) 00X0X * D:0 (0, 1, 4, 5) (0,1,4,5,16,17,20,
0X000 * D:0 (0, 8) X000X * D:0 (0, 1, 16, 17) 21)
X0000 * D:0 (0, 16) XX000 D:0 (0, 8, 16, 24)
00100 * D:0 (4) 0010X * D:0 (4, 5) X010X * D:0 (4, 5, 20, 21)
00001 * D:1 (1) X0100 * D:0 (4, 20) X0X01 * D:0 (1, 5, 17, 21)
01000 * D:1 (8) X0001 * D:0 (1, 17) X10X0 D:0 (8, 10, 24, 26)
10000 * D:1 (16) 00X01 * D:1 (1, 5) 10X0X * D:0 (16, 17, 20, 21)
010X0 * D:0 (8, 10) 1X00X D:0 (16, 17, 24, 25)
X1000 * D:1 (8, 24)
1000X * D:0 (16, 17)
10X00 * D:1 (16, 20)
1X000 * D:1 (16, 24)
01010 * D:0 (10) X1010 * D:0 (10, 26) X101X D:0 (10, 11, 26, 27)
10001 * D:0 (17) 0101X * D:0 (10, 11) 10XX1 D:0 (17, 19, 21, 23)
00101 * D:1 (5) 10X01 * D:0 (17, 21) 1X0X1 D:0 (17, 19, 25, 27)
10100 * D:1 (20) 100X1 * D:0 (17, 19) X01X1 D:0 (5, 7, 21, 23)
11000 * D:1 (24) 1X001 * D:0 (17, 25) 110XX D:0 (24, 25, 26, 27)
X0101 * D:0 (5, 21)
001X1 * D:1 (5, 7)
1010X * D:0 (20, 21)
110X0 * D:0 (24, 26)
1100X * D:1 (24, 25)
10101 * D:0 (21) 101X1 * D:0 (21, 23) 1XX11 D:0 (19, 23, 27, 31)
11010 * D:0 (26) 1101X * D:0 (26, 27)
00111 * D:1 (7) X0111 * D:1 (7, 23)
01011 * D:1 (11) X1011 * D:0 (11, 27)
10011 * D:1 (19) 1X011 * D:0 (19, 27)
11001 * D:1 (25) 10X11 * D:1 (19, 23)
110X1 * D:0 (25, 27)
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.
0 4 10 17 21 26 27 31
c'd'e' (0, 8, 16, 24) P0
bc'e' (8, 10, 24, 26) P1
ac'd' (16, 17, 24, 25) P2
bc'd (10, 11, 26, 27) P3
ab'e (17, 19, 21, 23) P4
ac'e (17, 19, 25, 27) P5
b'ce (5, 7, 21, 23) P6
abc' (24, 25, 26, 27) P7
ade (19, 23, 27, 31) P8
b'd' (0, 1, 4, 5, 16, 17, 20, 21) P9
Zahtjev:
p = (P1 + P3)(P1 + P3 + P 7 )
Rjeenje jednadbe:
p = P1 + P1 P3 + P1 P 7 + P3 + P3 P 7
5.17. Zadatak
Zadane su funkcije
f 1 = (0,1,2,4,5,11,15) , f 2 = (0,2,4,13,15) , f 3 = (0,1,3,4,5,7,13,15) .
Pronai minimalni oblik ovih funkcija takav da je ukupni broj produkata u svim funkcijama
minimalan.
Konano, u treoj fazi trae se minimalni oblici svake funkcije zasebno. Pri tome se jo
jednom moe konstruirati tablica (iz koje su izbrisani oni produkti koji su ispali u
drugoj fazi), ili se moe koristiti postojea tablica (uz krianje izbaenih produkata).
Specifinost ove faze jest da minimizacija provodi samo uz produkte koji nisu izbaeni
u drugoj fazi. I opet su mogue dvije situacije: ili e se sada svi mintermi za svaku
funkciju moi pokriti runo, ili se opet moe primjeniti Pyne-McCluskey.
Analizom tablice moe se vidjeti da npr. minterm 15 nije oznaen kao kombiniran
(nema zvjezdice), iako je taj minterm bio kombiniran ak dva puta. Zato onda nije
Minimizacija logikih funkcija. 123
f1 f2 f3
0 1 2 4 5 11 15 0 2 4 13 15 0 1 3 4 5 7 13 15
abcd P0
a'b'd' P1
a'c'd' P2
acd P3
abd P4
a'c' P5
a'd P6
bd P7
124 M. upi Zbirka rijeenih zadataka
Da se je u ovom koraku dogodila situacija u kojoj svi mintermi nisu pokriveni, postupak
bismo nastavili Pyne-McCluskey metodom. Cilj bi bio pronai jo minimalni broj
produkata koje treba uzeti, tako da se pokriju sve funkcije. Produkti koji bi nakon tog
koraka ostali neiskoriteni, takoer bi se zanemarili u sljedeoj fazi.
U naem primjeru, pronaeni 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).
f1
0 1 2 4 5 11 15
a'b'd' P1
a'c'd' P2
acd P3
abd P4
a'c' P5
a'd P6
f2
0 2 4 13 15
a'b'd' P1
a'c'd' P2
acd P3
abd P4
a'c' P5
a'd P6
f3
0 1 3 4 5 7 13 15
a'b'd' P1
a'c'd' P2
acd P3
abd P4
a'c' P5
a'd P6
p = ( P 2 + P5)( P 2 + P5) = P 2 + P5 + P 2 P5
5.18. Zadatak
Na ovom primjeru pokazat emo jednu od estih pogreaka koje se dogaaju prilikom
minimizacije. Krenimo u minimizaciju tako da pronaemo najvee mogue zaokruenje
minterme 5, 7, 13 i 15, kao to je prikazano na slici.
BD
AB
00 01 11 10
CD 00 1
01 1 1 1
D
11 1 1 1
10 1 C
A
B
126 M. upi Zbirka rijeenih zadataka
BD A BC
AB AC D
00 01 11 10
CD 00 1
01 1 1 1
D
11 1 1 1
10 1 C
A ABC
A CD B
f = BD + ABC + A CD + A BC + AC D
No analizirajmo sada malo bolje prvo zaokruenje koje smo napravili. Osnovna ideja
minimizacije jest pokriti sve minterme, ali tako da se u svakom zaokruenju nalazi
barem jedan minterm kojeg ne pokriva niti jedno drugo zaokruenje 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 zaokruenjem, te je stoga
redundantan. To veliko zaokruenje treba izbaciti iz dobivenog izraza, kako bismo
dobili minimalni oblik.
A BC
AB AC D
00 01 11 10
CD 00 1
01 1 1 1
D
11 1 1 1
10 1 C
A ABC
A CD B
f = ABC + A CD + A BC + AC D
Pokuajmo sada razmiljati na drugi nain. Izbacili smo najvee zaokruenje, a ostavili
manja (dakle, koja ovise o vie varijabli). Moemo li nekako ipak to najvee
zaokruenje ostaviti, a manja proglasiti redundantima? Npr. pokuajmo sa
zaokruenjem koje obuhvaa minterme 3 i 7. Kada bi veliko zaokruenje ostalo, ono bi
pokrivalo minterm 7. No minterm 3 nitko drugi ne pokriva! A budui da prilikom
minimizacije uvijek traimo najvea mogua zaokruenja, minterm 3 nuno emo
pokriti zaokruenjem koje se protee preko minterma 7. Dakle, zaokruenje 3 i 7 nuno
ostaje. Slinu analizu moemo provesti i za ostala dvolana zaokruenja. Svako od njih
pokriva jedan minterm koji nitko drugi ne pokriva. Konaan rezultat analize slae se,
dakle, s prethodnim rjeenjem potrebno je odbaciti veliko zaokruenje.
Ovakve pogreke vrlo su este u rjeavanju zadatka minimizacije. Zbog toga je nakon
postupka minimizacije uvijek potrebno provjeriti uvjet minimalnosti:
Uvjet minimalnosti svako zaokruenje koje ulazi u minimalni oblik funkcije mora
imati barem jedan minterm (ili maksterm) koji je pokriven iskljuivo njime.
5.19. Zadatak
BD
AD
AB
AB
00 01 11 10
CD 00 1 1
01 1 1
11 1 1
10 1 1
128 M. upi Zbirka rijeenih zadataka
Rjeenje je, dakako, krivo! Paljivom analizom moe se uoiti da je prvo zaokruenje
( AB ) redundantno (moete li objasniti zato?). Ispravno rjeenje tada je:
BD
AD
AB
00 01 11 10
CD 00 1 1
01 1 1
11 1 1
10 1 1
f = B D + A D
5.20. Zadatak
Zadana je funkcije f koja za ulazni trobitni binarno kodirano broj odreuje da li je broj djeljiv
sa 4.
a) pronai minimalni oblik funkcije f,
b) pronai minimalni oblik funkcije f, ako je poznato da e sklop koji obavlja ovu funkciju
ulaz dobivati sa sklopa koji obavlja kvadriranje.
n b2 b1 b0 f
0 0 0 0 1
1 0 0 1 0
2 0 1 0 0
3 0 1 1 0
4 1 0 0 1
5 1 0 1 0
6 1 1 0 0
7 1 1 1 0
Minimizacija logikih funkcija. 129
b1 b0
b1b0
00 01 11 10
b2 0 1
1 1 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 pomou tri bita.
No to znai da nam je rezultat funkcije f bitan samo u ta tri sluaja, a ostalo nas nije
briga. Zbog toga tablini prikaz funkcije korigiramo kao to je prikazano u nastavku.
n b2 b1 b0 f
0 0 0 0 1
1 0 0 1 0
2 0 1 0
3 0 1 1
4 1 0 0 1
5 1 0 1
6 1 1 0
7 1 1 1
b0
b1b0
00 01 11 10
b2 0 1
1 1 b2
b1
b0
f = b0
130 M. upi Zbirka rijeenih zadataka
Zadana je dvoizlazna funkcija f=[f1, f2] pri emu su izlazi definirani sljedeim 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) .
Pronai njezin minimalni oblik koristei Quine-McCluskey metodu minimizacije za
vieizlazne funkcije.
f 2 = m(6,7,8,10) .
0000 * F:10 (0) 000X F:10 (0, 1) X0X0 F:10 (0, 2, 8, 10)
00X0 * F:10 (0, 2)
X000 * F:10 (0, 8)
0001 * F:10 (1) 0X10 F:10 (2, 6)
0010 * F:10 (2) X010 * F:10 (2, 10)
1000 * F:11 (8) 10X0 F:11 (8, 10)
0110 F:11 (6) 011X F:01 (6, 7)
1010 * F:11 (10)
0111 * F:01 (7)
f1 f2
0 1 2 6 8 10 6 7 8 10
a'bcd' P0
a'b'c' P1
a'cd' P2
ab'd' P3
a'bc P4
b'd' P5
f1 f2
0 1 2 6 8 10 6 7 8 10
a'b'c' P1
a'cd' P2
ab'd' P3
a'bc P4
Minimizacija logikih funkcija. 131
Sada treba na temelju dobivene tablice minimizirati svaku funkciju posebno. Imamo:
f1
0 1 2 6 8 10
a'b'c' P1
a'cd' P2
ab'd' P3
a'bc P4
f 1 = A B C + A CD + AB D
f2
6 7 8 10
a'b'c' P1
a'cd' P2
ab'd' P3
a'bc P4
f 2 = AB D + A BC
U sluaju da imamo tablini prikaz funkcija, zadatak moemo rjeavati na dva naina.
Prvi nain podrazumijeva oitavanje 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 tablini oblik kako bismo mogli obaviti minimizaciju.
Drugi nain (koji emo i koristiti u nastavku) prestavlja direktan rad s tablinim
oblikom funkcija (ime se izbjegava pretvorba u algebarski oblik i vraanje natrag).
Naime, vrijedi sljedee. Ako tablini zapis funkcije promatramo kao matricu, tada e
(uz zadan izraz za z) vrijediti:
Dakle, definiranu operaciju treba jednostavno primijeniti za svaki par elemenata tablice.
Dobije se sljedei prikaz funkcije z:
132 M. upi Zbirka rijeenih zadataka
z: AB
CD
0 0 1 0
1 1 0 1
0 1 0 0
1 1 1 0
B ( D + A) ( B + A D ) = 0
slijedi:
(B + A D ) (B + A D ) = 0 A D (B + B ) = 0 A D = 0
Odavde moemo oitati koje se kombinacije ulaznih varijabli nikada nee pojaviti kod
funkcije, te ih moemo proglasiti don't care vrijednostima. Ako to jo nije oito,
moemo si pomoi i dalje. Naime, ako e prethodni izraz uvijek vrijediti, tada njegov
komplement nikada nee vrijediti:
A D = 0 A D 0 A+ D 1 A+ D = 0
Dakle, nikad nee biti A+D jednako 0, to znai 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. Oznaimo te minterme u tablici, i krenimo na minimizaciju.
AB
z: AB
00 01 11 10 BCD
CD 00 1
01 1 1 1
D
11 1
10 1 C
A BD
B
z = A B + BD + B C D
Minimizacija logikih funkcija. 133
5.23. Zadatak
f ( A, B, C ) = A B C + AB C + ABC + ABC
i1
A &
1
B
i2
1 &
C
1 f
1
&
i3
&
i4
Za analizu rada posluit 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;
component sklopOR4 is
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
end Behavioral;
Kako se sklop ponaa, najbolje se vidi iz simulacije. Pri tome nisu simulirani svi
mogui ulazi, ve samo neki. Rezultat je prikazan na slici.
Iz ove analize vidimo da je vrijeme trajanja pogrenog izlaza jednako 10 ns, a pogreka
se je pojavila zbog toga to je jedinica na izlazu i3 nestala prije no to se je pojavila
Minimizacija logikih funkcija. 135
jedinica na izlazu i4, pa je konani rezultat pojava hazarda. Hazard ovog tipa, gdje je
izlaz stalno u '1' (osim kada kratkotrajno prijee u '0') naziva se statiki '1' hazard. No
zato je izlaz i4 kasnio? Analizirajmo to se dogaa s njegovim ulazima. Prva dva ulaza
spojena su na signale A i B. U trenutku t = 400 ns oni se ne mijenjaju. Na trei 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. Oito je glavni krivac
za cijeli dogaaj 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
dou odmah (u t = 400 ns), a ispravan signal C stigne tek u t = 410 ns. Razlog pojave
hazarda dakle je u razliitom vremenu potrebnom da svi signali prou kroz sklop do
izlaza (signali A, B i C to uine nakon dva sklopa, a njihovi komplementi tek nakon tri
sklopa).
Koji se zakljuak moe 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 potvruju i
rezultati simulacije. Neki od prijelaza kod kojih se javlja hazard prikazani su u tablici,
kao i strelicama u K-tablici.
f: BC
00 01 11 10
A 0 1
1 1 1 1
f = B C + AB
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity sklop2 is
Port ( a, b, c : in std_logic;
f : out std_logic);
end sklop2;
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
end Behavioral;
Simulacijom ponaanja sklopa na istu pobudu kao u prvom sluaju dobivamo sljedei
rezultat:
Broj hazardnih impulsa manji je nego u prvom sluaju! Hazardi koji su ostali prikazani
su u tablici:
f: BC
00 01 11 10
A 0 1
1 1 1 1
f: BC
00 01 11 10
A 0 1
1 1 1 1
Na ovaj su nain 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 uvoenjem redundancije; naime, trebamo uvesti novi produkt koji e sadravati
susjedne minterme izmeu kojih nastaje hazard. U zadatku to konkretno znai da treba
uvesti redundantni produkt AC :
f: BC
00 01 11 10
A 0 1
1 1 1 1
138 M. upi Zbirka rijeenih zadataka
Time funkcija poprima oblik f = B C + AB + AC i vie oito nije minimalna. No, ako
vrijedi prethodno uveden uvjet, tada ovako realizirana funkcija vie nema statikog '1'
hazarda. VHDL model sklopa koji realizira funkciju prikazan je u nastavku:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity sklop3 is
Port ( a, b, c : in std_logic;
f : out std_logic);
end sklop3;
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
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 vie 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 razliita sluaja:
ulazne varijable mijenjaju se iz polja gdje funkcija poprima '0' u polje gdje
funkcija poprima '0',
Minimizacija logikih funkcija. 139
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
ulazne varijable mijenjaju se iz polja gdje funkcija poprima '1' u polje gdje
funkcija poprima '1'.
Za vjebu.
5.24. Zadatak
Kada vrimo minimizaciju funkcije K-tablicom, traimo minimalni zapis funkcije prema
kojim kriterijima? Da li je dobiven prikaz funkcije najminimalniji?
No moe li se pronai zapis funkcije z'' za koji je mjera sloenosti jo manja? Generalno
govorei, potrebno je izbaciti dodatni uvjet koji postoji kod minimizacije K-tablicom:
funkcija vie ne mora biti izvedena kroz najvie dvije razine logike. Ako to uvaimo,
funkciju f moemo dalje zapisati kao z'': f ( A, B, C , D ) = A ( B + CD) . Mjera sloenosti
funkcije sada je jednaka (f,z'')=2+1+22+12=9. Dakle, pronali smo zapis funkcije kod
kojega je mjera sloenosti jo manja. Meutim, treba napomenuti da dobiveno
rjeenje ima jednu manu u odnosu na rjeenje K-tablica: povean je broj razina logike,
to u isto logikom smislu nema nikakvog utjecaja, no prilikom realizacije funkcije
140 M. upi Zbirka rijeenih zadataka
vei broj razina logike automatski znai i due vrijeme prolaska signala kroz logike
sklopove i time kasnija reakcija samog sklopa.
5.25. Zadatak
AC
BC ABC BC
A BC
00 01 11 10
A 0 1 1
1 1 1 A
B
AB C
ABC ABC
Vano je uoiti da funkcija moe biti zadana tako da nema niti jedan bitni primarni
implikant! Vidi nerijeene zadatke za primjer.
Minimizacija logikih funkcija. 141
ZADACI ZA VJEBU