Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z funktorami realizującymi podstawowe funkcje logiczne poprzez zaprojektowanie, wykonanie i przetestowanie kombinacyjnego układu logicznego realizującego postawione zadanie w możliwie najprostszy sposób. Podstawowe informacje Technika cyfrowa posługuje się głównie algebrą Boole a określoną dla zmiennych przyjmujących wartość ze zbioru dwóch elementów {0; 1}. Na zmiennych dwustanowych definiuje się następujące działania: iloczyn logiczny nazywany funkcję AND: Y = A B, sumę logiczną OR: Y = A + B, negację argumentu NOT: Y = A W praktyce wygodnie jest wprowadzić również funkcje realizujące złożenie funkcji AND z NOT oraz OR z NOT negacja iloczynu NAND: Y = A B, negacja sumy NOR: Y = A + B. Symbole układów elektrycznych (zwanych dalej bramkami) realizujących wymienione powyżej funkcje zestawiono na Rys. 1. Definicje funkcji AND, OR, NAND i NOR można łatwo rozszerzyć na dowolną liczbę argumentów przez złożenie ich z funkcji dwuargumentowych, np. A B C = (A B) C. Rys. 1. Symbole podstawowych bramek logicznych i ich tablice stanów. Ze względu na duże znaczenie praktyczne definiuje się również funkcję nierównoważności EX-OR (skrót od EXCLUSIVE-OR) odpowiadającą polskiemu operatorowi ALBO, czyli WYŁĄCZNE LUB, a także funkcję równoważności EX-NOR (pol. ALBO-NIE) określoną jako złożenie EX-OR i NOT nierównoważność EX-OR: Y = A B = A B + A B równoważność EX-NOR: Y = A B = A B + A B Rys. 2. Symbole dodatkowych bramek logicznych i ich tablice stanów. Podczas projektowania układów logicznych największe znaczenie mają następujące prawa algebry Boole a:
przemienności, łączności, rozdzielności i De Morgana. Tabela 1. Podstawowe prawa i tożsamości algebry Boole a. Posługując się prawami De Morgana można stwierdzić, że spośród funktorów realizujących podstawowe działania logiczne jedynie funktory NAND i NOR są uniwersalne, tzn. łącząc funktory tylko jednego z tych dwóch typów można zrealizować dowolną funkcję logiczną, w tym także pozostałe funkcje elementarne AND, OR, NOT, NAND, NOR, EX-OR i EX-NOR. Ograniczenie zbioru funktorów stosowanych do realizacji dowolnej funkcji logicznej ma wiele zalet i jest często stosowane w praktyce. Metoda minimalizacji i syntezy układu kombinacyjnego Załóżmy, że w wyniku analizy treści zadania ustalono następującą tablicę stanów układu o czterech wejściach A, B, C, D i jednym wyjściu W. Tabela 2. Zapis funkcji logicznej w postaci tablicy prawdy. Kreskami ( ) oznaczono przypadki, w których stan logiczny wyjścia nie ma znaczenia. Bezpośrednio na podstawie tablicy stanów funkcję można przedstawić np. w postaci kanonicznej sumy, czyli sumy składników, z których każdy stanowi iloczyn pełny wszystkich zmiennych wejściowych lub ich negacji i odpowiada innej linii w tabeli prawdy, dla której W = 1 W = CD + CD + CD+ CD+ CD+ CD (1) Uproszczenie powyższej funkcji W = f(a,b,c,d) przy wykorzystaniu zasad algebry Boole a jest zadaniem żmudnym a prostota końcowej postaci zależy od intuicji i szczęścia projektanta. Znacznie efektywniejsza metoda wykorzystuje zdolność ludzi do rozpoznawania geometrycznych wzorów w tablicy Karnaugha (Rys. 3), która jest dwuwymiarową specyficznie ułożoną tablicę stanów wyjściowych. Stany wejściowe podane są na zewnątrz tablicy i uporządkowane zgodnie z kodem Graya, w którym dwa kolejne słowa różnią się dokładnie jednym bitem. W przypadku funkcji trzech zmiennych buduje się tablicę o wymiarach 2 4, zaś dla dwóch zmiennych tablicę 2 2. Minimalizacja funkcji sprowadza się do zgrupowaniu sąsiednich jedynek w prostokątne obszary (Rys. 3.a), przy czym liczba pól w danych obszarze musi być potęgą liczby 2. Przeciwległe krawędzie tablicy traktuje się przy tym jak sklejone ze sobą. Aby otrzymać najprostsze rozwiązanie należy zakreślić wszystkie jedynki wybierając możliwie najmniejszą liczbę obszarów o maksymalnie dużych rozmiarach. Alternatywnie można łączyć same zera (Rys. 3.b). Wybrane pola zawierające stan nieokreślony ( ) można łączyć zarówno z jedynkami, jak i zerami.
Rys. 3. Zapis funkcji logicznej danej Tabelą 2 w postaci tablicy Karnaugha. a) minimalizacja funkcji przez łączenie jedynek, b) minimalizacja funkcji przez łączenie zer. Na podstawie tablicy na Rys. 3.a zminimalizowaną funkcję logiczną tworzymy jako sumę iloczynów, przy czym każdy iloczyn musi przyjmować wartość 1 dla wszystkich pól w danej grupie. Przykładowo, obszar zakreślony poprzez krawędzie tablicy odpowiada iloczynowi D, gdzie pominięte C nie zachowuje jednego stanu na całym obszarze. Dla wszystkich grup otrzymujemy W = ACD + CD + D+ AC (2) W przypadku, gdy na tablicy Karnaugha połączono pola o stanach 0 (Rys. 3.b), funkcję logiczną tworzymy jako iloczyn sum, z których każda przyjmuje wartość 0 w jednym zakreślonym obszarze W = (A +C)(A +D)(A + B + C) (3) Załóżmy, że funkcję trzeba zrealizować przy użyciu samych funktorów NOT i NAND. Funkcję sumy logicznej, występującą we wzorach (2) i (3), przekształcamy zgodnie z prawami De Morgana otrzymując ze wzorów (2) i (3) odpowiednio X + Y +... = XY..., X + Y +... = XY... (4) W= A C D A B D A C (5) W= A C A D A BC (6) Wszystkie działania występujące we wzorze (6) można zrealizować bezpośrednio przy użyciu założonych funktorów. We wzorze (5) najbardziej zewnętrzną funkcję iloczynu logicznego (OR) trzeba przedstawić jako złożenie negacji (NOT) i zanegowanego iloczynu (NOR) W= A B C A B C A C (7) Wykaz aparatury pomiarowej spis urządzeń użytych dnia 12.05.2010 moduł ZSL 07 moduł EL 3 02 moduł EL 3 03 zasilacz stabilizowany DF1731SN3A J3-T6-261/1 Moduł zadawania stanów logicznych składa się z pięciu przełączników umożliwiających wybór stanu logicznego 0 albo 1 w gniazdach umieszczonych pod przełącznikami. Moduł bramek logicznych zawiera 4 bramki logiczne NOT, 8 dwuwejściowych bramek NOR oraz 8 trzywejściowych bramek NOR. Moduł testera stanów logicznych zawiera 10 niezależnych testerów. Każdy tester zaopatrzony jest w jedno wejście pomiarowe oraz diody czerwoną i zieloną, których zapalenie symbolizuje stan logiczny odpowiednio 1 i 0 Wszystkie moduły zostały zasilone z wyjścia zapewniającego stałe napięcie +5V zasilacza stabilizowanego DF 1731SN3A.
Wyniki pomiarów i analiza wyników Sprawdzenie prawa De Morgana Wykorzystując zanegowane obustronnie prawo De Morgana dla iloczynu logicznego (Tabela 1): A B=A B=A B możemy narysować schemat elektryczny układu realizującego funkcję bramki AND przy wykorzystaniu dostępnych bramek NOR i NOT. Schemat 1. układ realizujący funkcję bramki AND przy wykorzystaniu bramek NOR i NOT Po podłączeniu układu zgodnie z powyższym schematem możemy, zadają różne kombinacje sygnałów wejściowych sporządzić tablicę prawdy układu: A B W 0 0 0 0 1 0 1 0 0 1 1 1 Tabela 3. Tablica prawdy dla zrealizowanego układu, pełniącego funkcję bramkę AND Uzyskana tablica prawdy jest zgodna z tablicą teoretyczną dla bramki AND umieszczoną na Rys. 1. Potwierdza to prawo De Morgana oraz potwierdza możliwość realizacji innych funkcji logicznych za pomocą bramek NOR i NOT. Projektowanie i realizacja układu kombinacyjnego ZAD. 6 Zaprojektować i połączyć układ, który na dwubitowym wyjściu XY wybiera mniejszą z dwóch dwubitowych liczb binarnych oraz CD podanych na wejścia. Po analizie treści zadania doszliśmy do wniosku, że projektowany układ powinien na każdym wyjściu (X= N1 oraz Y= N2) realizować następujące teoretyczne tablice prawdy:
A B C D N1 A B C D N1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 Tabela 4. Tablice prawdy dla każdego z wyjść- N1, N2 realizowanego układu realizującego Zad. 6. Funkcje logiczne dane Tabelą 4 można zapisać w tablicy Karnaugha: N1 N2 00 01 11 10 00 01 11 10 00 0 0 0 0 00 0 0 0 0 01 0 0 0 0 01 0 1 1 1 CD CD 11 0 0 1 1 11 0 1 1 0 10 0 0 1 1 10 0 1 0 0 Tabela 5. Tablice Karnaugha dla każdego z wyjść- N1, N2 realizowanego układu. Na podstawie Tabeli 5 możemy stworzyć zminimalizowaną funkcję logiczną dla każdego wyjścia realizowanego układu: N1=A C=A C N2=D B A D C C A B=D B A D C C A B Na podstawie otrzymanych zminimalizowanych funkcji logicznych możemy utworzyć schemat układu realizujący Zad. 6: Schemat 2. Schemat układu realizującego Zad. 6.
Po podłączeniu układu zgodnie z powyższym schematem otrzymaliśmy następujące stanu układu: A B C D N1 A B C D N1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 Tabela 6. Sprawdzenie poprawności działania wykonanego układu realizującego Zad. 6. Otrzymane tablice prawdy są zgodne z przewidywanymi, co oznacza prawidłowe działanie zaprojektowanego układu. Nie bylibyśmy w stanie wykonać powyższego ćwiczenia bez użycia metody minimalizacji funkcji logicznej za pomocą tablic Karnaugha. Możliwa jest dalsze uszczuplenie schematu połączeń realizowanego układu o jedną, lub dwie bramki NOT, jednak nie dysponowaliśmy wystarczającą ilością czasu, by się tego podjąć. ZAD. 8 Zaprojektować i połączyć układ, który przenosi sygnały z trzybitowego wejścia C na trzybitowe wyjśie XYZ w następujący sposób: dla wejścia sterującego w stanie R = 0 układ zwraca wynik XYZ = C, natomiast dla R = 1 dokonuje rotacji cyklicznej w lewo, tzn. zwraca wynik XYZ = BCA. Po analizie treści zadania doszliśmy do wniosku, że projektowany układ powinien na każdym wyjściu (X, Y, Z) realizować następujące teoretyczne tablice prawdy: A B C R X A B C R Y A B C R Z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 Tabela 7. Tablice prawdy dla każdego z wyjść- X, Y, Z układu realizującego Zad. 8.
Funkcje logiczne dane Tabelą 7 można zapisać w tablicy Karnaugha: CR CR CR X Y Z 00 01 11 10 00 01 11 10 00 01 11 10 00 0 0 0 0 00 0 0 1 0 00 0 0 0 1 01 0 1 1 0 01 1 0 1 1 01 0 0 0 1 11 1 1 1 1 11 1 0 1 1 11 0 1 1 1 10 1 0 0 1 10 0 0 1 0 10 0 1 1 1 Tabela 8. Tablice Karnaugha dla każdego z wyjść- X,Y,Z realizowanego układu. Na podstawie Tabeli 8 możemy stworzyć zminimalizowaną funkcję logiczną dla każdego wyjścia realizowanego układu: X=R B A R=R B A R Y=B R C R=B R C R Z=A R C R=A R C R Na podstawie otrzymanych zminimalizowanych funkcji logicznych możemy utworzyć schemat układu realizujący Zad. 8: Schemat 3. Po podłączeniu układu zgodnie z powyższym schematem otrzymaliśmy następujące tablice stanu układu:
A B C R X A B C R Y A B C R Z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 Tabela 9. Sprawdzenie poprawności działania wykonanego układu realizującego Zad. 8. Otrzymane tablice prawdy są zgodne z przewidywanymi, co oznacza prawidłowe działanie zaprojektowanego układu. Nie bylibyśmy w stanie wykonać powyższego ćwiczenia bez użycia metody minimalizacji funkcji logicznej za pomocą tablic Karnaugha. Podczas budowy układu mieliśmy trudności z utrzymaniem przejrzystości układu spowodowane dużą ilością połączeń między poszczególnymi elementami logicznymi. Należy na to zwrócić szczególną uwagę, gdyż może to być źródłem potencjalnych nieprawidłowości w działaniu otrzymanego układu.