PSL-K-01 | Funktory i prawa de Morgana | |
---|---|---|
C | Adrian Łukasik Jarosław Radzik |
AGH WEAIiIB KEiASPE |
3 ET | ||
2014/15 | Laboratorium Podstaw Sterowania Logicznego |
Wstęp teoretyczny:
Bramka logiczna element konstrukcyjny maszyn i mechanizmów (dziś zazwyczaj: układ scalony, choć podobne funkcje można zrealizować również za pomocą innych rozwiązań technicznych, np. hydrauliki czy pneumatyki), realizujący fizycznie pewną prostą funkcję logiczną, której argumenty (zmienne logiczne) oraz sama funkcja mogą przybierać jedną z dwóch wartości, np. 0 lub 1.
Postęp techniki jednak idzie do przodu. Dawniej stosowane układy w technologiach TTL czy CMOS odchodzą w technice cyfrowej do historii. Wypierane są układami FPGA obecnie coraz częściej stosowanymi. Układy te zyskały popularność dzięki możliwości programowania dowolnej funkcji, którą maja realizować. Jakie ma to zalety? Niewątpliwą zaletą takiego rozwiązania w porównaniu do klasycznej technologii TTL jest fakt, że zastosowany układ FPGA będzie tylko jeden, natomiast układów TTL będzie więcej, gdyż każdej bramce odpowiada inna seria układu. W praktyce skutkuje to bardzo rozbudowanym układem elektronicznym w którym można spotkać kilak, kilkadziesiąt a nawet w przypadku bardzo złożonych funkcji czy zadań kilkaset układów scalonych.
Zadanie 1.
Nasze pierwsze zadanie polegało na sprawdzeniu działania bramek AND, OR, NOT, XOR oraz XNOR. Po realizacji układu w programie DSCH 2.7 przystąpiliśmy do symulacji, w której otrzymaliśmy tabele prawdy dla poszczególnych bramek.
Przebieg symulacji: Szary kolor wypełnienia diody oraz przełącznika wskazuje stan wysoki czyli „1”, brak wypełnienia wskazuje na stan niski czyli „0”.
0 0 0 1
1 0 1 1
Powyżej zaprezentowaliśmy odpowiedzi poszczególnych bramek na zadane sygnały wejściowe. Widać z nich wyraźnie, że wszystkie stany na wyjściach bramek pokrywają się z rzeczywistością co mieliśmy zbadać. Poniżej zamieszczamy tabele z uzyskanymi wynikami.
A | B | AND | OR | NOT | XOR | XNOR |
---|---|---|---|---|---|---|
A • B |
A + B |
$$\overline{A}$$ |
$$\overline{B}$$ |
A ⊕ B |
||
0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 0 | 0 |
Zadanie 2.
Sprawdzenie prawa de Morgana:
Pierwsze prawo de morgana mówi, że $\overline{x \bullet y} = \overline{x} + \overline{y}$ . Wykonaliśmy symulację tego prawa przy pomocy programu Digital Works. Lewa strona układu, to lewa strona równania, a prawa strona układu, to prawa strona równania.
Drugie prawo de morgana $\overline{x + y} = \overline{x} \bullet \overline{y}$
Dla wszystkich kombinacji 0 i 1 na wejściu a oraz b otrzymujemy te same zależności. Jeżeli sygnały są takie samy dla różnych kombinacji 0 i 1 oraz ich schematy odpowiadają lewej oraz prawej stronie równania, to możemy stwierdzić, że prawa de Morgana są prawdziwe.
Zadanie 3.
Wykonanie podstawowych bramek logicznych wyłącznie za pomocą NOR lub NAND:
NOR na NANDach:
XOR na NANDach:
XNOR na NANDach:
NAND na NORach
XOR na NORach:
XNOR na NORach:
Każdy układ działa poprawnie i wykonuje funkcję, którą mu zadano. Z powyższego doświadczenia wynika, że bramki NAND i NOR są bramkami funkcjonalnie pełnymi, to znaczy, że przy pomocy tych dwóch bramek możemy zapisać każdą inną funkcję złożoną z dowolnej ilości innych bramek.
Zadanie 4.
Zadanie to polegało na wymyśleniu oraz skonstruowaniu dowolnego układu logicznego realizującego funkcję o czterech zmiennych (d,c,b,a), gdzie a jest najmłodszym bitem a d jest bitem najstarszym. Zadana przez nas funkcja miała przyjmować co najmniej 4 jedynki. Poniżej przedstawiamy realizacje całego zadania w raz z tabelą prawdy, funkcją kanoniczną dla zer i jedynek oraz tablicami Karnaugh dla zer i jedynek w raz ze zminimalizowanymi funkcjami.
Tablica prawdy dla naszej funkcji:
Tablice Karnaugh
Dla jedynek
Dla zer
F(d,c,b,a) = ∪(0,5,6,8,9,10,12,14,15)F(d,c,b,a) = ∩(1,2,3,4,7,11,13)
Na podstawie powyższych wzorów wyznaczam postać kanoniczną funkcji:
$$F^{1}\left( d,c,b,a \right) = \left( \overline{D} \bullet \overline{C\ } \bullet \overline{B} \bullet \overline{A} \right) + (\overline{D} \bullet C \bullet \overline{B} \bullet A) + (\overline{D} \bullet C \bullet B \bullet \overline{A}) + \left( D \bullet \overline{C\ } \bullet \overline{B} \bullet \overline{A} \right) + \left( D \bullet \overline{C\ } \bullet \overline{B} \bullet A \right) + (D \bullet \overline{C\ } \bullet B \bullet \overline{A}) + \ (D \bullet C \bullet \overline{B} \bullet \overline{A}) + (D \bullet C \bullet B \bullet \overline{A}) + (D \bullet C \bullet B \bullet A)$$
$$F^{0}\left( d,c,b,a \right) = \left( D + C + B + \overline{A} \right) \bullet (D + C + \overline{B} + A) \bullet (D + C + \overline{B} + \overline{A}) \bullet \left( D + \overline{C\ } + B + A \right) \bullet \left( D + \overline{C\ } + \overline{B} + \overline{A} \right) \bullet (\overline{D} + C + \overline{B} + \overline{A}) \bullet \ (\overline{D} + \overline{C\ } + B + \overline{A})$$
$$F^{1}\left( d,c,b,a \right) = \overline{A} \bullet \overline{B\ } \bullet \overline{C} + \ A \bullet \overline{B} \bullet C \bullet \overline{D} + \overline{A} \bullet B \bullet C + B \bullet C \bullet D + \overline{B} \bullet \overline{C} \bullet D + \overline{A} \bullet D$$
$$F^{0}\left( d,c,b,a \right) = \left( A + B + \overline{C} + D \right) \bullet \left( \ \overline{A} + B + \overline{C} + \overline{D} \right) \bullet \left( \overline{A} + \overline{B} + D \right) \bullet \left( \overline{B} + C + D \right) \bullet \left( \overline{A} + \overline{B} + C \right) \bullet (\overline{A} + C + D)$$
Realizacja funkcji na bramkach logicznych NAND oraz NOR 2 wejściowych.
$1.\ F^{1}\left( d,c,b,a \right) = \overline{A} \bullet \overline{B\ } \bullet \overline{C} + \ A \bullet \overline{B} \bullet C \bullet \overline{D} + \overline{A} \bullet B \bullet C + B \bullet C \bullet D + \overline{B} \bullet \overline{C} \bullet D + \overline{A} \bullet D$ - realizacja układu na 2 wejściowych bramkach NAND.
${2.\ F}^{0}\left( d,c,b,a \right) = \left( A + B + \overline{C} + D \right) \bullet \left( \ \overline{A} + B + \overline{C} + \overline{D} \right) \bullet \left( \overline{A} + \overline{B} + D \right) \bullet \left( \overline{B} + C + D \right) \bullet \left( \overline{A} + \overline{B} + C \right) \bullet (\overline{A} + C + D)$- realizacja układu na 2 wejściowych bramkach NOR.
Wnioski:
Funkcje NOR i NAND są bramkami funkcjonalnie pełnymi- przy ich pomocy możemy zastąpić jakąkolwiek inną funkcję złożoną ze wszystkich znanych dostępnych bramek. Funkcje które wykonuje NOR są funkcjami odwrotnymi do tych, które wykonuje NAND, dlatego AND na NAND będzie taki sam jak OR na NOR, OR na NAND taki sam jak AND na NOR, itd.
Stan 0 i 1 odpowiada stanowi niskiemu i wysokiemu w elektronice, co można oznaczyć danym wartościom napięć, np. dla „0” mamy 0V a dla „1” mamy przykładowo 5V. Bramki logiczne w praktyce wykonuje się na układach scalonych (przykładowo funkcje NAND realizuje układ w technologii TTL z serii SN7400 a funkcję NOR układ SN7402) , ale obecnie najnowszą formą produkcji bramek logicznych jest budowanie uniwersalnych programowalnych płytek elektronicznych, które mogą obsłużyć każdą bramkę- w zależności od tego ja zaprogramujemy daną płytkę – są to układy FPGA. Jest to bardzo praktyczne, ponieważ produkuje się jeden rodzaj produktu, który potrafi odtworzyć działanie wszystkich bramek logicznych przy odpowiednio niskich kosztach produkcji.
Wszystkie powierzone nam zadania zakończyły się powodzeniem. Z pomocą odpowiedniego programu do symulacji pracy funktorów logicznych mogliśmy już na etapie pomysłu realizacji problemu skorygować swoje poczynania. Najbardziej pracochłonne okazało się zadanie czwarte, gdzie mieliśmy wylosować co najmniej 4 argumenty, które przyjmują wartość „1”. Następnym krokiem był zapis tabeli prawdy tej funkcji, zapis w postaci kanonicznej, tabela Karnaugh, minimalizacja funkcji dla zer i jedynek oraz ostatni etap czyli realizacja układu na bramkach logicznych. Jednak żeby nie było zbyt prosto otrzymany układ zdecydowaliśmy się zrealizować wyłącznie na bramkach NAND i OR dwu-wejściowych. Układy te są powszechnie stosowane oraz łatwo dostępne. Nie musieliśmy tego robić jednak w praktyce nie spotykane są bramki cztero-wejściowe, dlatego zdecydowaliśmy się na taką realizacje. Otrzymane układy wydają się być skomplikowanymi, jednak są to odpowiedniki funkcji zminimalizowanych i dalsze ich uproszczenie nie jest możliwe. Oba układy by potwierdzić poprawność ich budowy zostały poddane symulacji, w której dla odpowiednich wartości „0” lub „1” argumentów d,c,b,a funkcja wyjściowa F(d,c,b,a) obierała zakładane przez nas w tabeli prawdy wartości.