• Nie Znaleziono Wyników

Zajecia

N/A
N/A
Protected

Academic year: 2021

Share "Zajecia"

Copied!
120
0
0

Pełen tekst

(1)

INSTYTUT INFORMATYKI SKRYPTY UCZELNIANE

Marek Skomorowski

PODSTAWY UKŁADÓW

CYFROWYCH

Kraków 1996

(2)

2

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(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),

(9)

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

(10)

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

(11)

−(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

(12)

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.

(13)

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.

(14)

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.

(15)

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.

(16)

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.

(17)

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

(18)

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 formalnych

Funkcje logiczne mo˙zna upraszcza´c korzystaj ˛ac z podstawowych własno´sci algebry Boole’a (rys. 2.3).

(19)

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

(20)

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.

(21)

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

(22)

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.

(23)

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

(24)

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.

(25)

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 =

(26)

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.

(27)

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

(28)

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

(29)

Ł ˛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

(30)

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.

(31)

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)

(32)

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

(33)

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.

(34)

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

(35)

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

(36)

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

(37)

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.

(38)

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

(39)

´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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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

(49)

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.

(50)

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 × × × × × ×

(51)

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)

(52)

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)

(53)

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]).

(54)

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.

(55)

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

Cytaty

Powiązane dokumenty

- student formułuje treść zasad dynamiki Newtona; praw elektrolizy Faradaya, praw rządzących przepływem prądu elektrycznego przez ciała stałe (Ohma i

Schemat blokowy tworzy się na podstawie schematu ideowo-konstrukcyjnego układu, analizując obieg oddziaływań (obieg informacji) występujący pomiędzy sygnałem

Zasady produkcji surówek (Strona pierwsza - Temat na czerwono: Zasady produkcji

Schemat blokowy regulacji / sterowania wraz z opisem sygnałów oraz elementów Układu Automatycznej Regulacji2. Charakterystyki skokowe regulatorów o

Aby nasza adresacja działała niezbędne jest też użycie nowej maski podsieci,ponieważ podzieliliśmy na 6 podsieci czyli „dobraliśmy” 3bity o te trzy bity zwiększa się nasza

Na rysunku (rys.1) przedstawiono schemat przeksztaªtnika DC/DC. Przyj¡¢, »e podczas procesu

Do każdego bloku wchodzi jedno połączenie (oprócz bloku początku algorytmu) i jedno połączenie z niego wychodzi (oprócz bloku warunku, z którego wychodzą

Do każdego bloku wchodzi jedno połączenie (oprócz bloku początku algorytmu) i jedno połączenie z niego wychodzi (oprócz bloku warunku, z którego wychodzą