Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2015 mgr
Jerzy Wałaszek
|
Funkcje logiczne |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Technika cyfrowa opiera się na tzw.
algebrze Boole'a. Rozróżniamy w niej dwie wartości logiczne:
prawdę (ang. true) i fałsz
(ang. false). W urządzeniach
elektronicznych wartości te będą reprezentowane przez poziomy
napięć:
Uwaga na przyszłość:Poziomy logiczne zależą od wartości napięcia
zasilającego układy cyfrowe. Dla mikrokontrolerów firmy
Atmel obowiązuje reguła:
Na przykład: Dla VCC = 1,8V (najniższe możliwe napięcie zasilania mikrokontrolerów Atmel):
Dla VCC = 2,7V (napięcie przy zasilaniu z dwóch akumulatorków paluszkowych):
Dla VCC = 5V (typowe napięcie pracy mikrokontrolera):
Napięcie o poziomie pośrednim traktowane jest jako nieokreślone i należy go unikać. W przeciwnym wypadku działanie układu będzie niestabilne.
Umówmy się, że poziomy logiczne będziemy oznaczali cyframi 0 (poziom niski) oraz 1 (poziom wysoki). W algebrze Boole'a, podobnie jak w zwykłej algebrze, występują działania na wartościach logicznych, które będziemy nazywali funkcjami. Poniżej przedstawiamy trzy podstawowe funkcje logiczne, które będziemy opisywali nazwami angielskimi, ponieważ tak jest przyjęte w literaturze fachowej, więc się przyzwyczajaj. Pierwsza funkcja to NOT, czyli negacja lub zaprzeczenie logiczne. Tabelka logiczna jest następująca:
Jest to funkcja jednoargumentowa. Zwraca zawsze wartość przeciwną logicznie do wartości swojego argumentu.
Drugą funkcją jest OR, czyli alternatywa lub suma logiczna. W przeciwieństwie do funkcji NOT funkcja OR wymaga co najmniej dwóch argumentów.
Funkcja OR przybiera wartość wysoką 1 tylko wtedy, gdy jeden
z jej argumentów ma wartość 1. Wartość niską 0 funkcja OR
przyjmuje tylko wtedy, gdy wszystkie jej argumenty mają wartość
0. Zwróć uwagę, że funkcja OR jest podobna do operacji
dodawania. Suma dwóch liczb nieujemnych jest równa zero, gdy
obie liczby mają wartość 0 (
Trzecią funkcją jest AND, czyli koniunkcja lub iloczyn logiczny. Funkcja AND jest również co najmniej dwuargumentowa.
Funkcja AND przyjmuje poziom wysoki 1 tylko wtedy, gdy
wszystkie jej argumenty mają poziom 1. W przeciwnym razie
funkcja AND ma poziom niski 0. Takie zachowanie podobne jest to
iloczynu liczb: iloczyn dwóch liczb jest różny od zera tylko
wtedy, gdy obie liczby są różne od zera
CiekawostkaJeśli użyjemy tzw. logiki ujemnej,
czyli za prawdę przyjmiemy poziom 0, a za fałsz poziom 1
(a zatem na odwrót niż normalnie),
to z funkcji OR zrobi nam się funkcja AND, a z funkcji
AND otrzymamy funkcję OR. Sprawdź to sobie.
Aby zrealizować dowolną funkcję logiczną, potrzebne są tylko dwie podstawowe funkcje: NOT + AND lub NOT + OR. Dzieje się tak za sprawą tzw. praw De Morgana: NOT(a AND b) = (NOT a) OR (NOT b) NOT(a OR b) = (NOT a) AND (NOT b) Prawa te pozwalają wyrażać koniunkcję za pomocą negacji oraz alternatywy. Również odwrotnie, pozwalają one wyrażać alternatywę za pomocą koniunkcji i negacji. Wprowadźmy dwie dodatkowe funkcje logiczne: a NAND b = NOT(a AND b) oraz a NOR b = NOT(a OR b)
Funkcja NOR jest zaprzeczoną sumą logiczną. Jest prawdziwa, jeśli jej wszystkie argumenty są fałszywe. W przeciwnym razie funkcja NOR zwraca fałsz. Funkcje te są uniwersalne, ponieważ przy ich pomocy możemy wyrazić każdą z pozostałych funkcji logicznych:
|
Układy scalone |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dotychczas omawialiśmy tylko elementy dyskretne,
takie jak oporniki, kondensatory, diody i tranzystory. Z
elementów tych można budować nawet bardzo skomplikowane obwody
elektroniczne. Jednakże wraz ze wzrostem ilości elementów rośnie
również jego złożoność, co sprawia, że układ staje się trudny w
budowie i uruchomieniu. Z tego powodu wymyślono układy scalone.
Są to elementy elektroniczne, które w swoim wnętrzu kryją setki,
tysiące a nawet dziesiątki milionów tranzystorów, diod i innych
komponentów elektronicznych. Z punktu widzenia użytkownika układ scalony jest malutkim pudełkiem, z którego wyprowadzono końcówki. Wewnątrz tego pudełka znajduje się malutka płytka, na której utworzona jest struktura układu scalonego. Za pomocą małych drucików końcówki układu scalonego połączone są z odpowiednimi punktami tej struktury.
Funkcje końcówek zależą od rodzaju układu scalonego. Musisz poznać sposób ich numerowania. Zwróć uwagę, iż na obudowie znajduje się małe wycięcie lub mała dziurka. Układ ustawiamy nóżkami w dół, tak aby wcięcie na obudowie znalazło się po stronie lewej (lub punkt po lewej stronie u dołu). Wtedy numeracja nóżek rozpoczyna się od lewego dolnego rogu i biegnie wokół układu scalonego. Poniżej przedstawiamy widok z góry układu o 14 wyprowadzeniach.
Bramki cyfrowe są umieszczane w układach scalonych, które produkuje wiele różnych firm na całym świecie. Najpopularniejsze serie to obecnie TTL (bramki zbudowane z tranzystorów bipolarnych, obecnie buduje się również z tranzystorów polowych jako nowoczesne zamienniki przestarzałych układów bipolarnych) oraz CMOS (bramki zbudowane z tranzystorów polowych).
Produkowane są również zastępniki układów TTL wykonane w technologii HCT (szybkie układy logiczne CMOS), które nie ustępują szybkością układom TTL przy jednoczesnym obniżeniu poboru mocy. Temat ten jest dosyć rozległy i warto go opanowywać stopniowo w miarę potrzeb. Układy CMOS szczególnie nadają się do zasilania bateryjnego, gdyż pobierają bardzo mały prąd zasilający. Nie będziemy się tutaj wgłębiać w wewnętrzną budową bramek cyfrowych, ponieważ jest to zagadnienie dosyć skomplikowane i w sumie nam niezbyt potrzebne. Musimy jedynie znać właściwości bramek oraz ich parametry elektryczne. Poniżej przedstawiamy obraz płytki krzemowej, która znajduje się wewnątrz układu SN7400 (cztery bramki NAND). Na płytce tej wytworzone są w procesie produkcyjnym tranzystory oraz połączenia miedzy nimi.
Gdy umiemy już odczytywać numery wyprowadzeń układów scalonych, możemy zdefiniować ich zawartość. Poniżej przedstawiamy definicje wyprowadzeń kilku układów cyfrowych zawierających podstawowe bramki logiczne. Są to układy TTL serii SN74xx oraz CMOS serii CD40xx. GND oznacza masę dla TTL (minus zasilania), VSS dla CMOS. VCC oznacza napięcie zasilające układ scalony TTL (+5V), VDD dla CMOS. Wiedza ta pozwala na samodzielne konstruowanie prostych urządzeń cyfrowych. Układy zestawiliśmy, tak aby w obu seriach otrzymać funkcjonalne odpowiedniki. Dlatego kolejność numeracji układów CMOS nie jest zachowana.
Więcej na temat układów cyfrowych znajdziesz w osobnym artykule dostępnym w naszym serwisie. Zapraszamy.
|
Zastosowania bramek cyfrowych |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Zasady łączenia wejść i wyjśćDo jednego wyjścia bramki można podłączyć kilka wejść innych bramek. Musimy tylko pamiętać, aby nie przekroczyć obciążalności wyjścia bramki. Typowe wyjście bramki TTL może wysterować około 10 wejść innych bramek. Do bramek CMOS reguła ta się nie odnosi, ponieważ pobierają one bardzo mały prąd wejściowy – mówimy, iż posiadają dużą oporność wejściową. Nieużywane wejścia bramek należy podłączyć poprzez opornik 1kΩ (jeśli możemy zagwarantować, iż napięcie VCC nie przekroczy 5,5V, to wejście można połączyć bezpośrednio) do zasilania +5V (bramki AND i NAND) lub bezpośrednio do masy (bramki OR i NOR). Nie wolno pozostawiać wejścia "wiszącego", ponieważ powoduje to pogorszenie warunków pracy bramki (zwiększa się czas propagacji oraz zmniejsza się odporność na zakłócenia) i w konsekwencji może powodować błędy w działaniu całego urządzenia cyfrowego.
Nie wolno łączyć ze sobą wyjść bramek, gdyż prowadzi to do zwarcia i w konsekwencji może uszkodzić układ cyfrowy. Jedynym wyjątkiem są bramki z wyjściem typu otwarty kolektor. Pomówimy o nich przy innej okazji.
Podłączanie diod LEDZ diodami LED spotkaliśmy się w jednym z poprzednich rozdziałów. Powtórzmy sobie podstawowe wiadomości. Dioda LED (ang. Light Emitting Diode) jest elementem elektronicznym, który przewodzi prąd tylko w jednym kierunku. Gdy prąd o odpowiednim natężeniu przepływa przez diodę LED, emituje ona światło. Kolor świecenia zależy od materiału użytego do konstrukcji diody. Diody LED bardzo często wykorzystywane są w technice cyfrowej jako różnego rodzaju wskaźniki i oświetlenie – np. zegary wyświetlają przy ich pomocy cyfry czasu i daty, telefony komórkowe używają ich do podświetlania swoich ekranów i klawiatur. Stosując diody LED, należy pamiętać o rzeczach następujących:
Zwykle diody o średnicy 5mm (najbardziej popularne cenowo) pobierają prąd IF = 10...20mA. Jeśli chcemy uzyskać niezawodność świecenia, to obniżamy ten prąd do około 15mA (tyle może na wyjściu dostarczyć standardowa bramka TTL, bramki HCT mogą dostarczyć prądu 25...75mA). Napięcie UF określamy z poniższej tabelki:
Do naszych celów najlepsze będą diody o UF = 1,7V ... 2,1V. Diody o wyższym napięciu wymagają tranzystora sterującego, który zapewni im odpowiednie warunki zasilania (w bramkach TTL, układ HCT bez problemy wysteruje taką diodę). Diodę LED można podłączyć do wyjścia bramki TTL na dwa sposoby. W obu przypadkach należy odpowiednio dobrać opór ograniczający prąd diody LED. Poniżej przedstawiamy odpowiednie wzory obliczeniowe dla bramek TTL (układy HCT dają napięcie wyjściowe około 4,5V w stanie wysokim 1 i około 0,1V w stanie niskim 0):
Dla wersji pierwszej napięcie 3,5V jest napięciem wyjściowym bramki TTL w stanie wysokim (dla HCT przyjmuj 4,5V). Napięcie to rozkłada się na opornik R oraz diodę LED. Gdy odejmiemy od niego napięcie UF diody LED, to pozostanie napięcie tylko na oporniku R. Dzieląc to napięcie przez pożądany prąd IF otrzymujemy wartość oporu opornika R, który należy w tym układzie zastosować. Dla wersji drugiej jest podobnie. Napięcie 4,6V jest napięciem zasilania pomniejszonym o napięcie 0,4V (dla HCT przyjmuj 4,9V), które pojawia się na wyjściu bramki w stanie niskim. Powyższe dwa układy można połączyć w jeden – górna dioda LED będzie świeciła w stanie niskim, a dolna dioda LED będzie świeciła w stanie wysokim.
Ćwiczenie nr 8Najbardziej popularną bramką cyfrową jest bramka NAND. Układ SN7400 (74HCT00) zawiera cztery bramki dwuwejściowe NAND.Zaprojektujemy teraz prosty układ z dwóch bramek NAND (bramki pracują jako inwertery, możemy też zastosować bramki NOT typu SN7404/74HCT04). Schemat jest następujący:
Za pomocą podanych wcześniej wzorów obliczamy wartości oporów R1 i R2.
Przyjmujemy R1 = 180Ω
Przyjmujemy R2 = 100Ω
Jeśli nie posiadasz dokładnie takich oporników, możesz po prostu zastosować dwa oporniki większe, np. 220Ω lub 270Ω. Przy jasnych diodach LED różnica nie będzie wcale widoczna.
Gdy podłączysz zasilanie, wejścia bramek NAND będą się znajdowały w stanie wysokim 1, ponieważ są podłączone poprzez opornik 1k do plusa zasilania. Zatem na ich wyjściach pojawi się stan niski 0. W stanie niskim będzie świeciła tylko dioda żółta. Gdy wciśniesz przycisk, zewrze on wejścia bramek NAND do masy, co jest równoważne podaniu na nie stanu niskiego 0. Na wyjściach bramek pojawi się stan wysoki. W stanie wysokim świeci tylko dioda zielona.
Ćwiczenie nr 9Problem pojawia się, gdy chcemy sterować elementem pobierającym większy prąd niż może dostarczyć bramka. Nie wolno go wtedy podłączać bezpośrednio do wyjścia bramki, gdyż może to spowodować uszkodzenie bramki. W takim przypadku zaprzęgamy do pracy tranzystor mocy.
Gdy włączysz zasilanie, wejścia bramki NAND będą się znajdowały w stanie wysokim 1, ponieważ są podłączone do plusa zasilania poprzez opornik 1k. Na wyjściu bramki panuje stan niski . Stan ten jest wymuszany na bazie tranzystora. Tranzystor jest zatkany i nie przewodzi prądu w obwodzie kolektor–emiter, zatem żarówka nie świeci. Jeśli teraz naciśniesz przełącznik, to zewrze on wejścia bramki do masy, czyli wymusi na nich stan niski 0. Spowoduje to pojawienie się stanu wysokiego 1 na wyjściu bramki i wysterowanie tranzystora. W obwodzie baza–emiter popłynie prąd, który z kolei wymusi prąd w obwodzie kolektor–emiter. Tranzystor zacznie przewodzić i żarówka się zaświeci. Tranzystor pełni tutaj rolę przełącznika oraz wzmacniacza prądu. Z wyjścia bramki będzie pobierany niewielki prąd (około 20mA).
Ćwiczenie nr 10Jeszcze lepszym rozwiązaniem jest zastosowanie tranzystora unipolarnego MOSFET-N. Tranzystor nie będzie praktycznie obciążał wyjścia bramki, ponieważ posiada bardzo dużą oporność wejściową i sterowanie odbywa się za pomocą napięć.
Jeśli stosujesz zwykły układ TTL (SN7400), to napięcie zasilające musi wynosić co najmniej 4,5V (nowe baterie lub naładowane akumulatory). W przeciwnym razie bramka NAND nie wysteruje tranzystora MOSFET-N. |
Sieci logiczne |
|||||||||||||||||||||||||||||||||||||||||||||
Bramki służą do tworzenia różnych sieci logicznych, czyli
obwodów realizujących pożądane funkcje logiczne. Funkcje te mogą
być zadawane tabelką stanów wejść i wyjść
Ćwiczenie 11Załóżmy, że chcemy zaprojektować tzw. bramkę programowalną, która realizuje funkcję AND lub OR w zależności od sygnału sterującego X:
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 jednocześnie prosta i uniwersalna. Mamy trzy sygnały wejściowe: A, B i X oraz sygnał wyjściowy Y, który jest funkcją logiczną tych trzech sygnałów wejściowych. Układamy tablicę Karnaugha będącą jakby mapą funkcji Y dla współrzędnych A, B i X. Współrzędne A i B będą po lewej stronie w pionie tabelki. Współrzędna X będzie u góry w poziomie tabelki:
Tablica ma cztery wiersze, ponieważ para współrzędnych A i B przyjmuje 4 różne kombinacje wartości logicznych. Kombinacje te zapisujemy na początku każdego wiersza w kodzie Gray'a. Ma on tę cechę, że każdy kolejny wyraz różni się od poprzedniego stanem tylko jednego bitu. Jest to prawdziwe również dla pierwszego i ostatniego wiersza. Kolumny są tylko dwie, ponieważ sygnał X może przyjmować jedynie 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: Y1 = B AND NOT X
Obszar czerwony.
Tutaj obszar czerwony nie zależy od wartości X (ponieważ X się zmienia), lecz tylko od A i B. Y2 = A AND B
Obszar niebieski.
Obszar zależy od X i A. Y3 = A AND NOT X Cała funkcja logiczna Y jest sumą logiczną funkcji poszczególnych obszarów: Y = Y1 OR Y2
OR Y3 Taka postać funkcji, chociaż zupełnie poprawna, nie jest dla nas 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). Y = NOT (NOT ((B AND NOT X) OR (A AND B) OR (A AND NOT X))) Teraz wykorzystujemy prawa de Morgana, które mówią, że zaprzeczenie sumy logicznej jest równoważne iloczynowi zaprzeczeń: Y = NOT (NOT (B AND NOT X) AND NOT (A AND B) AND NOT (A AND NOT X)) Zaprzeczona koniunkcja to NAND. Otrzymujemy ostatecznie: Y = (B NAND NOT X) NAND (A NAND B) NAND (A NAND NOT X) Otrzymaliśmy same funkcje NAND i NOT, które dadzą się w prosty sposób zrealizować za pomocą typowych bramek NAND (SN7400/SN7410) oraz NOT (SN7404). Sieć logiczna wygląda następująco:
Gdy mamy już gotową sieć, możemy ją przetestować w poniższym układzie:
Jeśli przycisk X nie jest wciśnięty, to układ realizuje funkcję OR. Naciśnięcie przycisku A, B lub obu spowoduje zaświecenie się diody Y. Gdy przycisk X jest wciśnięty, układ realizuje funkcję AND. Aby dioda Y się zaświeciła, należy teraz wcisnąć oba przyciski A i B. Naciśnięcie tylko jednego z przycisków nie spowoduje zaświecenia diody LED.
Sygnał X jest sygnałem programującym zachowanie się sieci logicznej. Tego typu sieci logiczne mają zastosowanie we współczesnych procesorach, gdzie noszą nazwę jednostek arytmetyczno–logicznych (ang. ALU – Arithmetic Logic Unit). Dzięki nim procesor może w sposób programowy realizować różne funkcje logiczne i arytmetyczne. |
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