150946
Numer indeksu
Michał Moroz
Imię i nazwisko
151021
Numer indeksu
Paweł Tarasiuk
Imię i nazwisko
kierunek: Informatyka semestr 2 grupa II
rok akademicki: 2008/2009
Laboratorium
elektroniki i miernictwa
Ćwiczenie EL2
Realizacja logicznych układów kombinacyjnych z bramek NAND
Ocena:
Streszczenie
Sprawozdanie z ćwiczenia, którego celem było udowodnienie tautologii oraz zbudowanie układów logicznych za pomocą bramek NAND.
1 Teoria
W tym rozdziale zostaną omówione pokrótce poszczególne zagadnienia związane z tematem przeprowadzanego ćwiczenia.
1.1 Tablice Karnaugha i minimalizacja funkcji logicznej
Istnieje wiele metod minimalizacji funkcji logicznej – dla przykładu można wymienić tabli- ce Karnaugha, metodę Espresso (rozwiązanie bazujące na heurystyce) bądź metodę Quine’a- McCluskeya (metodę identyczną do tablic Karnaugha, ale znacznie prostszą w implementacji dla komputerów). W ogólności służą one do zbudowania układu opisanego pewną funkcją jego wejść za pomocą jak najmniejszej ilości bramek.
W metodzie Karnaugh korzystamy z tablicy, w której kolumny i rzędy to kolejne możliwe stany logiczne poszczególnych wejść układu (część wejść jest kolumnami, a część rzędami) po- układane za pomocą kodu Graya, czyli tak, aby za każdym razem zmieniał się tylko jeden bit.
Dla przykładu, w układzie o trzech wejściach A, B oraz C, tablica ta będzie wyglądała tak:
AB 00 01 11 10 C 0
1
Następnie taką tablicę wypełniamy wartościami znajdującymi się w tabeli prawdy funkcji, którą chcemy zminimalizować. Po czym zaznaczamy jak największe obszary jedynek (lub zer) stosując się do kilku prostych zasad - obszary muszą być prostokątne lub kwadratowe, mogą nachodzić na siebie, możliwe jest także ‘sklejanie krawędzi’ – dla przykładu, łączenie pierwszego i ostatniego elementu w danym wierszu/kolumnie jest dozwolone. Po zaznaczeniu jak najmniejszej ilości jak największych obszarów wystarczy potraktować taki obszar jako jedną funkcję logiczną a następnie zsumować wszystkie takie funkcje.
Sama metoda jest dość intuicyjna i przeznaczona dla ludzi, nie dla komputerów. Problemem jest mała ilość zmiennych, dla których jest ona skuteczna – przy bardziej skomplikowanych układach obliczanie tą metodą jest żmudne i czasochłonne, niekoniecznie też dojdziemy do cał- kowitego minimum.
Innym problemem jest to, że metoda ta pozwala minimalizować pojedynczą funkcję – układ z jednym wyjściem. Metoda ta nie daje automatycznie rozwiązania dla układu o kilku różnych wyjściach.
1.2 Bramka NAND i realizacja innych bramek za jej pomocą
Bramka NAND jest odwróceniem bramki AND, tj.
F (A, B) = AB (1)
Zatem stworzenie bramki AND jest banalnie prostym zadaniem – wystarczy jedynie podłą-
czyć inwerter na wyjściu bramki NAND.
Inwerter jest też bardzo prosty do wykonania za pomocą bramki NAND, można dokonać tego łącząc wszystkie wejścia bramki ze sobą. Zauważamy, że układ ten jest dokładnie taki sam jak w przypadku analizowanej wcześniej bramki NOR.
Bramkę OR można osiągnąć za pomocą praw de Morgana, które zostały przedstawione poniżej:
A + B = AB (2)
A · B = A + B (3)
Dzięki tym prawom możemy wyznaczyć wzór funkcji dla bramki OR, który wynosi:
A + B = A · B (4)
co, na podstawie wzoru (1) możemy osiągnąć za pomocą bramki NAND z odwróconymi oby- dwoma wejściami. Schemat tej bramki pokazany jest na rysunku 1.
IN C
OUT D
IN D 74ALS00D
74LS06D
74LS06D J1
J3
J2
1 2
3
9 8 IC2A
IC1D
11 10
IC1E
Rysunek 1: OR skonstruowany za pomocą bramek NAND i NOT.
Identycznie wygląda sprawa dla większej ilości wejść.
Tablice Karnaugha operują tylko na negacjach oraz na sumie i iloczynie, więc pozostałe bramki moglibyśmy spokojnie pominąć, jednak metoda, której użyliśmy do stworzenia jednego z układów znacznie się upraszcza, kiedy zdefiniujemy jeszcze bramkę EXOR. Funkcja wyznaczona za pomocą metody Karnaugha dla bramki EXOR wygląda tak:
F (A, B) = AB + BA (5)
Negację w postaci F (A, B) = AB możemy w trywialny sposób uzyskać za pomocą bramki NAND i inwertera. Spoglądając na opisaną we wzorze (4) funkcję zauważamy, że wejścia bram- ki NAND w układzie OR muszą być zanegowane. Wiążąc oba fakty ze sobą, bramki NAND rozwiązują nam problem konieczności użycia dodatkowych inwerterów w układzie bramki OR.
Określamy końcowy wzór bramki EXOR:
F (A, B) = BA · AB (6)
co przekłada się na schemat zaprezentowany na rysunku 2.
IN C
OUT D
IN D
74ALS00D 74LS06D
74LS06D
74ALS00D
74ALS00D J1
J3
J2
1 2
3 IC2A
9 8
IC1D
11 10
IC1E
1 2
3 IC3A
1 2
3 IC4A
Rysunek 2: EXOR skonstruowany za pomocą bramek NAND i NOT zrealizowany na przykła- dowych układach z serii 74xx.
2 Zadania
Wszystkie doświadczenia wykonywane były z użyciem zasilacza DF1731SB3A, nr J3–T6–
261/1 oraz układów EL2-02, EL3-03 oraz EL2-01.
2.1 Zadanie 8
Do tego zadania podeszliśmy nieco odmienną metodą, nie korzystając z tablic Karnaugha, zatem najpierw ją opiszemy a potem udowodnimy za pomocą tablic.
Do zrealizowania był czterowyjściowy układ sterujący linijką świetlną. Jego możliwe stany wejściowe i wyjściowe zostały opisane w tabeli 1.
Tabela 1: Tabela prawdy dla sterownika linijki świetlnej.
IN D IN C IN B IN A OUT D OUT C OUT B OUT A
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 1
0 0 1 1 0 1 1 1
0 1 0 0 1 1 1 1
0 1 0 1 1 1 1 1
0 1 1 0 1 1 1 1
0 1 1 1 1 1 1 1
1 0 0 0 1 1 1 1
1 0 0 1 1 1 1 1
1 0 1 0 1 1 1 1
1 0 1 1 1 1 1 1
1 1 0 0 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1
Okazuje się że układ spełnia poniższe wzory:
F D(A, B, C, D) = C + D (7)
F C(A, B, C, D) = C + D + AB = F D(A, B, C, D) + AB (8)
F B(A, B, C, D) = C + D + B = F C(A, B, C, D) + B (9)
F A(A, B, C, D) = C + D + B + A = F B(A, B, C, D) + A (10) Wzory te można łatwo przekształcić w schemat ideowy, który został przedstawiony na ry- sunku 3.
IN A
IN B
IN C OUT C
OUT D 74LS32D
74ALS08D
IN D
OUT A
OUT B
74LS32D
74LS32D
74LS32D J1
J2
J3
J7
J8 4
5
6 IC7B 1
2
3 IC8A
J4
J5
J6
4 5
6 IC1B
4 5
6 IC2B
4 5
6 IC3B
Rysunek 3: Schemat ideowy układu z wykorzystaniem bramek AND i OR.
Następnie korzystając ze wzoru (4) bardzo prosto przekształcamy układ do postaci pokazanej na rysunku 4. Po raz kolejny zrezygnowaliśmy z inwertera wejściowego bramki IC4D na rzecz negacji w bramce IC4B.
IN A
IN B
IN C OUT C
OUT D IN D
OUT A
OUT B
74ALS00D 74ALS00D
74ALS00D
74ALS00D
74ALS00D 74LS06D
74LS06D
74LS06D
74LS06D
74LS06D
74LS06D
74LS06D J1
J2
J3
J7
J8
J4
J5
J6
1 2
3 IC4A 4
5 6 IC4B
9 10
8 IC4C
12 13
11 IC4D
1 2
3 IC5A
1 2
IC6A
3 4
IC6B
5 6
IC6C
9 8
IC6D
11 10
IC6E
13 12
IC6F
1 2
IC9A
Rysunek 4: Schemat sterownika linijki świetlnej.
Brakujące bramki NOT zastąpiliśmy bramkami NAND którym połączono wejścia. Wyko- rzystując 12 bramek nie było celu użycia żadnej trójwejściowej bramki, cały układ wykonaliśmy na bramkach dwuwejściowych oraz czterech dostępnych inwerterach.
Podczas tworzenia schematu układu popełniliśmy błąd który spowodował, że zamiast wejść poszczególnych bramek OR negowaliśmy wyjścia, dzięki czemu układ dawał całkowicie błędne wyniki. Po dokładniejszym przeanalizowaniu schematu udało nam się wykryć błąd i wyelimino- wać go.
Spróbujmy teraz sporządzić układ metodą Karnaugha.
Tabela 2: Tablica Karnaugha dla wyjścia D AB
00 01 11 10
CD
00 0 0 0 0
01 1 1 1 1
11 1 1 1 1
10 1 1 1 1
Tabela 3: Tablica Karnaugha dla wyjścia C AB
00 01 11 10
CD
00 0 0 1 0
01 1 1 1 1
11 1 1 1 1
10 1 1 1 1
Tabela 4: Tablica Karnaugha dla wyjścia B AB
00 01 11 10
CD
00 0 1 1 0
01 1 1 1 1
11 1 1 1 1
10 1 1 1 1
Tabela 5: Tablica Karnaugha dla wyjścia A AB
00 01 11 10
CD
00 0 1 1 1
01 1 1 1 1
11 1 1 1 1
10 1 1 1 1
Wzór (7) jest naturalną konsekwencją tabeli 2. Podobnie jest ze wzorem (8) i tabelą 3 oraz wzorem (10) i tabelą 8. Jeśli chodzi zaś o tabelę 7, może być ona interpretowana wzorem (9), jak i poniższym:
F B(A, B, C, D) = C + D + B = F D(A, B, C, D) + B (11)
W obecnym układzie nie ma większego znaczenia, czy wykorzystamy F C czy F D, ponie-
waż obie funkcje w tym przypadku dają spójne wyniki, aczkolwiek korzystając z wzoru (11)
moglibyśmy osiągnąć minimalnie mniejsze opóźnienia na wyjściu układu względem jego wejścia.
2.1.1 Wnioski
Powyższy układ był prosty do zbudowania i ręcznie i za pomocą map Karnaugha, oba po- dejścia dawały nieznacznie inne schematy wynikowe. Otrzymany układ zbadany doświadczalnie daje dokładnie takie takie wyniki jak przedstawione w tabeli 1.
3 Zadanie 9
Do otrzymania był układ sumatora jednobitowego wraz z wejściem i wyjściem przeniesienia.
Jego tablica prawdy przedstawiona jest w tabeli 6.
Tabela 6: Tabela prawdy dla sumatora.
CI IN B IN A OUT CO
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
Podczas wykonywania doświadczenia próbowaliśmy doprowadzić układ do działania, ale nie zdążyliśmy – część schematu była nie do końca poprawnie zaprojektowana. Chcieliśmy skorzystać z map Karnaugha do stworzenia poprawnego układu i udało nam się narysować układ na kartce papieru, jednak zabrakło czasu aby go przetestować.
Poniżej przedstawione są mapy Karnaugha dla sumatora:
Tabela 7: Tablica Karnaugha dla wyjścia OUT AB
00 01 11 10
C 0 0 1 0 1
1 1 0 1 0
Tabela 8: Tablica Karnaugha dla wyjścia CO AB
00 01 11 10
C 0 0 0 1 0
1 0 1 1 1
Ciekawostką jest fakt, że w zależności od wejścia C układ dla wejść A oraz B można przed- stawić za pomocą czterech bramek. Dla C = 0 OUT to EXOR po A i B, a CO to AND z A i B. Z kolei dla C = 1 OUT to EXNOR po A i B, a CO to OR z A i B. Zapiszemy to teraz jako wzory wyczytane z tablic Karnaugha:
F OU T (A, B, C) = (AB + BA)C + (AB + AB)C (12)
F CO(A, B, C) = (A + B)C + AB (13) co łatwo można przekształcić w schemat przedstawiony na rysunku 5.
IN A
IN B
CI
CO OUT 74LS86D
74LS86D
74LS32D
74LS32D
74ALS08D
74ALS08D J1
J2
J3
J4 J5 1
2
3 IC6A
4 5
6 IC6B
1 2
3 IC7A
4 5
6 IC7B
1 2
3 IC8A
4 5
6 IC8B
Rysunek 5: Schemat ideowy sumatora.
Po przekształceniu bramek AND, OR oraz EXOR otrzymujemy schemat przedstawiony na rysunku 6.
IN A
IN B
CI
CO OUT 74ALS00D
74ALS00D
74ALS00D 74ALS00D
74ALS00D
74ALS00D 74ALS00D
74ALS00D
74ALS00D 74AC06D
74AC06D
74AC06D
74AC06D
74ALS00D J1
J2
J3
J4 1 J5
2 3 IC1A
4 5
6 IC1B
9 10
8 IC1C 12
13 11 IC1D
1 2
3 IC2A
4
5 6
IC2B 9
10 8 IC2C
12
13 11
IC2D
1 2
3 IC3A
1 2
IC4A
3 4
IC4B
5 6
IC4C
9 8
IC4D
4 5
6 IC5B
Rysunek 6: Schemat sumatora.
Zauważyliśmy, że układ ten da się jeszcze uprościć, ze względu na fakt, że równoważny jest wzór (13) oraz (14).
F CO(A, B, C) = (AB + BA)C + AB (14)
Możemy zastosować tą metodę ponieważ AB obsługuje nam wypadek który nie jest obsłu-
giwany przez bramkę EXOR. Dzięki temu zamiast bramki OR możemy wykorzystać bramkę
EXOR użytą do konstrukcji układu dla OUT. Schemat ideowy tego układu znajduje się na
rysunku 7, a po niezbędnych przekształceniach końcowy schemat znajduje się na rysunku 8.
IN A
IN B
CI
CO OUT 74LS86D
74LS86D
74LS32D 74ALS08D
74ALS08D J1
J2
J3
J4 J5 1
2
3 IC6A
4 5
6 IC6B
4 5
6 IC7B
1 2
3 IC8A
4 5
6 IC8B
Rysunek 7: Schemat ideowy sumatora – zoptymalizowany.
IN A
IN B
CI
CO OUT 74ALS00D
74ALS00D
74ALS00D 74ALS00D
74ALS00D
74ALS00D 74ALS00D
74ALS00D
74ALS00D 74AC06D
74AC06D
74AC06D
74AC06D J1
J2
J3
J4 1 J5
2 3 IC1A
4 5
6 IC1B
9 10
8 IC1C 12
13 11
IC1D
1 2
3 IC2A
4 5
6 IC2B 9
10 8 IC2C
12 13
11 IC2D
1 2
3 IC3A
1 2
IC4A
3 4
IC4B
5 6
IC4C
9 8
IC4D