INSTYTUT INFORMATYKI SKRYPTY UCZELNIANE
Marek Skomorowski
PODSTAWY UKŁADÓW
CYFROWYCH
Kraków 19962
Spis tre´sci
Przedmowa 5
1 SYSTEMY LICZBOWE I KODY 7
1.1 Systemy liczbowe . . . 7
1.2 Uzupełnienia . . . 10
1.3 Liczby dwójkowe ze znakiem . . . 13
1.4 Podsumowanie . . . 15
2 MINIMALIZACJA FUNKCJI LOGICZNYCH 17 2.1 Elementy algebry Boole’a . . . 17
2.2 Minimalizacja funkcji logicznych . . . 20
2.2.1 Metoda przekształce´n formalnych . . . 20
2.2.2 Metoda tablic Karnaugha . . . 21
2.2.3 Metoda Quine’a–McCluskeya . . . 28
2.3 Podsumowanie . . . 32
3 UKŁADY KOMBINACYJNE 34 3.1 Wst˛ep . . . 34
3.2 Bramki logiczne . . . 34
3.3 Analiza układów kombinacyjnych . . . 40
3.4 Projektowanie układów kombinacyjnych . . . 42
3.4.1 Układy arytmetyczne . . . 43
3.4.2 Dekodery . . . 46
3.4.3 Kodery . . . 48
3.4.4 Multipleksery . . . 49
3.5 Pami˛eci ROM . . . 50
3.6 Programowalne układy logiczne PLD . . . 51
3.6.1 Programowalne struktury logiczne PLA . . . 53
3.6.2 Programowalne struktury logiczne PAL . . . 54
3.7 Podsumowanie . . . 55 4 UKŁADY SEKWENCYJNE 57 4.1 Wst˛ep . . . 57 4.2 Przerzutniki . . . 57 4.2.1 Przerzutnik SR . . . . 57 4.2.2 Przerzutnik D . . . . 58
4.2.3 Przerzutnik D wyzwalany zboczem . . . . 59
4.2.4 Przerzutnik D–MS . . . . 59
4.2.5 Przerzutnik JK . . . . 61
4.2.7 Przerzutnik T . . . . 62
4.3 Analiza synchronicznych układów sekwencyjnych . . . 63
4.4 Projektowanie synchronicznych układów sekwencyjnych . . . 65 4.5 Rejestry . . . 70 4.6 Liczniki . . . 74 4.7 Podsumowanie . . . 75 5 PROCESOR 79 5.1 Wst˛ep . . . 79
5.2 Mikrooperacje przesyłania mi˛edzy rejestrami . . . 80
5.3 Mikrooperacje arytmetyczne i logiczne . . . 82
5.4 Mikrooperacje przesuwania . . . 82
5.5 Przesyłanie za pomoc ˛a szyn . . . 83
5.6 Przesyłanie do pami˛eci i z pami˛eci . . . 84
5.7 Projektowanie jednostki arytmetyczno-logicznej . . . 85
5.8 Układ przesuwania . . . 91
5.9 Przykładowy procesor . . . 93
5.10 Podsumowanie . . . 95
6 JEDNOSTKA STERUJ ˛ACA 96 6.1 Słowo steruj ˛ace . . . 96
6.2 Sterowanie sprz˛etowe . . . 98 6.3 Sterowanie mikroprogramowane . . . 106 6.4 Podsumowanie . . . 110 7 PRZYKŁADOWY KOMPUTER 111 7.1 Wst˛ep . . . 111 7.2 Formaty rozkazów . . . 111 7.3 Lista rozkazów . . . 111 7.4 Wykonywanie rozkazów . . . 112
7.5 Generowanie sygnałów taktuj ˛acych . . . 117
7.6 Projektowanie jednostki steruj ˛acej . . . 118
P r z e d m o w a
Skrypt jest materiałem pomocniczym do przedmiotu "Układy cyfrowe", w ramach pro-gramu studiów informatycznych w Uniwersytecie Jagiello ´nskim.
Celem skryptu jest wprowadzenie do problematyki układów cyfrowych w zakresie niezb˛ednym do zrozumienia budowy i działania prostego, przykładowego komputera. Wszystkie układy cyfrowe s ˛a omówione wył ˛acznie w aspekcie ich struktury logicznej. Technologia, budowa i parametry układów cyfrowych nie s ˛a przedmiotem rozwa˙za´n skry-ptu. Na dobór materiału i sposób jego prezentacji decyduj ˛acy wpływ miały zarówno specy-fika uniwersyteckich studiów informatycznych, cel, jakiemu skrypt ma słu˙zy´c, jak równie˙z ograniczona liczba godzin wykładowych (30).
Skrypt jest przeznaczony przede wszystkim dla studentów uniwersyteckich studiów informatycznych, którzy pierwszy raz stykaj ˛a si˛e z problematyk ˛a układów cyfrowych.
W rozdziałach 1 i 2 zostały podane podstawowe wiadomo´sci na temat systemów liczbo-wych, algebry Boole’a i minimalizacji funkcji logicznych. W rozdziałach 3 i 4 przed-stawiono podstawowe wiadomo´sci na temat układów kombinacyjnych i synchronicznych układów sekwencyjnych. W rozdziale 5 został zaprojektowany prosty przykładowy proce-sor.
W rozdziale 6 podano podstawowe wiadomo´sci na temat sterowania sprz˛etowego (hard-wired control) i mikroprogramowego (microprogrammed control). W rozdziale 7 został zaprojektowany prosty przykładowy komputer.
Recenzentowi skryptu, Panu prof. drowi hab. in˙z. Janowi Zabrodzkiemu z Instytutu Informatyki Politechniki Warszawskiej, dzi˛ekuj˛e za uwagi, które umo˙zliwiły usuni˛ecie usterek maszynopisu.
Panu mgrowi Władysławowi Kaczorowskiemu z Instytutu Informatyki Uniwersytetu Jagiello ´nskiego dzi˛ekuj˛e za pomoc w składaniu tekstu i wykonaniu rysunków w systemie LaMeX.
Marek Skomorowski Kraków, pa´zdziernik 1996
1.1
Systemy liczbowe
W systemie dziesi˛etnym ci ˛ag cyfr123.45 oznacza liczb˛e o warto´sci: 1 · 102+ 2 · 101+ 3 · 100+ 4 · 10−1+ 5 · 10−2
Oznaczaj ˛ac podstaw˛e systemu liczbowego przezp, a cyfry przez ai, mo˙zna ka˙zd ˛a liczb˛e
N zawieraj ˛ac ˛an-cyfrow ˛a cz˛e´s´c całkowit ˛a im-cyfrow ˛a cz˛e´s´c ułamkow ˛a, przedstawi´c w postaci szeregu ([1]): N= an−1pn−1+ an−2pn−2+ . . . + a0p 0 + a−1p −1+ a −2p −2+ . . . . . .+ a−mp −m= n−1 X i=−m aipi (1.1)
lub w nast˛epuj ˛acej postaci:
N = an−1an−2. . . a0.a−1a−2. . . a−m (1.2) W wyra˙zeniu (1.2) kropka jest u˙zywana do oddzielenia cz˛e´sci całkowitej od cz˛e´sci ułam-kowej.
W systemie dwójkowym, stosowanym w układach cyfrowych, podstawa jest równa 2. W systemie dwójkowym cyframi s ˛a0 i 1. W systemie dwójkowym ci ˛ag cyfr 1001.01 oznacza liczb˛e o warto´sci
1 · 23+ 0 · 22+ 0 · 21+ 1 · 20+ 0 · 2−1+ 1 · 2−2= 9.25 (1.3) W celu odró˙znienia liczb o odmiennych podstawach stosuje si˛e notacj˛e polegaj ˛ac ˛a na uj˛eciu zapisu liczby w nawiasy okr ˛agłe () oraz podaniu podstawy systemu liczbowego jako indeksu. Na przykład:
(1001.01)2= (9.25)10
Cyframi w systemie ósemkowym s ˛a: 0, 1, 2, 3, 4, 5, 6, 7. Cyframi w systemie
szes-nastkowym s ˛a: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F . Litery A, B, C, D, E, F , u˙zywane do reprezentowania cyfr szesnastkowych, oznaczaj ˛a odpowiednio liczby dziesi˛etne:10, 11, 12, 13, 14, 15. W systemie ósemkowym ci ˛ag cyfr 123.4 oznacza liczb˛e o warto´sci
1 · 82+ 2 · 81+ 3 · 80+ 4 · 8−1= 83.5 (1.4) W systemie szesnastkowym ci ˛ag cyfrF 5A.C oznacza liczb˛e o warto´sci
8
Wyra˙zenia (1.3), (1.4), (1.5) pokazuj ˛a, w jaki sposób liczby dwójkowe, ósemkowe i szes-nastkowe mo˙zna zamieni´c na równowa˙zne im liczby dziesi˛etne. W podobny sposób mo˙zna dokona´c konwersji liczby w systemie o dowolnej podstawiep na równowa˙zn ˛a jej liczb˛e dziesi˛etn ˛a.
Zamiany liczby dziesi˛etnej na równowa˙zn ˛a jej liczb˛e w systemie o podstawiep
doko-nuje si˛e przez podział liczby na cz˛e´s´c całkowit ˛a i cz˛e´s´c ułamkow ˛a, a nast˛epnie dokonanie konwersji ka˙zdej cz˛e´sci oddzielnie. Zamiany całkowitej liczby dziesi˛etnej na liczb˛e w sys-temie o podstawiep dokonuje si˛e w wyniku kolejnych dziele´n tej liczby przez p i
zapami˛e-tywania kolejnych reszt. Zamiany cz˛e´sci ułamkowej na liczb˛e w systemie o podstawie
p dokonuje si˛e w wyniku kolejnych mno˙ze´n przez liczb˛e p i zapami˛etywania
otrzymy-wanych w ten sposób cyfr cz˛e´sci całkowitej ([2, 3]).
Przykład 1.1. Zamiany liczby dziesi˛etnej 25.90625 na liczb˛e dwójkow ˛a dokonuje si˛e po uprzednim podzieleniu jej na cz˛e´s´c całkowit ˛a (25) i cz˛e´s´c ułamkow ˛a (0.90625), a nast˛epnie dokonaniu konwersji ka˙zdej cz˛e´sci oddzielnie. Cz˛e´s´c całkowit ˛a zamienia si˛e przez dzielenie 25 przez 2, co daje w wyniku 12 i reszt˛e 1. Wynik 12 jest znów dzielony przez 2, co daje kolejny wynik 6 i reszt˛e 0. I tak dalej. Proces ten ko ´nczy si˛e wtedy, kiedy kolejny wynik z dzielenia przez 2 jest równy 0. Cyframi cz˛e´sci całkowitej liczby dwójkowej s ˛a uzyskane kolejno reszty, przy czym pierwsza reszta jest najmniej znacz ˛ac ˛a cyfr ˛a liczby dwójkowej. Proces ten został pokazany poni˙zej.
25|2 = 12 reszta = 1 najmniej znacz ˛aca cyfra
12|2 = 6 reszta =0 6|2 = 3 reszta =0 3|2 = 1 reszta =1
1|2 = 0 reszta =1 najbardziej znacz ˛aca cyfra
(25)10= (11001)2
Dalej b˛edziemy korzysta´c ze skróconego zapisu, to znaczy:
25
12 1 najmniej znacz ˛aca cyfra
6 0 3 0 1 1
0 1 najbardziej znacz ˛aca cyfra
(25)10= (11001)2
Cz˛e´s´c ułamkow ˛a zamienia si˛e przez mno˙zenie 0.90625 przezp = 2, co daje cz˛e´s´c
całkow-it ˛a równ ˛a 1 i cz˛e´s´c ułamkow ˛a równ ˛a 0.8125. Nowa cz˛e´s´c ułamkowa jest znowu mno˙zona przez 2, co daje cz˛e´s´c całkowit ˛a równ ˛a 1 i cz˛e´s´c ułamkow ˛a równ ˛a 0.625. I tak dalej. Dal-sze mno˙zenia ko ´nczy si˛e wtedy, kiedy cz˛e´s´c ułamkowa jest równa 0, lub wtedy, kiedy otrzyma si˛e ˙z ˛adan ˛a liczb˛e cyfr w liczbie dwójkowej. Cyframi cz˛e´sci ułamkowej liczby
dwójkowej s ˛a, wyznaczone w wyniku kolejnych mno˙ze´n, cyfry cz˛e´sci całkowitej. Cyfra pierwszej wyznaczonej cz˛e´sci całkowitej jest cyfr ˛a najbardziej znacz ˛ac ˛a (umieszczon ˛a zaraz po kropce). Proces ten został pokazany poni˙zej.
0.90625 × 2 = 1.8125 cz˛e´s´c całkowita=1 najbardziej znacz ˛aca
0.81250 × 2 = 1.6250 cz˛e´s´c całkowita=1 cyfra 0.62500 × 2 = 1.2500 cz˛e´s´c całkowita=1 0.25000 × 2 = 0.5000 cz˛e´s´c całkowita=0
0.50000 × 2 = 1.0000 cz˛e´s´c całkowita=1 najmniej znacz ˛aca cyfra
(0.90625)10= (0.11101)2 Ostatecznie otrzymujemy
(25.90625)10= (11001.11101)2
Przykład 1.2. Zamiany ułamka dziesi˛etnego 0.345 na ułamek dwójkowy dokonuje
si˛e w nast˛epuj ˛acy sposób:
0.345 × 2 = 0.69 cz˛e´s´c całkowita = 0 najbardziej znacz ˛aca cyfra
0.690 × 2 = 1.38 cz˛e´s´c całkowita = 1 0.380 × 2 = 0.76 cz˛e´s´c całkowita = 0 0.760 × 2 = 1.52 cz˛e´s´c całkowita = 1 0.520 × 2 = 1.04 cz˛e´s´c całkowita = 1 0.040 × 2 = 0.08 cz˛e´s´c całkowita = 0
W tym przypadku proces mno˙zenia kolejnych cz˛e´sci ułamkowych ko ´nczymy wtedy, kiedy liczba wyznaczonych cyfr daje wymagan ˛a dokładno´s´c, na przykład:
(0.345)10= (0.010110)2
Przykład 1.3. Zamiany liczby dziesi˛etnej 1510.90625 na liczb˛e ósemkow ˛a dokonuje si˛e po uprzednim podzieleniu jej na cz˛e´s´c całkowit ˛a (1510) i cz˛e´s´c ułamkow ˛a (0.90625) oraz w wyniku dokonania konwersji ka˙zdej cz˛e´sci oddzielnie:
1510 188 6 (1510)10= (2746)8 23 4 2 7 0 2 0.90625 × 8 = 7.25 cz˛e´s´c całkowita= 7 0.25000 × 8 = 2.00 cz˛e´s´c całkowita= 2 (0.90625)10= (0.72)8
10
Ostatecznie otrzymujemy
(1510.90625)10= (2746.72)8
Przykład 1.4. Zamiany liczby dziesi˛etnej 1951.65625 na liczb˛e szesnastkow ˛a dokonuje si˛e po uprzednim podzieleniu jej na cz˛e´s´c całkowit ˛a (1951) i cz˛e´s´c ułamkow ˛a (0.65625) oraz w wyniku dokonania konwersji ka˙zdej cz˛e´sci oddzielnie:
1951
121 (15)10= (F )16 (1951)10= (79F )16
7 9
0 7
0.65625 × 16 = 10.5 cz˛e´s´c całkowita = (10)10= (A)16
0.50000 × 16 = 8.00 cz˛e´s´c całkowita = 8 (0.65625)10= (0.A8)16 Ostatecznie otrzymujemy
(1951.65625)10= (79F.A8)16
Liczba dwójkowa mo˙ze by´c bezpo´srednio zamieniona na liczb˛e ósemkow ˛a. W tym celu nale˙zy podzieli´c j ˛a na grupy 3-bitowe, poczynaj ˛ac od kropki w lewo i w prawo, a nast˛epnie zast ˛api´c otrzymane grupy odpowiadaj ˛acymi im cyframi ósemkowymi. Na przykład:
(010 111 100 110. 111 010)2= (2746.72)8
Liczba dwójkowa mo˙ze by´c bezpo´srednio zamieniona na liczb˛e szesnastkow ˛a. W tym celu nale˙zy podzieli´c j ˛a na grupy 4-bitowe, poczynaj ˛ac od kropki w lewo i w prawo, a nast˛epnie zast ˛api´c otrzymane grupy odpowiadaj ˛acymi im cyframi szesnastkowymi. Na przykład:
(0111 1001 1111. 1010 1000)2= (79F.A8)16
1.2
Uzupełnienia
Uzupełnie´n u˙zywa si˛e w układach cyfrowych do przedstawiania liczb ujemnych w celu up-roszczenia operacji odejmowania ([2, 3, 4]). Istniej ˛a dwa rodzaje uzupełnie´n dla ka˙zdego systemu liczbowego o podstawiep:
– uzupełnienie do(p − 1),
Uzupełnienie do(p − 1) n-cyfrowej liczby N o podstawie p jest zdefiniowane jako (pn− 1) − N (1.6) Dla liczb dziesi˛etnych(p − 1) = 9, dla dwójkowych (p − 1) = 1.
Przykład 1.5. Uzupełnieniem do 9 liczby(3456)10jest
(pn− 1) − N = (104− 1) − 3456 = 9999 − 3456 = 6543
Przykład 1.6. Uzupełnieniem do 1 liczby(1001)2jest
(pn− 1) − N = (24− 1) − 1001 = 1111 − 1001 = 0110
Uzupełnienie do 1 liczby dwójkowej uzyskuje si˛e w wyniku odj˛ecia ka˙zdej jej cyfry od 1. Odejmuj ˛ac cyfry dwójkowe od 1 otrzymujemy1 − 0 = 1 lub 1 − 1 = 0. W obu
przypadkach cyfra otrzymana w wyniku odj˛ecia od 1 jest negacj ˛a jej warto´sci. St ˛ad, w celu otrzymania uzupełnienia do 1 danej liczby dwójkowej nale˙zy zanegowa´c wszystkie jej cyfry.
Przykład 1.7. Uzupełnieniem do 1 liczby dwójkowej10101001 jest 01010110.
Uzupełnienie dop dla n-cyfrowej liczby N o podstawie p jest zdefiniowane jako
pn− N (1.7)
Wyra˙zenie (1.7) mo˙zemy zapisa´c w postaci
pn− N = [(pn− 1) − N ] + 1 (1.8) Porównuj ˛ac (1.6), (1.7) i (1.8) mo˙zna zauwa˙zy´c, ˙ze uzupełnienie dop liczby N
otrzy-mujemy przez dodanie 1 do uzupełnienia do(p − 1) liczby N .
Uzupełnienie do 2 mo˙zna równie˙z otrzyma´c, pozostawiaj ˛ac, od prawej strony do lewej, wszystkie zera i pierwsz ˛a jedynk˛e bez zmian i neguj ˛ac pozostałe cyfry.
Przykład 1.8. Pozostawiaj ˛ac w liczbie 10010100, od prawej strony do lewej, wszys-tkie zera i pierwsz ˛a jedynk˛e bez zmian, a nast˛epnie neguj ˛ac pozostałe cyfry
10010 100
negacja bez zmian
otrzymujemy jej uzupełnienie do 2 równe 01101100.
Odejmowanie dwóch liczbn-bitowych bez znaku, M − N , w systemie o podstawie p
12
1. Do odjemnejM nale˙zy doda´c uzupełnienie do p odjemnika N
M + (pn− N ) = M − N + pn. (1.9)
2. Je˙zeliM ≥ N , w wyra˙zeniu (1.9) nale˙zy pomin ˛a´cpn, co daje wynikM − N . 3. Je˙zeliM < N , wyra˙zenie (1.9) mo˙zna zapisa´c w postaci:
M + (pn− N ) = pn− (N − M ) (1.10) b˛ed ˛acej uzupełnieniem dop ró˙znicy (N − M ).
Bior ˛ac uzupełnienie dop wyra˙zenia (1.10) i poprzedzaj ˛ac je znakiem mi-nus otrzymujemy:
− {pn− [pn− (N − M )]} = −(N − M ) = M − N
Przykład 1.9. NiechM = (1987)10iN = (1958)10. W tym przypadkup = 10,
n = 4, M > N , a ró˙znic˛e (M − N ) otrzymujemy w nast˛epuj ˛acy sposób:
M = ppppppp ppppppp ppppppp ppppppp pppp 1987 pn− N = 104− 1958 = + 8042 suma= 1 0029 pn= 104 −1 0000 wynik= 0 0029
Przykład 1.10. NiechM = (1958)10iN = (1958)10. W tym przypadkup = 10,
n = 4, M = N , a ró˙znic˛e (M − N ) otrzymujemy w nast˛epuj ˛acy sposób:
M = ppppppp ppppppp ppppppp ppppppp pppp 1958 pn− N = 104− 1958 = + 8042 suma= 1 0000 pn= 104 −1 0000 wynik= 0 0000
Przykład 1.11. NiechM = (1958)10iN = (1987)10. W tym przypadkup = 10,
n = 4, M < N , a ró˙znic˛e (M − N ) otrzymujemy w nast˛epuj ˛acy sposób:
M = 1958
pn− N = 104− 1987 = +8013
−(pn− suma) = −(104− 9971) = −29
Przykład 1.12. NiechM = (11001)2 iN = (1010)2. W tym przypadkup = 2,
n = 5, M > N , a ró˙znic˛e (M − N ) otrzymujemy w nast˛epuj ˛acy sposób:
M = ppppppp ppppppp ppppppp ppppppp pppp 11001 pn− N = 25− 1010 = + 10110 suma= 1 01111 pn= 25 −1 00000 wynik= 0 01111
Przykład 1.13. NiechM = (1010)2iN = (1010)2. W tym przypadkup = 2, n = 4,
M = N , a ró˙znic˛e (M − N ) otrzymujemy w nast˛epuj ˛acy sposób:
M = ppppppp ppppppp ppppppp ppppppp pppp 1010 pn− N = 24− 1010 = + 0110 suma= 1 0000 pn= 24 −1 0000 wynik= 0 0000
Przykład 1.14. NiechM = (1010)2iN = (11001)2. W tym przypadkup = 2,
n = 5, M < N , a ró˙znic˛e (M − N ) otrzymujemy w nast˛epuj ˛acy sposób:
M = 01010
pn− N = 25− 11001 = +00111
suma= 10001
−(pn− suma) = −(25− 10001) = −01111
1.3
Liczby dwójkowe ze znakiem
Przyj˛eto, ˙ze plus jest reprezentowany przez 0, minus natomiast przez 1 ([1, 2, 3, 4]). Zatem do przedstawienian-bitowej liczby dwójkowej z uwzgl˛ednieniem jej znaku potrzeba n + 1
bitów. Liczby dwójkowe ze znakiem mog ˛a by´c reprezentowane w nast˛epuj ˛acy sposób: 1. znak-moduł,
2. znak-uzupełnienie do 1, 3. znak-uzupełnienie do 2.
Zapis liczby dodatniej jest taki sam w ka˙zdym z wymienionych sposobów. W za-pisie znak-moduł liczby ujemnej warto´s´c bezwzgl˛edna liczby nast˛epuje bezpo´srednio po ujemnym znaku. W pozostałych dwóch zapisach liczba ujemna jest reprezentowana przez
14
uzupełnienie do 1 lub do 2 jej warto´sci. Na rysunku 1.1 s ˛a przedstawione 4-bitowe liczby dwójkowe ze znakiem.
Zapis Zapis znak- Zapis znak- Zapis
dziesi˛etny -uzupełnienie do 2 -uzupełnienie do 1 znak-moduł
+3 0011 0011 0011 +2 0010 0010 0010 +1 0001 0001 0001 +0 0000 0000 0000 −0 – 1111 1000 −1 1111 1110 1001 −2 1110 1101 1010 −3 1101 1100 1011
Rys. 1.1. Liczby dwójkowe ze znakiem
Zalet ˛a zapisu znak-uzupełnienie do 2, w porównaniu z pozostałymi zapisami, jest istnienie tylko jednej reprezentacji zera (rys. 1.1).
Przykład 1.15. Na rysunku 1.2 zostały podane przykłady dodawania dwóch 8-bitowych
liczb dwójkowych ze znakiem (i ich równowa˙zników dziesi˛etnych), przy czym liczby ujemne s ˛a przedstawione w zapisie znak-uzupełnienie do 2.
+5 +9 +14 00000101 00001001 00001110 −5 +9 +4 ppppppp ppppppp pppp 11111011 00001001 1 00000100 +5 −9 −4 00000101 11110111 11111100 −5 −9 −14 ppppppp ppppppp pppp 11111011 11110111 1 11110010
Rys. 1.2. Dodawanie liczb dwójkowych ze znakiem
W podanych przykładach bit przeniesienia z najstarszej pozycji jest pomijany, a otrzymany wynik, w przypadku gdy jest ujemny, jest przedstawiony w zapisie znak-uzupełnienie do 2. Je˙zeli dodaj ˛ac dwie n-bitowe liczby bez znaku otrzymujemy wynik na n + 1 bitach, to mówimy, ˙ze wyst ˛apił nadmiar lub przepełnienie (overflow). Poj˛ecie nadmiaru wyja´snimy na nast˛epuj ˛acym przykładzie.
Przykład 1.16 150 ppppppp ppppppp ppppp 1 0 0 1 0 1 1 0 + 190 1 0 1 1 1 1 1 0 340 1 0 1 0 1 0 1 0 0
W przykładzie tym przyj˛ety format danych obejmuje 8 bitów (liczby bez znaku). Zakres liczb bez znaku zapisanych na o´smiu bitach obejmuje liczby od 0 do 255. Wynik dodawa-nia 150 + 190 = 340 wykracza poza ten zakres. Bit przeniesiedodawa-nia z najbardziej znacz ˛acej pozycji wykracza poza przyj˛ety format danych i jest bitem nadmiaru.
W przypadku liczb ze znakiem nadmiar mo˙ze wyst ˛api´c wtedy, kiedy dodajemy dwie liczby dodatnie lub ujemne. Ilustruje to nast˛epuj ˛acy przykład.
Przykład 1.17 50 0 0 1 1 0 0 1 0 + 90 0 1 0 1 1 0 1 0 140 1 0 0 0 1 0 0 0 − 50 1 1 0 0 1 1 1 0 − 90 1 0 1 0 0 1 1 0 − 140 10 1 1 1 0 1 1 0
W przykładzie tym przyj˛ety format danych obejmuje 8 bitów (liczby ze znakiem). Na-jbardziej znacz ˛acy bit jest bitem znaku. Zakres liczb ze znakiem zapisanych na o´smiu bitach obejmuje liczby od +127 do−128. Widzimy, ˙ze zapisany na o´smiu bitach wynik
dodawania liczb dodatnich 50 + 90 = 140 ma znak ujemny (1 na bicie znaku). Bł ˛ad ten spowodowany jest tym, ˙ze liczba 50 + 90 = 140 wykracza poza zakres od +127 do−128.
Widzimy równie˙z, ˙ze zapisany na o´smiu bitach wynik dodawania liczb ujemnych−50 +
(−90) = −140 ma znak dodatni (0 na bicie znaku). Bł ˛ad ten spowodowany jest tym, ˙ze liczba−50 + (−90) = −140 wykracza poza zakres od +127 do −128.
1.4
Podsumowanie
Systemy liczbowe, kody i arytmetyka binarna zostały przedstawione w rozdziale 1 w za-kresie niezb˛ednym do zrozumienia materiału prezentowanego w dalszej cz˛e´sci skryptu.
Systemy liczbowe, kody i arytmetyka binarna stanowi ˛a materiał na odr˛ebny wykład. Wiadomo´sci na temat systemów liczbowych, kodów i algorytmów stosowanych w oper-acjach arytmetycznych na liczbach stałoprzecinkowych i zmiennoprzecinkowych s ˛a obsz-ernie przedstawione, na przykład w [5, 6].
Literatura
[1] Kalisz J.: Podstawy elektroniki cyfrowej, WKŁ, 1993. [2] Mano M.M.: Architektura komputerów, WNT, 1980.
16
[3] Mano M.M.: Computer engineering: hardware design, Prentice-Hall, 1988.
[4] Mano M.M.: Computer system architecture, Prentice-Hall, 1993. [5] Flores I.: Arytmetyka maszyn cyfrowych, WNT, 1970.
2.1
Elementy algebry Boole’a
Algebra Boole’a jest działem matematyki wykorzystywanym do projektowania i analizy układów cyfrowych. Zmienne boolowskie (logiczne) mog ˛a przyjmowa´c warto´sci tylko ze zbioru{0, 1}. W algebrze Boole’a do przedstawienia iloczynu logicznego AND
zmien-nychX i Y b˛edziemy stosowa´c zapis X · Y = XY . Do przedstawienia sumy logicznej
zmiennychX i Y b˛edziemy stosowa´c zapis X + Y . Negacj˛e zmiennej X b˛edziemy
za-pisywa´c jakoX. Na rysunku 2.1 s ˛a przedstawione (za pomoc ˛a tablicy prawdy) definicje nast˛epuj ˛acych funkcji logicznych: AND, OR i NOT.
AND OR NOT X Y X · Y 0 0 0 0 1 0 1 0 0 1 1 1 X Y X + Y 0 0 0 0 1 1 1 0 1 1 1 1 X X 0 1 1 0
Rys. 2.1. Tablice prawdy funkcji AND, OR, NOT
Funkcjami boolowskimi (funkcjami logicznymi) nazywamy funkcje, których zmienne i one same przyjmuj ˛a warto´sci tylko ze zbioru{0, 1}. Rozwa˙zmy funkcj˛e logiczn ˛a
f (x, y, z) = xy + xz + yz
Zale˙zno´s´c mi˛edzy warto´sci ˛a funkcji a warto´sciami jej zmiennych mo˙zna przedstawi´c w tablicy prawdy pokazanej na rysunku 2.2.
Algebra Boole’a ([1, 2, 3, 4]) jest algebr ˛a aksjomatyczn ˛a, przyjmuj ˛ac ˛a aksjomaty przedstawione na rysunku 2.3. W algebrze Boole’a obowi ˛azuje tzw. zasada dualizmu. Zasada ta mo˙ze by´c sformułowana w nast˛epuj ˛acy sposób ([2]): zast˛epuj ˛ac w dowolnej to˙zsamo´sci algebry Boole’a symbol OR (+) symbolem AND (·) i symbol AND (·)
sym-bolem OR (+) oraz zast˛epuj ˛ac jedynk˛e zerem, a zero jedynk ˛a (je´sli wyst˛epuj ˛a w wyra˙ze-niu), otrzymamy równie˙z to˙zsamo´s´c (rys. 2.3). Własno´sci (16) i (17) s ˛a nazywane prawami de Morgana. Prawa de Morgana uogólnione nan zmiennych przyjmuj ˛a posta´c:
x1+ x2+ . . . + xn= x1· x2· · · xn
x1· x2· · · xn = x1+ x2+ . . . + xn
Funkcje logiczne mog ˛a by´c przedstawione w postaci opisu słownego, tablic prawdy i w sposób analityczny.
18
Funkcjan zmiennych jest przedstawiana za pomoc ˛a tablicy prawdy o n + 1
kolum-nach i2n wierszach. W kolejnych wierszach wpisuje si˛e wszystkie kombinacje zmien-nych niezale˙zzmien-nych. Ostatnia kolumna jest przeznaczona do zapisania warto´sci funkcji dla poszczególnych kombinacji zmiennych niezale˙znych. Aby wszystkie mo˙zliwe kombinacje zostały uwzgl˛ednione, wpisujemy je w taki sposób, by tworzyły kolejne liczby (rys. 2.2).
i x y z f (x, y, z) = xy + xz + yz 0 0 0 0 0 1 0 0 1 0 2 0 1 0 0 3 0 1 1 1 4 1 0 0 0 5 1 0 1 1 6 1 1 0 1 7 1 1 1 1
Rys. 2.2. Tablica prawdy funkcjif (x, y, z) = xy + xz + yz
1. x + 0 = x 2. x · 1 = x 3. x + 1 = 1 4. x · 0 = 0 5. x + x = x 6. x · x = x 7. x + x = 1 8. x · x = 0 9. x = x 10. x + y = y + x 11. x · y = y · x 12. x + (y + z) = (x + y) + z 13. x · (y · z) = (x · y) · z 14. x · (y + z) = (x · y) + (x · z) 15. x + (y · z) = (x + y) · (x + z) 16. x + y = x · y 17. x · y = x + y
Rys. 2.3. Aksjomaty algebry Boole’a
Definicja 2.1. Iloczynem pełnymn zmiennych nazywamy taki iloczyn tych
zmien-nych (lub ich negacji), w którym ka˙zda zmienna (lub jej negacja) wyst˛epuje dokładnie jeden raz.
Definicja 2.2. Sum ˛a pełn ˛an zmiennych nazywamy tak ˛a sum˛e tych zmiennych (lub ich negacji), w której ka˙zda zmienna (lub jej negacja) wyst˛epuje dokładnie jeden raz.
Na rysunku 2.4 s ˛a przedstawione iloczyny pełnemii sumy pełneMidla trzech zmi-ennychx, y, z.
x y z Iloczyny pełne mi Sumy pełne Mi 0 0 0 x y z m0 x + y + z M0 0 0 1 x y z m1 x + y + z M1 0 1 0 x y z m2 x + y + z M2 0 1 1 x y z m3 x + y + z M3 1 0 0 x y z m4 x + y + z M4 1 0 1 x y z m5 x + y + z M5 1 1 0 x y z m6 x + y + z M6 1 1 1 x y z m7 x + y + z M7
Rys. 2.4. Iloczyny i sumy pełne dla trzech zmiennychx, y, z
Iloczyn pełny przyjmuje warto´s´c 1 tylko dla jednej kombinacji warto´sci zmiennych. Suma pełna przyjmuje warto´s´c 0 tylko dla jednej kombinacji warto´sci zmiennych.
Twierdzenie 2.1. Dowoln ˛a funkcj˛e logiczn ˛a n zmiennych mo˙zna jednoznacznie
przedstawi´c w postaci sumy iloczynów pełnych:
f (x1, x2, . . . , xn) = 2n −1 X i=0 αimi, αi= f (i)
gdzief (i) oznacza warto´s´c funkcji f (x1, x2, . . . , xn) dla i-tej kombinacji zmiennych.
Twierdzenie 2.2. Dowoln ˛a funkcj˛e logiczn ˛a n zmiennych mo˙zna jednoznacznie
przedstawi´c w postaci iloczynu sum pełnych:
f (x1, x2, . . . , xn) = 2n −1 Y i=0 (αi+ Mi), αi= f (i)
gdzief (i) oznacza warto´s´c funkcji f (x1, x2, . . . , xn) dla i-tej kombinacji zmiennych. Dowody tych twierdze´n s ˛a przedstawione mi˛edzy innymi w [5].
Przykład 2.1. Przedstawi´c funkcj˛ef (x, y, z) zadan ˛a przez tablic˛e prawdy na ry-sunku 2.2 w postaci sumy iloczynów pełnych. Jak wynika z tablicy prawdy, funkcja ta przyjmuje warto´s´c 1 w wierszach: 3, 5, 6 i 7, a warto´s´c 0 w pozostałych. Zatem
f (x, y, z) = 2n −1 X i=0 αimi= 0 · m0+ 0 · m1+ 0 · m2+ + 1 · m3+ 0 · m4+ 1 · m5+ 1 · m6+ 1 · m7
20
f (x, y, z) = m3+ m5+ m6+ m7=
= xyz + xyz + xyz + xyz
Przykład 2.2. Przedstawi´c funkcj˛ef (x, y, z) zadan ˛a przez tablic˛e prawdy na ry-sunku 2.2 w postaci iloczynu sum pełnych. Jak wynika z tablicy prawdy, funkcja ta przyj-muje warto´s´c 0 w wierszach: 0, 1, 2, 4, a warto´s´c 1 w pozostałych. Zatem
f (x, y, z) = 2n −1 Y i=0 (αi+ Mi) = (0 + M0) · (0 + M1) · (0 + M2)· ·(1 + M3) · (0 + M4) · (1 + M5) · (1 + M6) · (1 + M7)
Ka˙zdy czynnik (1 + Mi) = 1 mo˙ze by´c wyeliminowany. Zatem funkcja przyjmuje posta´c
f (x, y, z) = M0· M1· M2· M4=
= (x + y + z)(x + y + z)(x + y + z)(x + y + z)
Funkcja NAND (Not AND) jest negacj ˛a funkcji AND. Funkcja NOR (Not OR) jest negacj ˛a funkcji OR. Tablice prawdy funkcji NAND i NOR (dla dwóch zmiennych) zostały przedstawione na rysunku 2.5. NAND NOR x y x · y 0 0 1 0 1 1 1 0 1 1 1 0 x y x + y 0 0 1 0 1 0 1 0 0 1 1 0
Rys. 2.5. Tablice prawdy funkcji NAND i NOR
Systemem funkcjonalnie pełnym nazywamy taki zbiór funkcji logicznych, który umo˙zli-wia przedstawienie dowolnej funkcji logicznej ([5]). Zbiór zawieraj ˛acy funkcje: AND, OR, NOT tworzy podstawowy system funkcjonalnie pełny. Jednoelementowe zbiory zaw-ieraj ˛ace funkcje NAND lub NOR s ˛a systemami funkcjonalnie pełnymi.
2.2
Minimalizacja funkcji logicznych
2.2.1 Metoda przekształce ´n formalnychFunkcje logiczne mo˙zna upraszcza´c korzystaj ˛ac z podstawowych własno´sci algebry Boole’a (rys. 2.3).
Przykład 2.3. Korzystaj ˛ac z podstawowych własno´sci algebry Boole’a, upro´scimy funkcj˛e:f (x, y, z) = xyz + xyz + xyz + xyz
f (x, y, z) = xyz + xyz + xyz + xyz = = xyz + xyz + xyz + xyz + xyz + xyz =
= yz(x + x) + xz(y + y) + xy(z + z) = yz + xz + xy
2.2.2 Metoda tablic Karnaugha
Funkcjan zmiennych przedstawiona za pomoc ˛a tablicy prawdy ma2niloczynów pełnych równowa˙znych2nliczbom dwójkowym otrzymanym zn cyfr. Funkcja logiczna dla pewnych
iloczynów pełnych jest równa 1, dla innych jest równa 0. Informacj˛e zawart ˛a w tablicy prawdy mo˙zna przedstawi´c podaj ˛ac dziesi˛etny odpowiednik tych iloczynów pełnych, dla których funkcja przyjmuje warto´s´c 1. Na przykład tablic˛e prawdy funkcji z rysunku 2.2 mo˙zna przedstawi´c w nast˛epuj ˛acy sposób:
f (x, y, z) =X(3, 5, 6, 7)
Liczby w nawiasie przedstawiaj ˛a zmienne dwójkowe w kolejno´sci ich pojawiania si˛e w tablicy prawdy. SymbolPoznacza sum˛e iloczynów pełnych wyszczególnionych w naw-iasie. Iloczyny pełne, dla których funkcja przyjmuje warto´s´c 1, s ˛a podane za pomoc ˛a ich dziesi˛etnych odpowiedników. Brakuj ˛ace iloczyny pełne to te, dla których funkcja przyj-muje warto´s´c 0.
Tablica Karnaugha ([1, 2, 3, 4, 5, 6)] jest tablic ˛a składaj ˛ac ˛a si˛e z kwadratów, przy czym ka˙zdemu kwadratowi odpowiada jeden iloczyn pełny. Liczba kwadratów w tabl-icyn zmiennych jest równa 2n. Liczby odpowiadaj ˛ace iloczynom pełnym wpisuje si˛e do tablicy w taki sposób, aby iloczyny pełne w s ˛asiednich (maj ˛acych wspóln ˛a kraw˛ed´z) kwadratach ró˙zniły si˛e od siebie tylko jedn ˛a zmienn ˛a (na jednej pozycji). Porz ˛adek taki jest charakterystyczn ˛a wła´sciwo´sci ˛a tablicy Karnaugha, wykorzystywan ˛a do przeprowadzenia uproszcze´n na podstawie zale˙zno´sci:
xy + xy = x(y + y) = x
gdziex, y s ˛a zmiennymi logicznymi. Zatem zmienn ˛a, która w s ˛asiednich kwadratach przyjmuje ró˙zne warto´sci, mo˙zna pomin ˛a´c. Tablice Karnaugha dla funkcji dwóch, trzech i czterech zmiennych s ˛a pokazane odpowiednio na rysunkach 2.6, 2.7, 2.8.
xn y z }| { 00 10 11 01 xn y z }| { 0 2 3 1 xn y z }| { x y x y x y x y
22 xn y z }| { | {z } z 000 001 011 010 100 101 111 110 xn y z }| { | {z } z 0 1 3 2 4 5 7 6 xn y z }| { | {z } z x y z x y z x y z x y z x y z x y z x y z x y z
Rys. 2.7. Tablica Karnaugha dla funkcji trzech zmiennych
(x, y, z)
Iloczyny pełne z s ˛asiednich kwadratów s ˛a identyczne, z wyj ˛atkiem jednej zmiennej. Zgod-nie z t ˛a definicj ˛a s ˛asiedztwa, kwadraty znajduj ˛ace si˛e na ko ´ncach tego samego rz˛edu te˙z uwa˙za si˛e za s ˛asiednie. Podobnie, kwadraty znajduj ˛ace si˛e na ko ´ncach tej samej kolumny równie˙z uwa˙za si˛e za s ˛asiednie.
w x y z }| { | {z } z 0000 0001 0011 0010 0100 0101 0111 0110 1100 1101 1111 1110 1000 1001 1011 1010 w x y z }| { | {z } z 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10
Rys. 2.8. Tablica Karnaugha dla funkcji czterech zmiennych
(w, x, y, z)
W procesie minimalizacji funkcj˛e logiczn ˛a opisan ˛a za pomoc ˛a tablicy prawdy przed-stawia si˛e w postaci tablicy Karnaugha, wpisuj ˛ac 1 w te kwadraty, dla których warto´s´c funkcji jest równa 1.
Liczba kwadratów ł ˛aczonych w grupy musi by´c równa całkowitej pot˛edze 2. Ka˙zdej grupie kwadratów odpowiada jedno wyra˙zenie, a suma logiczna tych wyra˙ze´n jest up-roszczonym przedstawieniem funkcji.
Przykład 2.4. Upro´sci´c funkcj˛ef (x, y, z) = P(2, 4, 5, 6, 7), korzystaj ˛ac z tablicy
Karnaugha.
xn y z }| { | {z } z 1 1 1 1 1
Rys. 2.9. Tablica Karnaugha dla funkcji
f (x, y, z) =P(2, 4, 5, 6, 7)
W tablicy tej jest 5 kwadratów z wpisan ˛a jedynk ˛a, po jednej dla ka˙zdego iloczynu pełnego, dla którego funkcja przyjmuje warto´s´c 1. W kolumnie 4 zostały poł ˛aczone dwa s ˛asiednie kwadraty. Kolumna ta nale˙zy zarówno doy, jak i do z, zatem odpowiadaj ˛ace jej wyra˙zenie jest równeyz. W wierszu drugim zostały poł ˛aczone 4 s ˛asiednie kwadraty. Wiersz ten nale˙zy dox, zatem odpowiadaj ˛ace mu wyra˙zenie jest równex. Uproszczona funkcja jest
zatem równa
f (x, y, z) =X(2, 4, 5, 6, 7) = x + yz
Przykład 2.5. Upro´sci´c funkcj˛e f (x, y, z) = P(1, 4, 5, 6), korzystaj ˛ac z tablicy
Karnaugha.
Tablica Karnaugha dla tej funkcji jest pokazana na rysunku 2.10.
xn y z }| { | {z } z 1 1 1 1
Rys. 2.10. Tablica Karnaugha dla funkcji
f (x, y, z) =P(1, 4, 5, 6)
W kolumnie 2 zostały poł ˛aczone dwa s ˛asiednie kwadraty, daj ˛ac wyra˙zenie yz. Dwa
kwadraty z 1 na obu ko ´ncach drugiego wiersza s ˛a s ˛asiednie i zostały poł ˛aczone, daj ˛ac wyra˙zeniexz. Uproszczona funkcja jest zatem równa
f (x, y, z) =X(1, 4, 5, 6) = xz + yz
Przykład 2.6. Upro´sci´c funkcj˛ef (x, y, z) = P(0, 2, 4, 6, 7), korzystaj ˛ac z tablicy
24
Tablica Karnaugha dla tej funkcji jest pokazana na rysunku 2.11.
xn y z }| { | {z } z 1 1 1 1 1 ! # "
Rys. 2.11. Tablica Karnaugha dla funkcji
f (x, y, z) =P(0, 2, 4, 6, 7)
Cztery kwadraty w pierwszej i czwartej kolumnie s ˛a s ˛asiednie i zostały poł ˛aczone, daj ˛ac wyra˙zeniez. Kwadraty odpowiadaj ˛ace iloczynom pełnym 6 i 7 zostały poł ˛aczone, daj ˛ac wyra˙zeniexy. Uproszczona funkcja jest zatem równa
f (x, y, z) =X(0, 2, 4, 6, 7) = xy + z
Otrzymane w poprzednich przykładach funkcje miały posta´c sumy iloczynów. Cza-sami jest wygodnie przedstawi´c funkcj˛e w postaci iloczynu sum. Jedynki w tablicy Kar-naugha przedstawiaj ˛a iloczyny pełne, dla których warto´s´c funkcjif jest równa 1. Kwadraty
nie zaznaczone jedynkami okre´slaj ˛a iloczyny pełne, dla których warto´s´c funkcjif jest
równa 0. Wpisuj ˛ac w puste kwadraty zera i ł ˛acz ˛ac je w grupy s ˛asiednich kwadratów otrzy-mujemy negacj˛e funkcjif , to znaczy f . W dalszym ci ˛agu, korzystaj ˛ac z praw de Morgana i neguj ˛acf , otrzymujemy f = f . Otrzymana w ten sposób funkcja (f ) przyjmuje posta´c
iloczynu sum.
Przykład 2.7. Upro´sci´c funkcj˛e
f (a, b, c, d) =X(2, 3, 8, 10, 11, 12, 14, 15)
do postaci sumy iloczynów i do postaci iloczynu sum, korzystaj ˛ac z tablicy Karnaugha. Tablica Karnaugha dla tej funkcji jest pokazana na rysunku 2.12.
a b c z }| { | {z } d 0 0 1 1 0 0 0 0 1 0 1 1 1 0 1 1 # "! ! # " # " ! a b c z }| { | {z } d 0 0 1 1 0 0 0 0 1 0 1 1 1 0 1 1 # "!
Rys. 2.12. Tablica Karnaugha dla funkcji
f (a, b, c, d) =X(2, 3, 8, 10, 11, 12, 14, 15)
Jedynki w tej tablicy odpowiadaj ˛a iloczynom pełnym, dla których funkcjaf przyjmuje
warto´s´c 1. Kwadraty z zerami odpowiadaj ˛a iloczynom pełnym nie zawartym wf i okre´slaj ˛a dopełnienie funkcjif , to znaczy f . Ł ˛acz ˛ac s ˛asiednie kwadraty z jedynkami otrzymujemy uproszczon ˛a funkcj˛e w postaci sumy iloczynów
f (a, b, c, d) =X(2, 3, 8, 10, 11, 12, 14, 15) = ac + ad + bc
Ł ˛acz ˛ac s ˛asiednie kwadraty z zerami, otrzymujemy uproszczon ˛a posta´c negacji funkcjif ,
to znaczy
f = ab + cd + a c
Korzystaj ˛ac z prawa de Morgana, otrzymujemy uproszczon ˛a posta´c funkcji w postaci iloczynu sum
f = f = ab + cd + a c = ab · cd · a c = (a + b) · (c + d) · (a + c)
Jedynki w tablicy Karnaugha reprezentuj ˛a iloczyny pełne, dla których funkcja przyj-muje warto´s´c 1. Zera w tablicy Karnaugha reprezentuj ˛a iloczyny pełne, dla których funkcja przyjmuje warto´s´c 0. S ˛a jednak sytuacje, kiedy nie ma znaczenia, czy dla danego iloczynu pełnego funkcja przyjmuje warto´s´c 0, czy 1. Iloczyny pełne, dla których warto´s´c funkcji mo˙ze by´c dowolna (0 lub 1), nazywa si˛e iloczynami pełnymi nieokre´slonymi i oznacza si˛e w tablicy Karnaugha na przykład przez x. Iloczyny pełne nieokre´slone mog ˛a by´c u˙zywane do upraszczania funkcji. Wybieraj ˛ac dla danej funkcji s ˛asiednie kwadraty w tablicy Kar-naugha, iloczynom pełnym nieokre´slonym mo˙zna przypisa´c warto´s´c 0 lub 1, w zale˙zno´sci od tego, czy umo˙zliwi to uproszczenie funkcji.
Przykład 2.8. Upro´sci´c funkcj˛e
26
nieokre´slon ˛a dla nast˛epuj ˛acych iloczynów pełnych:
n(x, y, z) =Xn(1, 3, 5, 7),
korzystaj ˛ac z tablic Karnaugha.
Powy˙zsz ˛a funkcj˛e mo˙zna przedstawi´c w postaci
f (x, y, z) =X(0, 4, 6) +Xn(1, 3, 5, 7)
Tablica Karnaugha dla tej funkcji jest pokazana na rysunku 2.13.
xn y z }| { | {z } z 1 x x 1 x x 1 # "!
Rys. 2.13. Tablica Karnaugha dla funkcji
f (x, y, z) =X(0, 4, 6) +Xn(1, 3, 5, 7)
Dla iloczynów pełnych nieokre´slonych P n(1, 3, 5, 7), oznaczonych przez x, funkcja mo˙ze przyjmowa´c warto´s´c 0 lub 1. Przyj˛ecie warto´sci 1 dla iloczynów pełnych nieokre´slonych 1, 5, 7 umo˙zliwia uproszczenie funkcji. Kwadraty 1, 5, 7 zostały poł ˛aczone z s ˛ asied-nimi tak, aby uzyska´c maksymaln ˛a liczb˛e kwadratów. Iloczyn pełny nieokre´slony 3 nie umo˙zliwia uproszczenia funkcji i dlatego nie został poł ˛aczony z s ˛asiednimi kwadratami. Uproszczona funkcja jest zatem równa
f (x, y, z) =X(0, 4, 6) +Xn(1, 3, 5, 7) = x + y
Przykład 2.9. Upro´sci´c funkcj˛e
f (a, b, c, d, e) =X(0, 1, 5, 7, 13, 15, 16, 17, 25, 27, 29, 31)
korzystaj ˛ac z tablicy Karnaugha.
a b c d z }| { | {z } e 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 a b c d z }| { | {z } e 16 17 19 18 20 21 23 22 28 29 31 30 24 25 27 26
Rys. 2.14. Tablica Karnaugha dla funkcji pi˛eciu zmiennych(a, b, c, d, e)
Tablica Karnaugha dla funkcji
f (a, b, c, d, e) =X(0, 1, 5, 7, 13, 15, 16, 17, 25, 27, 29, 31)
jest pokazana na rysunku 2.15.
a b c d z }| { | {z } e 1 1 1 1 1 1 # "! a b c d z }| { | {z } e 1 1 1 1 1 1 # "!
Rys. 2.15. Tablica Karnaugha dla funkcji
f (a, b, c, d, e) =X(0, 1, 5, 7, 13, 15, 16, 17, 25, 27, 29, 31)
Uproszczona funkcja jest równa
f (a, b, c, d, e) =X(0, 1, 5, 7, 13, 15, 16, 17, 25, 27, 29, 31) = = ace + abe + a b c d + a b c d = ace + abe + (a + a)b c d =
28
2.2.3 Metoda Quine’a–McCluskeya
Metod˛e Quine’a–McCluskeya ([1, 2, 3, 4, 5, 6]), zwan ˛a równie˙z metod ˛a implikantów prostych, przedstawimy na przykładach:
Przykład 2.10. Upro´sci´c funkcj˛e
f (a, b, c, d) =X(5, 7, 8, 9, 10, 11, 13, 15)
Minimalizacj˛e rozpoczniemy od uporz ˛adkowania zbioru iloczynów pełnych funkcji w taki sposób, aby poszczególne grupy zawierały iloczyny pełne o takiej samej liczbie jedynek. Poszczególne grupy zapisuje si˛e w postaci kolumny, rozpoczynaj ˛ac od grupy z najmniejsz ˛a liczb ˛a jedynek. Grupy te oddziela si˛e od siebie poziom ˛a kresk ˛a. Z lewej strony kolumny wypisujemy dziesi˛etne odpowiedniki liczb dwójkowych.
W omawianym przykładzie otrzymujemy tablic˛e pokazan ˛a na rysunku 2.16
a b c d 8 1 0 0 0 5 0 1 0 1 9 1 0 0 1 10 1 0 1 0 7 0 1 1 1 11 1 0 1 1 13 1 1 0 1 15 1 1 1 1
Rys. 2.16. Szeregowanie iloczynów pełnych według liczby jedynek (przykład 2.10)
Nast˛epnie porównujemy ka˙zd ˛a kombinacj˛e nale˙z ˛ac ˛a do danej grupy z ka˙zd ˛a kombi-nacj ˛a nale˙z ˛ac ˛a do grupy nast˛epnej. Je˙zeli porównywane kombinacje ró˙zni ˛a si˛e od siebie tylko na jednej pozycji, to ł ˛aczymy je w now ˛a kombinacj˛e, zast˛epuj ˛ac ró˙zni ˛ace si˛e pozycje dowolnym znakiem, na przykład znakiem−. Otrzymane w ten sposób kombinacje
zapisu-jemy w nowej kolumnie. Z lewej strony kolumny wypisuzapisu-jemy dziesi˛etne odpowiedniki składników nowej kombinacji.
a b c d 8,9 1 0 0 – 8,10 1 0 – 0 5,7 0 1 – 1 5,13 – 1 0 1 9,11 1 0 – 1 9,13 1 – 0 1 10,11 1 0 1 – 7,15 – 1 1 1 11,15 1 – 1 1 13,15 1 1 – 1
Rys. 2.17. Ł ˛aczenie kombinacji ró˙zni ˛acych si˛e na jednej pozycji (przykład 2.10) Kontynuujemy procedur˛e ł ˛aczenia, usuwaj ˛ac powtarzaj ˛ace si˛e kombinacje. Procedur˛e ł ˛aczenia ko ´nczymy wtedy, kiedy nie ma ju˙z mo˙zliwo´sci dokonywania dalszych ł ˛acze´n. Ka˙zda kombinacja nie podlegaj ˛aca dalszemu ł ˛aczeniu jest nazywana implikantem prostym.
W omawianym przykładzie otrzymujemy tablic˛e pokazan ˛a na rysunku 2.18.
a b c d
8,9,10,11 1 0 – –
5,7,13,15 – 1 – 1
9,11,13,15 1 – – 1
Rys. 2.18. Ł ˛aczenie kombinacji ró˙zni ˛acych si˛e na jednej pozycji (przykład 2.10)
Nast˛epnie rysujemy siatk˛e składaj ˛ac ˛a si˛e z linii pionowych i poziomych. Liczba linii pionowych jest równa liczbie iloczynów pełnych minimalizowanej funkcji. Liczba linii poziomych jest równa liczbie otrzymanych implikantów prostych. Liniom pionowym przypisujemy liczby dziesi˛etne odpowiadaj ˛ace iloczynom pełnym, liniom poziomym nato-miast implikanty proste. Analizuj ˛ac siatk˛e stawiamy dowolny znak, na przykład kropk˛e (•), w miejscach, w których linia odpowiedniego implikanta prostego okre´slonego przez
dane liczby przecina si˛e z liniami iloczynów pełnych odpowiadaj ˛acych tym liczbom. W omawianym przykładzie otrzymujemy siatk˛e pokazan ˛a na rysunku 2.19
8,9,10,11 5,7,13,15 9,11,13,15 ab bd ad 5 7 8 9 10 11 13 15 s s s s s s s s s s s s
30
Uproszczona funkcja, równowa˙zna funkcji minimalizowanej, mo˙ze by´c otrzymana w postaci sumy wybranych implikantów prostych. Wybór implikantów prostych jest przeprowad-zony tak, aby wszystkie iloczyny pełne wyst˛epuj ˛ace w funkcji minimalizowanej były reprezentowane w implikantach prostych. Liczba wybranych implikantów prostych powinna by´c jak najmniejsza. W omawianym przykładzie otrzymujemy nast˛epuj ˛ace funkcje up-roszczone, równowa˙zne funkcji minimalizowanej:
f1(a, b, c, d) = ab + bd
f2(a, b, c, d) = ab + bd + ad
Najmniejsza liczba implikantów prostych wyst˛epuje w funkcji
f1(a, b, c, d) Ostatecznie otrzymujemy
f (a, b, c, d) =X(5, 7, 8, 9, 10, 11, 13, 15) = ab + bd
Przykład 2.11. Upro´sci´c funkcj˛e
f (a, b, c, d) =P(0, 1, 4, 6, 8, 12, 14) + P n(5, 10, 13, 15)
Porz ˛adkuj ˛ac zbiór wszystkich iloczynów pełnych w grupy o takiej samej liczbie je-dynek, otrzymujemy tablic˛e pokazan ˛a na rysunku 2.20.
a b c d 0 0 0 0 0 1 0 0 0 1 4 0 1 0 0 8 1 0 0 0 5 0 1 0 1 6 0 1 1 0 10 1 0 1 0 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1
Ł ˛acz ˛ac ró˙zni ˛ace si˛e na jednej pozycji kombinacje z s ˛asiednich grup otrzymujemy tablic˛e pokazan ˛a na rysunku 2.21
a b c d 0,1 0 0 0 – 0,4 0 – 0 0 0,8 – 0 0 0 1,5 0 – 0 1 4,5 0 1 0 – 4,6 0 1 – 0 4,12 – 1 0 0 8,10 1 0 – 0 8,12 1 – 0 0 5,13 – 1 0 1 6,14 – 1 1 0 10,14 1 – 1 0 12,13 1 1 0 – 12,14 1 1 – 0 13,15 1 1 – 1 14,15 1 1 1 –
Rys. 2.21. Ł ˛aczenie kombinacji ró˙zni ˛acych si˛e na jednej pozycji (przykład 2.11)
Kontynuuj ˛ac procedur˛e ł ˛aczenia otrzymujemy tablic˛e pokazan ˛a na rysunku 2.22.
a b c d 0,1,4,5 0 – 0 – 0,8,4,12 – – 0 0 4,5,12,13 – 1 0 – 4,6,12,14 – 1 – 0 8,10,12,14 1 – – 0 12,13,14,15 1 1 – –
Rys. 2.22. Ł ˛aczenie kombinacji ró˙zni ˛acych si˛e na jednej pozycji (przykład 2.11)
Poniewa˙z nie ma ju˙z mo˙zliwo´sci dokonywania dalszych ł ˛acze´n, rysujemy siatk˛e pokazan ˛a na rysunku 2.23
32 0 1 4 6 8 12 14 s s s s s s s s s s s s s s s s s s 12,13,14,15 a b 8,10,12,14 a d 4,6,12,14 b d 4,5,12,13 b c 0,8,4,12 c d 0,1,4,5 a c
Rys. 2.23. Tablica implikantów prostych (przykład 2.11)
Otrzymujemy nast˛epuj ˛ace funkcje uproszczone, równowa˙zne funkcji minimalizowanej:
f1(a, b, c, d) = a c + bd + c d
f2(a, b, c, d) = a c + bd + ad
2.3
Podsumowanie
Opisane w rozdziale 2 metody minimalizacji funkcji logicznych s ˛a metodami podsta-wowymi, z których b˛edziemy korzystali w dalszej cz˛e´sci skryptu. S ˛a równie˙z inne metody minimalizacji funkcji logicznych, na przykład metoda bezpo´sredniego przeszukiwania ([4]). Osobn ˛a grup˛e stanowi ˛a metody minimalizacyjne układu funkcji logicznych odnosz ˛ace si˛e do układów kombinacyjnych wielowyj´sciowych (układy kombinacyjne b˛ed ˛a omaw-iane w rozdziale 3). W tym przypadku poza wymaganiem minimalnej zło˙zono´sci ka˙zdej funkcji logicznej wymaga si˛e równie˙z, aby miały jak najwi˛ecej elementów wspólnych ([1]). Opisywane w literaturze ([4, 6]) metody wykorzystuj ˛a w tym przypadku zmody-fikowany algorytm Quine’a-McCluskeya.
Literatura
[1] Kalisz J.: Podstawy elektroniki cyfrowej, WKŁ, 1993. [2] Majewski W.: Układy logiczne, WNT, 1993.
[3] Mano M.M.: Computer engineering: hardware design, Prentice-Hall, 1988.
[4] Traczyk W.: Układy cyfrowe. Podstawy teoretyczne i metody syntezy, WNT, 1986. [5] Bromirski J.: Teoria automatów, WNT, 1969.
[6] McCluskey E.: Logic design principles, Prentice-Hall, 1986
Z a d a n i a
Zadanie 2.1. Upro´sci´c nast˛epuj ˛ace funkcje logiczne:
f1(A, B, C, D) = X (0, 2, 6, 8, 10, 14) f2(A, B, C, D) = X (0, 1, 5, 8, 9, 13) f3(A, B, C, D) = X (0, 2, 6, 8) +Xn(10, 11, 12, 13, 14, 15) f4(A, B, C, D) = X (0, 1, 3, 4, 5, 6, 7, 8, 9) +Xn(10, 11, 12, 13, 14, 15)
3
UKŁADY KOMBINACYJNE
3.1
Wst˛ep
Układem kombinacyjnym ([1, 2, 3, 4, 5]) nazywamy taki układ logiczny, w którym ka˙zda kombinacja warto´sci zmiennych wej´sciowych jednoznacznie okre´sla kombinacj˛e warto´sci zmiennych wyj´sciowych. Oznaczmy przezX zbiór wszystkich mo˙zliwych warto´sci
zmi-ennych wej´sciowych, przez Y za´s zbiór wszystkich mo˙zliwych warto´sci zmizmi-ennych wyj´s-ciowych. Rozwa˙zmy układ kombinacyjny om wej´sciach i n wyj´sciach pokazany na
ry-sunku 3.1. Układ kombinacyjny xm x2 x1 .. . yn y2 y1 .. .
-Rys. 3.1. Schemat blokowy układu kombinacyjnego
Działanie układu kombinacyjnego opisuje funkcja logiczna
Y = f (X)
równowa˙zna układowi nast˛epuj ˛acych funkcji logicznych:
y1= f1(x1, x2, . . . , xm) ..
.
yn= fn(x1, x2, . . . , xm)
Układ kombinacyjny mo˙zna opisa´c równie˙z za pomoc ˛a tablicy prawdy. Najprostszymi układami kombinacyjnymi s ˛a bramki logiczne (digital logic gates).
3.2
Bramki logiczne
W układach cyfrowych informacj˛e dwójkow ˛a przedstawia si˛e najcz˛e´sciej za pomoc ˛a napi˛e-cia elektrycznego w jednej z dwóch rozró˙znialnych warto´sci: poziom niski L (low) i
poziom wysokiH (high). W logice dodatniej (positive logic) poziom ni˙zszy
Warto´s´c Warto´s´c logiczna sygnału 0 1 L H
Rys. 3.2. Sygnały dwójkowe w logice dodatniej
W praktyce zamiast poziomów okre´sla si˛e dwa przedziały napi˛e´c, wewn ˛atrz których powinien znajdowa´c si˛e poziom sygnału reprezentuj ˛acego logiczne 0 i 1. Przykładowe przedziały napi˛e´c s ˛a pokazane na rysunku rys. 3.3.
6napi˛ecie [ V ] 0 1 2 3 4 5 zero logiczne jedynka logiczna
Rys. 3.3. Przykładowe przedziały napi˛e´c reprezentuj ˛ace zero logiczne i jedynk˛e logiczn ˛a Bramkami logicznymi nazywamy układy elektroniczne realizuj ˛ace funkcje logiczne jednej lub wielu zmiennych. Na rysunku 3.4 s ˛a przedstawione nazwy, symbole graficzne, funkcje logiczne i tablice prawdy dla bramek logicznych o jednym lub dwóch wej´sciach ([3, 6]). Wszystkie bramki logiczne, z wyj ˛atkiem NOT i Bufora, mog ˛a mie´c wi˛eksz ˛a liczb˛e wej´s´c.
Na rysunku 3.5 s ˛a pokazane symbole graficzne bramek logicznych zgodne ze stan-dardem ANSI/IEEE ([3]). Dalej b˛edziemy u˙zywa´c symboli graficznych pokazanych na rysunku 3.4.
36
Nazwa Symbol Funkcja Tablica
graficzny logiczna prawdy
AND y x f f = x · y = xy x y f 0 0 0 0 1 0 1 0 0 1 1 1 OR y x f f = x + y x y f 0 0 0 0 1 1 1 0 1 1 1 1 NOT (Inverter) HH c x f f = x x f 0 1 1 0 Bufor HH x f f = x x f 0 0 1 1 NAND (Not AND) c y x f f = xy x y f 0 0 1 0 1 1 1 0 1 1 1 0 NOR (Not OR) c y x f f = x + y x y f 0 0 1 0 1 0 1 0 0 1 1 0 XOR (Exclusive-OR) y x f f = x ⊕ y x y f 0 0 0 0 1 1 1 0 1 1 1 0 XNOR (Exclusive-NOR) c y x f f = x ⊕ y x y f 0 0 1 0 1 0 1 0 0 1 1 1
Nazwa Symbol graficzny Funkcja logiczna AND y & x f f = x · y = xy OR y ≥ 1 x f f = x + y NOT (Inverter) 1 c x f f = x Bufor x 1 f f = x NAND (Not AND) & c y x f f = xy NOR (Not OR) ≥ 1 c y x f f = x + y XOR (Exclusive-OR) = 1 y x f f = x ⊕ y XNOR (Exclusive-NOR) = 1 c y x f f = x ⊕ y
Rys. 3.5. Symbole graficzne bramek logicznych Przykład 3.1. Narysowa´c schemat logiczny funkcji
f (a, b, c, d) = ab + cd
korzystaj ˛ac z bramek NAND. Z praw de Morgana, otrzymujemy
f (a, b, c, d) = ab + cd = ab + cd = ab · cd
Rozwi ˛azanie przykładu jest pokazane na rysunku 3.6.
Przykład 3.2. Narysowa´c schemat logiczny funkcji
f (a, b, c, d) = (a + b) · (c + d)
korzystaj ˛ac z bramek NOR.
Z praw de Morgana, otrzymujemy
f (a, b, c, d) = (a + b) · (c + d) = (a + b) · (c + d) = a + b + c + d
38 a b c d c c c s s s s ab cd ab · cd
Rys. 3.6. Realizacja funkcjif (a, b, c, d) = ab + cd za pomoc ˛a bramek NAND (przykład 3.1) a b c d c c c s s s s a + b c + d a + b + c + d
Rys. 3.7. Realizacja funkcjif (a, b, c, d) = (a + b) · (c + d) za pomoc ˛a bramek NOR (przykład 3.2)
Przykład 3.3. Narysowa´c schematy logiczne funkcji z przykładu 2.7.
Rozwi ˛azanie przykładu jest pokazane na rysunkach 3.8 i 3.9.
a b c d HH c HH c s s s s s s d b ac ad bc ac + ad + bc
Rys. 3.8. Schemat logiczny funkcji (w postaci sumy iloczynów) z przykładu 2.7
a b c d HH c HH c s s s s s s a + b c + d a + c (a + b) · (c + d) · (a + c)
Rys. 3.9. Schemat logiczny funkcji (w postaci iloczynu sum) z przykładu 2.7
(przykład 3.3)
Przykład 3.4. Udowodni´c, ˙ze zbiór składaj ˛acy si˛e z jednej funkcji NAND jest syste-mem funkcjonalnie pełnym.
Wystarczy udowodni´c, ˙ze za pomoc ˛a funkcji NAND mo˙zna zrealizowa´c funkcje: NOT, AND i OR. Rozwi ˛azanie przykładu jest pokazane na rysunku 3.10.
NOT x s c xx = x AND x y c sxy c xy = xy OR x s x c y s y c c x y = x + y
Rys. 3.10. Realizacja NOT, AND i OR za pomoc ˛a NAND (przykład 3.4)
Przykład 3.5. Udowodni´c, ˙ze zbiór składaj ˛acy si˛e z jednej funkcji NOR jest systemem funkcjonalnie pełnym.
Wystarczy udowodni´c, ˙ze za pomoc ˛a funkcji NOR mo˙zna zrealizowa´c funkcje: NOT, AND i OR. Rozwi ˛azanie przykładu jest pokazane na rysunku 3.11.
40 NOT x s c x + x = x AND x s x c y s cy c x + y = xy OR x y c s c x + y = x + y x + y
Rys. 3.11. Realizacja NOT, AND i OR za pomoc ˛a NOR (przykład 3.5)
3.3
Analiza układów kombinacyjnych
Analiza układu kombinacyjnego polega na okre´sleniu relacji pomi˛edzy warto´sciami jego wej´s´c i wyj´s´c.
Przykład 3.6. Przeprowadzi´c analiz˛e układu kombinacyjnego pokazanego na ry-sunku 3.12. x y z x y z c s s s s s s ss s s s s s s s s s s s s
´Sledz ˛ac sygnały na wej´sciach i wyj´sciu ka˙zdej bramki otrzymujemy nast˛epuj ˛ace funkcje logiczne pokazane na rysunku 3.13:
s(x, y, z) = x y z + x y z + x y z + xyz c(x, y, z) = xy + xz + yz
Aby opisa´c analizowany układ za pomoc ˛a tablicy prawdy, nale˙zy okre´sli´c warto´sci wyj´s´c(s, c) dla wszystkich mo˙zliwych kombinacji wej´s´c (x, y, z). Tablica prawdy
anali-zowanego układu jest pokazana na rysunku 3.14.
x y z x y z s s s s s ss s s s s s s s s s s s s x y z xyz x y z xyz xy xz yz s(x, y, z) = x y z + x y z + x y z + xyz c(x, y, z) = xy + xz + yz
Rys. 3.13. Układ kombinacyjny (przykład 3.6).
Wej´scia Wyj´scia x y z s c 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1
42
3.4
Projektowanie układów kombinacyjnych
Projektowanie układów kombinacyjnych omówimy na przykładach.
Przykład 3.7. Za pomoc ˛a bramek NAND zrealizowa´c układ opisany tablic ˛a prawdy pokazan ˛a na rysunku 3.15: Wej´scia Wyj´scia x y z f 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0
Rys. 3.15. Tablica prawdy układu (przykład 3.7)
Na podstawie tablicy prawdy otrzymujemy funkcj˛e logiczn ˛a
f (x, y, z) =X(0, 1, 2) która po minimalizacji xn y z }| { | {z } z 1 1 1 przyjmuje posta´c f (x, y, z) =X(0, 1, 2) = x y + x z
Korzystaj ˛ac z praw de Morgana, otrzymujemy funkcj˛e
f (x, y, z) = x y + x z = x y + x z = x y · x z
x y z c c c s s s s f
Rys. 3.16. Rozwi ˛azanie przykładu 3.7.
3.4.1 Układy arytmetyczne
Układ kombinacyjny dodaj ˛acy dwie cyfry dwójkowe jest nazywany półsumatorem (half adder). Zmiennymi wej´sciowymi półsumatora s ˛a bity składników sumy(x, y).
Zmien-nymi wyj´sciowymi s ˛a bity sumys i przeniesienia c. Schemat blokowy i tablica prawdy
półsumatora s ˛a pokazane na rysunku 3.17.
-półsumator HA y x c s Wej´scia Wyj´scia x y c s 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
Rys. 3.17 Schemat blokowy i tablica prawdy półsumatora
Z tablicy prawdy półsumatora otrzymujemy nast˛epuj ˛ace funkcje logiczne:
s(x, y) =X(1, 2) = xy + xy = x ⊕ y c(x, y) =X(3) = xy
na podstawie których rysujemy schemat logiczny półsumatora pokazany na rysunku 3.18.
x y s c s s s s
44
Korzystaj ˛ac z praw de Morgana mo˙zna zapisa´c funkcjes(x, y) i c(x, y) w postaci s(x, y) = xy + xy = xy + xy = xy · xy
c(x, y) = xy = xy
na podstawie których rysujemy schemt logiczny półsumatora, zrealizowanego za pomoc ˛a bramek NAND, pokazany na rysunku 3.19.
x y x y c c c s s s s s c c s s s c
Rys. 3.19. Schemat logiczny półsumatora zrealizowanego za pomoc ˛a bramek NAND
Układ kombinacyjny dodaj ˛acy trzy cyfry dwójkowe jest nazywany sumatorem (full adder). Ma trzy wej´scia. Dwie ze zmiennych wej´sciowych(x, y) reprezentuj ˛a bity skład-ników sumy. Trzecie wej´scie(z) reprezentuje przeniesienie z poprzedniej, mniej znacz ˛acej pozycji. Zmiennymi wyj´sciowymi s ˛a bity sumys i przeniesienia c. Schemat blokowy i
tablica prawdy sumatora s ˛a pokazane na rysunku 3.20.
Z tablicy prawdy sumatora otrzymujemy nast˛epuj ˛ace funkcje logiczne:
s(x, y, z) =X(1, 2, 4, 7) c(x, y, z) =X(3, 5, 6, 7)
Z tablicy Karnaugha dla funkcjis(x, y, z)
xn y z }| { | {z } z 1 1 1 1
wida´c, ˙ze nie mo˙zna jej zminimalizowa´c. Zatem
s(x, y, z) =X(1, 2, 4, 7) = x y z + x y z + x y z + xyz
xn y z }| { | {z } z 1 1 1 1 otrzymujemy c(x, y, z) = xz + yz + xy
Na podstawie otrzymanych funkcjis(x, y, z) i c(x, y, z) rysujemy schemat logiczny
sumatora pokazany na rysunku 3.21.
Sum˛e dwóchn-bitowych liczb dwójkowych mo˙zna uzyska´c w układzie n–bitowego
sumatora równoległego, którego schemat blokowy dlan = 4 jest pokazany na rysunku 3.22
([3, 6]). -sumator FA z y x c s Wej´scia Wyj´scia x y z c s 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1
46 x y z x y z c s s s s s s ss s s s s s s s s s s s s
Rys. 3.21. Schemat logiczny sumatora
F A F A F A F A ? ? ? ? ? ? ? ? ? ? ? ? c4 c3 c2 c1 c0 b3 a3 b2 a2 b1 a1 b0 a0 s3 s2 s1 s0
Rys. 3.22. Schemat blokowy 4–bitowego sumatora równoległego
Na rysunku tym ai,i = 0, . . . , 3, oznaczaj ˛a bity pierwszego składnika sumy; bi – bity drugiego składnika sumy; ci – bity przeniesienia, a si – bity sumy. Przeniesienie wej´sciowe jest oznaczone jakoc0, przeniesienie wyj´sciowe jakoc4.
3.4.2 Dekodery
Dekoderem (decoder) nazywamy układ kombinacyjny maj ˛acyn wej´s´c i m wyj´s´c, m ≤ 2n, w którym ka˙zdej kombinacji zmiennych wej´sciowych odpowiada pojawienie si˛e jedynki logicznej tylko na jednym wyj´sciu, na pozostałych wyj´sciach pojawiaj ˛a sie wtedy zera logiczne. Schemat blokowy dekoderan → m jest pokazany na rysunku 3.23. Przykład
dlan zmiennych wej´sciowych. Dowolna funkcja logiczna mo˙ze by´c wyra˙zona jako suma
iloczynów pełnych. Mo˙zna zatem u˙zy´c dekodera do generowania iloczynów pełnych i bramekOR do tworzenia ich sum logicznych.
Dekoder n → m .. . ... -n wej´s´c -m wyj´s´c m ≤ 2n
-Rys. 3.23. Schemat blokowy dekoderan → m
a) Wej´scia Wyj´scia E x y D0 D1 D2 D3 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 x x 0 0 0 0 b) x y x y E D3 D2 D1 D0 s s s s s s s s s s s c) Dekoder 2 → 4 -E y x D3 D2 D1 D0
Rys. 3.24. Dekoder2 → 4 z wej´sciem E (enable): tablica prawdy (a)), schemat logiczny
(b)) i schemat blokowy (c))
Przykład 3.8 Zaprojektowa´c jednobitowy sumator za pomoc ˛a dekodera.
Poprzednio (rozdział 3) otrzymali´smy nast˛epuj ˛ace funkcje logiczne dla sumatora:
s(x, y, z) =X(1, 2, 4, 7), c(x, y, z) =X(3, 5, 6, 7)
Poniewa˙z mamy 3 zmienne na wej´sciu i 8 iloczynów pełnych, zatem konieczny jest dekoder 3 → 8. Schemat logiczny zaprojektowanego sumatora jest pokazany na
48 Dekoder 3 → 8 7 6 5 4 3 2 1 0 22 21 20 s x y z c s
Rys. 3.25. Sumator zrealizowany za pomoc ˛a dekodera 3→ 8
3.4.3 Kodery
Koderem (encoder) nazywamy układ kombinacyjny działaj ˛acy odwrotnie do dekodera. Koder mam wej´s´c i n wyj´s´c, m ≤ 2n. Schemat blokowy koderam → n jest pokazany na rysunku 3.26. Przykład kodera4 → 2 jest pokazany na rysunku 3.27.
Koder m → n .. . ... -m wej´s´c -n wyj´s´c m ≤ 2n
a) Wej´scia Wyj´scia w x y z D0 D1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 b) w x y z D1 D0 s s s s c) Koder 4 → 2 -z y x w D1 D0
Rys. 3.27. Koder4 → 2: tablica prawdy (a)), schemat logiczny (b)) i schemat blokowy
(c))
3.4.4 Multipleksery
Multiplekserem (multiplexer) nazywamy układ kombinacyjny wybieraj ˛acy informacj˛e dwójkow ˛a na jednej z linii wej´sciowych i kieruj ˛acy j ˛a na jedn ˛a lini˛e wyj´sciow ˛a. Wybór linii wej´s-ciowej jest okre´slany przez linie steruj ˛ace. Schemat blokowy multipleksera o2nliniach wej´sciowych in liniach steruj ˛acych jest pokazany na rysunku 3.28. Przykład multipleksera
4 → 1 jest pokazany na rysunku 3.29.
-.. . 6 6 . . . Multiplekser - wyj´scie 2nwej´s´c
n linii steruj ˛acych
50
Linie wej´sciowe(d0, d1, d2, d3) s ˛a doprowadzone do bramek AND, których wyj´scia s ˛a doprowadzone do bramki OR. W danej chwili tylko jedna linia wej´sciowa jest poł ˛aczona z wyj´sciem (y). O wyborze wej´scia poł ˛aczonego z wyj´sciem decyduj ˛a linie steruj ˛ace
(s0, s1). a) Multiplekser 4 → 1 -d3 d2 d1 d0 - y 6 6 s1 s0 b) s1 s0 y 0 0 d0 0 1 d1 1 0 d2 1 1 d3 c) y d3 d2 d1 d0 AA c AA c s1 s0 s s s s s s
Rys. 3.29. Multiplekser4 → 1: schemat blokowy (a)), tablica prawdy (b)) i schemat
logiczny (c))
3.5
Pami˛eci ROM
Na rysunku 3.30 jest pokazany schemat blokowy pami˛eci stałej ROM (read only memory).
k linii adresowych - 2 ksłów n-bitowych -n li-nii wyj´sciowych
Pami˛e´c ROM ([1, 2, 3, 4]) ma k linii adresowych umo˙zliwiaj ˛acych wybór jednego z2k = m słów oraz n linii wyj´sciowych. W pami˛eciach ROM informacja dwójkowa jest wprowadzana na stałe podczas produkcji i nie mo˙zna jej zmieni´c. Pami˛eci PROM (programmable ROM) s ˛a pami˛eciami, które mog ˛a by´c programowane przez u˙zytkown-ika. W takim przypadku raz wpisanej informacji nie mo˙zna zmieni´c. Pami˛eci EPROM (erasable PROM) i EEPROM (electrically erasable PROM) mog ˛a by´c wielokrotnie pro-gramowane przez u˙zytkownika. Usuwanie zapisanych informacji przeprowadza si˛e przez na´swietlanie promieniami ultrafioletowymi (pami˛eci EPROM) lub elektrycznie (pami˛eci EEPROM).
Ze wzgl˛edu na to, ˙ze ka˙zda kombinacja warto´sci zmiennych wej´sciowych (linie adresowe) jednoznacznie okre´sla kombinacj˛e warto´sci zmiennych wyj´sciowych (zawarto´s´c słowa pami˛eci), pami˛e´c ROM jest zaliczana do układów kombinacyjnych. Pami˛e´c ROM jest zbudowana z dekodera i bramek OR.
Rozwa˙zmy pami˛e´c ROM o pojemno´sci czterech słów, po cztery bity ka˙zde(4 × 4),
pokazan ˛a na rysunku 3.31 ([3]). Wej´sciami do pami˛eci ROM s ˛a linie adresowe (A1, A0). Wyj´sciami pami˛eci ROM s ˛a wyj´scia czterech bramek OR (Y3, Y2, Y1, Y0). Rozwa˙zana pami˛e´c jest pokazana na rysunku 3.32 ([3]) w uproszczonej postaci. Na rysunku 3.32 znak× oznacza poł ˛aczenie.
Dowolna funkcja logiczna mo˙ze by´c wyra˙zona jako suma iloczynów pełnych. Mo˙zna zatem u˙zy´c pami˛eci ROM do realizacji dowolnej funkcji logicznej.
Przykład 3.9. Zaprojektowa´c jednobitowy sumator za pomoc ˛a pami˛eci ROM. Na podstawie tablicy prawdy sumatora programujemy pami˛e´c ROM8 × 2, tak jak na
rysunku 3.33 ([3]).
3.6
Programowalne układy logiczne PLD
Układy scalone kombinacyjne s ˛a produkowane jako układy standardowe i jako układy specjalizowane ASIC (application specific integrated circuits), ([1, 2, 3]). W´sród układów specjalizowanych wyró˙znia si˛e mi˛edzy innymi programowalne układy logiczne PLD (pro-grammable logic devices). W´sród układów PLD mo˙zna wyró˙zni´c 3 podstawowe typy: pami˛eci PROM, programowalne struktury logiczne PLA i programowalne struktury log-iczne PAL.
52 Dekoder 2 → 4 A0 A1 D3 D2 D1 D0 Y3 Y2 Y1 Y0 s s s s s s a) schemat logiczny Wej´scia Wyj´scia A1 A0 Y3 Y2 Y1 Y0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 b) tablica prawdy
Rys. 3.31. Pami˛e´c ROM4 × 4: schemat logiczny (a)) i tablica prawdy (b))
A0 A1 Dekoder 2 → 4 3 2 1 0 Y3 Y2 Y1 Y0 × × × × × ×
a) Wej´scia Wyj´scia x y z s c 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 b) x Dekoder 3 → 8 z y 7 6 5 4 3 2 1 0 s c × × × ×× × × × × ×
Rys. 3.33. Realizacja sumatora za pomoc ˛a pami˛eci ROM: tablica prawdy sumatora (a)) i pami˛e´c ROM8 × 2 (b))
3.6.1 Programowalne struktury logiczne PLA
Programowalna struktura logiczna PLA ([1, 2, 3]) składa si˛e z programowalnej matrycy AND i programowalnej matrycy OR. Programowalna matryca AND umo˙zliwia tworzenie iloczynów zmiennych wej´sciowych. Wyj´scia bramek AND s ˛a poł ˛aczone z programowaln ˛a matryc ˛a bramek OR. Programowalna matryca OR umo˙zliwia tworzenie sum zło˙zonych z dowolnych iloczynów utworzonych w matrycy AND. Schemat logiczny przykładowego układu PLA o trzech wej´sciach i dwóch wyj´sciach jest pokazany na rysunku 3.34.
Przez realizacj˛e odpowiednich poł ˛acze´n (programowanie) na wyj´sciach bramek AND uzyskuje si˛e potrzebne (do realizacji funkcji logicznej) iloczyny zmiennych wej´sciowych
(x, y, z). Przez realizacj˛e odpowiednich poł ˛acze´n na wej´sciach bramek OR uzyskuje si˛e sum˛e logiczn ˛a wybranych iloczynów.
Układ PLA zaprogramowany w taki sposób jak na rysunku 3.34 (poł ˛aczenia s ˛a zaz-naczone znakiem×) realizuje nast˛epuj ˛ace funkcje logiczne:
f1(x, y, z) = x y z + x y z + x y z + xyz = X (1, 2, 4, 7) f2(x, y, z) = x y z + x y z + x y z + xyz = X (3, 5, 6, 7)
54 x y z HH c HH c HH c f1 f2 × – poł ˛aczenie xyz x y z x y z x y z xyz x y z x y z x y z s s s × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
Rys. 3.34. Schemat logiczny przykładowego układu PLA 3.6.2 Programowalne struktury logiczne PAL
Programowalna struktura logiczna PAL ([1, 2, 3]) składa si˛e z programowalnej matrycy AND i stałej matrycy OR. Programowalna matryca AND umo˙zliwia tworzenie iloczynów zmiennych wej´sciowych. Wyj´scia bramek AND s ˛a poł ˛aczone na stałe z wej´sciami bramek OR, realizuj ˛ac funkcje sum iloczynów. Układy PAL s ˛a realizowane tak˙ze ze sprz˛e˙zeniem zwrotnym z niektórych wyj´s´c matrycy OR na wej´scia matrycy AND. Schemat logiczny przykładowego układu PAL jest pokazany na rysunku 3.35.
Układ PAL zaprogramowany w taki sposób jak na rysunku 3.35 realizuje funkcje log-iczne przeniesienia(f1) i sumy (f2) sumatora:
f1(x, y, z) = x y z + x y z + x y z + xyz = X (1, 2, 4, 7) f2(x, y, z) = x y z + x y z + x y z + xyz = X (3, 5, 6, 7)
z y x x x y y z z HH c HH c HH c s s s s s s f2 f1 s s s × × × × × × × × × × × × × × × × × × × × × × × ×
Rys. 3.35. Schemat logiczny przykładowego układu PAL
3.7
Podsumowanie
W rozdziale 3 zostały przedstawione elementarne układy kombinacyjne (bramki logiczne). Bramki logiczne s ˛a realizowane jako układy małego stopnia scalenia SSI (small scale integration) ([7]). Zaprojektowane zostały nast˛epuj ˛ace układy kombinacyjne: sumator, dekoder, koder i multiplekser, niezb˛edne do zrozumienia materiału prezentowanego w dal-szej cz˛e´sci skryptu. W praktyce wymienione wy˙zej układy kombinacyjne s ˛a realizowane jako układy ´sredniego stopnia scalenia MSI (medium scale integration) ([7]).
Podane zostały przykłady realizacji układów kombinacyjnych za pomoc ˛a programowal-nych układów logiczprogramowal-nych PLD i pami˛eci ROM. Programowalne układy logiczne PLD i pami˛eci ROM s ˛a realizowane jako układy wielkiego stopnia scalenia LSI (large scale in-tegration). Schematy logiczne i parametry układów scalonych małego i ´sredniego stopnia scalenia s ˛a przedstawione mi˛edzy innymi w [7].
Przedstawiona została klasyczna metoda projektowania układów kombinacyjnych wyko-rzystuj ˛aca układy małego stopnia scalenia. Projektowanie układów cyfrowych ma inny przebieg w przypadku wykorzystania układów ´sredniego i wielkiego stopnia scalenia ([2, 5, 8]).
56
Literatura
[1] Kalisz J.: Podstawy elektroniki cyfrowej, WKŁ, 1993. [2] Majewski W.: Układy logiczne, WNT, 1993.
[3] Mano M.M.: Computer engineering: hardware design, Prentice-Hall, 1988.
[4] Pie´nkos J., Turczy ´nski J.: Układy scalone TTL w systemach cyfrowych, WKŁ, 1980. [5] Traczyk W.: Układy cyfrowe. Podstawy teoretyczne i metody syntezy, WNT, 1986. [6] Mano M.M.: Computer system architecture, Prentice-Hall, 1993.
[7] Sasal W.: Układy scalone serii UCY74LS i UCY74S. Parametry i zastosowania, WKŁ, 1993.
[8] Majewski W., Jasi´nski K., Luba T., Zbierzchowski B.: Programowalne moduły log-iczne w syntezie układów cyfrowych, WKŁ, 1992.
Z a d a n i a
Zadanie 3.1. Narysowa´c schematy logiczne uproszczonych funkcji z zadania 2.1 korzystaj ˛ac z dowolnych bramek logicznych.
Zadanie 3.2. Narysowa´c schematy logiczne uproszczonych funkcji z zadania 2.1 korzystaj ˛ac z bramek NAND.
Zadanie 3.3. Narysowa´c schematy logiczne uproszczonych funkcji z zadania 2.1 korzystaj ˛ac z bramek NOR.
4.1
Wst˛ep
W układzie kombinacyjnym ka˙zda kombinacja warto´sci zmiennych wej´sciowych jednoz-nacznie okre´sla kombinacj˛e warto´sci zmiennych wyj´sciowych. Układ kombinacyjny nie posiada pami˛eci. Układ sekwencyjny ([1, 2, 3, 4, 5]) posiada pami˛e´c. W układzie sekwen-cyjnym warto´sci zmienych wyj´sciowych zale˙z ˛a od warto´sci zmienych wej´sciowych i stanu układu. Stan układu jest zdefiniowany przez zawarto´s´c poszczególnych elementów pami˛e-taj ˛acych. Najprostszym układem sekwencyjnym jest przerzutnik (flip-flop), który pami˛eta jeden bit (stan logiczny 0 lub 1).
Do dalszych rozwa˙za´n wprowadzimy dyskretn ˛a o´s czasu pokazan ˛a na rysunku 4.1. Kolejne punkty na tej osi b˛edziemy oznacza´c liczbami naturalnymi1, 2, . . . , t − 1, t, t + 1, . . . Punkty te s ˛a wyznaczane przez kolejne zbocza jednakowego typu (dodatnie, ujemne) impulsów zegarowych (clock pulses).
-zbocze dodatnie (narastaj ˛ace)
zbocze ujemne (opadaj ˛ace)
? poziom
okresT
-t t + 1 czas
-Rys. 4.1. Diagram czasowy impulsów zegarowych o okresieT
4.2
Przerzutniki
Elementarnymi układami pami˛etaj ˛acymi (przechowuj ˛acymi) jeden bit s ˛a przerzutniki.
4.2.1 Przerzutnik SR
Na rysunku 4.2 a) jest pokazany układ zrealizowany z bramek NOR, zwany przerzutnikiem SR. S R c XXXX c s s Q Q a) schemat logiczny R S c Q Q b) symbol graficzny