Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
SPIS TREŚCI |
Pojęcie bitu
Przesyłanie bitów
|
Podrozdziały |
Minimalizacja funkcji logicznych polega na upraszczaniu wyrażeń logicznych, tak aby zawierały jak najmniejszą liczbę tylko niezbędnych argumentów oraz operacji logicznych. Zadanie to ma podstawowe znaczenie dla techniki cyfrowej, gdzie funkcje urządzenia realizowane są za pomocą tzw. bramek logicznych (układów wykonujących podstawowe operacje logiczne). Jest chyba jasne, iż prostsze wyrażenie oznacza mniejszą złożoność układu elektronicznego, a co za tym idzie mniejszy koszt wykonania (szczególnie w dużych seriach i nie na potrzeby wojska), większą niezawodność (mniej elementów, które mogą przestać działać) oraz zwykle szybsze działanie (mniej uzależnień powoduje szybszą stabilizację sieci logicznej).
Zadanie minimalizacji można wykonać na kilka sposobów. Jednym z nich jest zastosowanie Algebry Boole'a do wykonania odpowiednich przekształceń i redukcji.
Zadanie jest następujące: zaprojektować minimalną funkcję logiczną zadaną poniższą tabelką stanów:
a | b | c | f ( a,b,c ) |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 |
Funkcja przyjmuje wartość 1 dla a, b, c = 010, 011, 100 i 101. Tworzymy odpowiednie wyrażenie logiczne wykorzystując alternatywę, koniunkcję i negację:
f ( a, b, c ) = ( ¬ a ∧ b ∧ ¬ c ) ∨ ( ¬ a ∧ b ∧ c ) ∨ ( a ∧ ¬ b ∧ ¬ c ) ∨ ( a ∧ ¬ b ∧ c ) |
Upraszczamy wyrażenie wykorzystując rozdzielność:
f ( a, b, c ) = ¬ a
∧ ( b ∧ ¬ c ∨ b ∧ c ) ∨a ∧ ( ¬
b ∧ ¬ c ∨ ¬ b ∧ c ) f ( a, b, c ) = ¬ a ∧ ( b ∧ ( ¬ c ∨ c )) ∨a ∧ ( ¬ b ∧ ( ¬ c ∨ c )) |
wykorzystując:
¬ c ∨ c = 1 b ∧ 1 = b ¬ b ∧ 1 = ¬ b |
otrzymujemy:
f ( a, b, c ) = ¬ a
∧ ( b ∧ 1 ) ∨a ∧ ( ¬ b ∧ 1) f ( a, b, c ) = ( ¬ a ∧ b ) ∨( a ∧ ¬ b ) |
Dzięki przekształceniom udało nam się sprowadzić początkowe wyrażenie:
f ( a, b, c ) = ( ¬ a ∧ b ∧ ¬ c ) ∨ ( ¬ a ∧ b ∧ c ) ∨ ( a ∧ ¬ b ∧ ¬ c ) ∨ ( a ∧ ¬ b ∧ c ) |
do wyrażenia:
f ( a, b, c ) = ( ¬ a ∧
b ) ∨( a ∧ ¬ b ) f ( a, b, c ) = a ⊕ b |
Wyrażenie końcowe jest dużo prostsze i nie zawiera argumentu c (mówimy, iż wartość funkcji nie zależy od tego argumentu). Dokonaliśmy minimalizacji funkcji. Taki sposób postępowania jest oczywiście poprawny, jednakże wymaga przeprowadzania uciążliwych transformacji logicznych. Na szczęście istnieje prostszy sposób zwany metodą map Karnaugha.
Na początek rozważymy problem złożony z dwóch zmiennych. Funkcję logiczną f ( a, b ) zadajemy najczęściej tabelką wartości (tabelka ta wynika z potrzeb użycia danej funkcji - stąd określamy wymagane wartości funkcji dla poszczególnych argumentów).
a | b | f ( a, b ) |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Argumenty funkcji dzielimy na dwie grupy - będą służyły jako współrzędne elementów mapy Karnaugha. Ponieważ są tylko dwa argumenty a i b, to w jednej grupie będzie argument a, a w drugiej będzie argument b :
Współrzędne wyznaczają prostokątne obszary (zaznaczone na żółto). W obszarach tych umieszczamy wartości minimalizowanej funkcji. Otrzymujemy poniższą mapę Karnaugha:
Teraz na mapie Karnaugha grupujemy razem ze sobą obszary zawierające wartość funkcji równą 1. Grupowany obszar musi mieć rozmiary (ilość objętych kolumn i wierszy mapy) będące potęgami liczby dwa, zatem powinien obejmować 1, 2, 4 itd. kolumny lub wiersze. Zawsze staramy się zaznaczyć obszary maksymalne. W naszym przypadku na mapie można zaznaczyć dwa obszary A i B :
W obszarze A argument b zmienia się z 0 na 1. Skoro tak, to nie ma on wpływu na wartość funkcji f ( a, b ) w tym obszarze. Zatem dla obszaru A mamy:
A = ¬ a |
Argument a musi być zanegowany, ponieważ obszar A leży w części mapy, dla której współrzędna a = 0.
W obszarze B jest odwrotnie - zmienia się argument a z 0 na 1. Zatem argument a nie ma wpływu na wartość funkcji w B. Wpływ ma jedynie argument b.
B = ¬ b |
Ponieważ obszary A i B pokrywają wszystkie wartości 1, zatem:
f ( a, b ) = A ∨ B = ¬ a ∨ ¬ b = ¬ ( a ∧ b ) |
Teraz bardziej skomplikowany przykład (z początku artykułu). Funkcja trójargumentowa zadana tabelką:
a | b | c | f ( a,b,c ) |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 |
Rozdzielamy argumenty na dwie grupy: ab oraz c (można również rozdzielić na a i bc – zmieni się tylko orientacja mapy z pionowej na poziomą). Współrzędne na mapie Karnaugha są zawsze zapisywane w kodzie Graya.
W pola mapy wstawiamy wartości funkcji zgodnie z tabelką i otrzymujemy mapę Karnaugha:
Na mapie zaznaczamy obszary o wartości funkcji równej 1. Tutaj są tylko dwa takie obszary A i B :
Dla każdego obszaru uwzględniamy tylko te współrzędne, które w obszarze się nie zmieniają - w obu przypadkach rugujemy c, ponieważ zmienia się z 0 na 1.
A = ¬ a ∧ b B = a ∧ ¬ b |
i ostatecznie:
f ( a, b, c ) = A ∨ B = ( ¬
a ∧
b ) ∨ ( a ∧ ¬ b ) f ( a, b, c ) = a ⊕ b |
Doszliśmy do identycznych rezultatów jak na początku rozdziału. Tylko tutaj nie musieliśmy wykonywać żadnych przekształceń logicznych. To wielka zaleta map Karnaugha - funkcję otrzymujemy już w postaci zminimalizowanej.
Mamy funkcję czteroargumentową f ( a, b, c, d ) zadaną gotową mapą Karnaugha. Dokonać minimalizacji tej funkcji:
Cztery narożne obszary można połączyć w jeden obszar poprzez naprzeciwległe krawędzie - mapa Karnaugha łączy się na krawędziach - warto o tym fakcie pamiętać.
Obszar A jest zależny tylko od parametrów b i d, ponieważ nie zmieniają one swoich wartości w tym obszarze. Obszar B jest również zależny od tych samych parametrów:
A = b ∧ d B = ¬ b ∧ ¬ d f ( a, b, c, d ) = A ∨ B = ( b ∧ d ) ∨ ( ¬ b ∧ ¬ d ) |
Z map Karnaugha będziemy intensywnie korzystać przy projektowaniu sieci logicznych.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.