Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 Konsultacja: Wojciech Grodowski |
©2013 mgr
Jerzy Wałaszek
|
Jeśli sygnał X ma stan logiczny 0, to na wyjściu Y pojawia się wartość funkcji A OR B. Gdy sygnał X przyjmie wartość 1, to na wyjściu Y pojawi się wartość funkcji A AND B. Wejście X służy zatem do programowania funkcji spełnianej przez bramkę.
Projektowanie bramki zaczniemy od określenia funkcji logicznej wyjścia Y w zależności od stanu wejść A, B i X. W tym celu posłużymy się metodą tablic Karnaugha. Metodę tę dobrze jest opanować, ponieważ jest prosta i uniwersalna.
Tablica ma cztery wiersze, ponieważ para współrzędnych A i B przyjmuje 4 różne kombinacje wartości. Kombinacje te zapisujemy na początku każdego wiersza w kodzie Gray'a, który przerabialiśmy na zajęciach koła. Ma on tę cechę, że każdy kolejny wyraz różni się od poprzedniego tylko jednym bitem. Jest to prawdziwe również dla pierwszego i ostatniego wiersza.
Kolumn jest tylko dwie, ponieważ sygnał X może przyjmować tylko dwie wartości.
W kolejnych kratkach wpisujemy pożądaną wartość logiczną wyjścia Y dla sygnałów wejściowych, które są współrzędnymi kratki. I tak otrzymujemy:
Zauważ, że w pierwszej kolumnie tablicy mamy wartości funkcji A OR B (dla X = 0), a w drugiej kolumnie mamy wartości funkcji A AND B (dla X = 1). Teraz łączymy ze sobą komórki tablicy o wartościach 1, tak aby otrzymać jak największe obszary o wymiarach będących potęgami liczby 2 (1,2,4,8...). W naszym przypadku są takie trzy obszary:
Przyjrzyjmy się tym obszarom:
Obszar żółty.
Zależy od współrzędnej B oraz X. Współrzędna A nie wpływa na wartość funkcji Y w tym obszarze, ponieważ zmienia swoją wartość (nie jest w obszarze stała). Pozostają nam zatem współrzędne B i X. Jednakże współrzędna X ma wartość 0, dlatego bierzemy jej negację i wykonujemy iloczyn logiczny ze współrzędną B. Otrzymamy funkcję dla obszaru żółtego:
Obszar czerwony.
Tutaj obszar czerwony nie zależy od wartości X (ponieważ się zmienia), lecz tylko od A i B.
Obszar niebieski.
Obszar zależy od X i A.
Cała funkcja logiczna Y jest sumą logiczną funkcji poszczególnych obszarów:
Taka postać funkcji, chociaż zupełnie poprawna, nie jest dla nas jeszcze dobra. Sieć logiczną chcielibyśmy zbudować z bramek standardowych NAND oraz NOT. Musimy zatem przekształcić ten wzór za pomocą rachunku algebry Boole'a. W tym celu dokonujemy podwójnego zaprzeczenia całej funkcji Y (podwójne zaprzeczenie nie zmienia wartości logicznej).
Teraz wykorzystujemy prawa de Morgana, które mówią, że zaprzeczenie sumy logicznej jest równoważne iloczynowi zaprzeczeń:
Zwróć uwagę, że otrzymaliśmy same funkcje NAND oraz NOT. Zanim zabierzemy się do konstruowania tej sieci, napiszmy prosty program w języku C++, który zasymuluje nam funkcję Y i pozwoli sprawdzić poprawność jej wyprowadzenia.
// Test sieci logicznej // Koło informatyczne w I LO w Tarnowie // (C)2014 mgr Jerzy Wałaszek // 04.04.2014 //------------------------------------- #include <iostream> using namespace std; int gray[][2] = {{0,0},{0,1},{1,1},{1,0}}; // Tablica kodu Graya int NAND2(int a, int b) { return (a & b) ^ 1; } int NAND3(int a, int b, int c) { return (a & b & c) ^ 1; } int main() { int A,B,X,i; for(i = 0; i < 4; i++) { A = gray[i][0]; B = gray[i][1]; for(X = 0; X <= 1; X++) cout << NAND3(NAND2(B,!X), NAND2(A,B), NAND2(A,!X)) << " "; cout << endl; } return 0; } |
0 0 1 0 1 1 1 0 |
Otrzymaliśmy wynik zgodny z zawartością tablicy Karnaugha, czyli funkcja jest wyprowadzona dobrze. Teraz zaprojektujemy sieć logiczną. Będzie się ona składała z 1 bramki NOT do odwrócenia sygnału X, trzech bramek NAND 2 wejściowych oraz jednej bramki NAND 3 wejściowej:
W każdym mikroprocesorze znajduje się tzw. jednostka arytmetyczno-logiczna (ang. ALU – Arithmetic Logic Unit), której zadanie polega na wykonywaniu różnych operacji logicznych i arytmetycznych. Nasza bramka programowana jest prymitywną kuzynką takiej jednostki. Działanie obu jest bardzo podobne. Na wejścia ALU mikroprocesor przesyła dane (u nas są to wejścia A i B), następnie odpowiednio programuje operację ALU (u nas do tego celu służy sygnał X) i odczytuje z jej wyjścia wyniki (u nas jest to wyjście Y). Dzięki temu może on wykonywać różne operacje logiczne i arytmetyczne. Jak widzisz, wszystko opiera się na odpowiednio zaprojektowanych sieciach logicznych (ta w mikroprocesorze składa się nie z pięciu, lecz z tysięcy bramek).
SN7400 SN7404
SN7410
|
Inwertery na wejściu mają za zadanie odwrócić funkcje logiczne przycisków, tak aby przy ich naciśnięciu na wejścia bramki programowanej były podawane stany wysokie (odpowiednie diody A, B i X będą się zapalały).
Spis elementów:
Element | Ilość | Opis |
zasilacz 5V | 1 | do zasilania elementów elektronicznych |
płytka stykowa + kable | 1 | do montażu elementów elektronicznych |
SN7400 | 1 | 4 bramki NAND |
SN7404 | 1 | 6 bramek NOT (inwerterów) |
SN7410 | 1 | 3 bramki NAND trójwejściowe |
opornik 1kΩ/0,125W | 3 | –( )– do podłączania wejść bramek do +5V |
opornik 120Ω/0,125W | 4 | –( )– do ograniczania napięcia i prądu diody LED |
czerwona dioda LED | 4 | do sygnalizacji stanu wysokiego na wyjściu Q przerzutnika |
mikroprzełącznik | 3 | do zmiany stanu logicznego wejść A, B i X |
Jeśli przycisk X (po lewej stronie u dołu) nie jest naciśnięty, to bramka pełni funkcję OR. Naciśnięcie dowolnego z przycisków A/B powoduje zaświecenie diody Y. Gdy przycisk X jest naciśnięty, to bramka pełni funkcję AND. Teraz zapalenie diody Y wymaga jednoczesnego naciśnięcia obu przycisków A i B.
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe