Podstawy algebry Boole'a:
Algebra Boole'a jest "narzędziem" matematycznym służącym m.in. do opisu, analizy i syntezy układów logicznych. Stanowi ona uogólnienie rachunku zdań i algebry zbiorów uznając jedno i drugie tylko za szczególne przypadki ogólniejszej teorii. Również szczególnym przypadkiem algebry Boole'a jest binarna algebra Boole'a.
Dla zdefiniowania każdej algebry potrzebne jest określenie pewnego zbioru, działań w tym zbiorze (operacji) , elementów wyróżnionych w tym zbiorze oraz zespołu aksjomatów i twierdzeń.
Binarna algebra Boole'a:
Binarną algebrę Bool'a tworzą: - zbiór dwuelementowy {0,1}
- wyróżnione elementy tego zbioru - 0 i 1 - (czyli oba są wyróżnione}
- dwa działania (operacje, funktory) - suma logiczna (+) oraz iloczyn logiczny (*)
- zestaw aksjomatów 1-5 oraz 1'-5'
- wynikający z aksjomatów zestaw twierdzeń 1 - 7 oraz 1' - 7' i 8
definicja sumy logicznej i iloczynu logicznego
Aksjomaty: |
|
Aksjomaty dualne: |
|
Twierdzenia: |
|
|
Twierdzenia dualne: |
Twierdzenie nr.6 to bardzo przydatne Prawo de Morgana, zaś twierdzenie nr.2 to tzw. Prawo Pochłaniania.
Aksjomaty dualne tworzy się poprzez zamianę w aksjomatach 1-5 '0' na '1', '1' na '0', oraz znaku 'mnożenia' na 'dodawanie'.
Związek algebry Boole'a z rachunkiem zdań i algebrą zbiorów:
Funkcja boolowska i sposoby jej określania
Funkcję boolowską m zmiennych x1, x2, x3, ... , xm , gdzie xi należy do zbioru {0,1} nazywamy takie odwzorowanie, które wariacjom zero-jedynkowym zmiennych x1, x2, x3, ... , xm przyporządkowuje wartość funkcji (oznaczoną y) równą 0, bądź 1, co można symbolicznie zapisać:
y=f(x1, x2, x3, ... , xm)
lub
f:{0,1}x{0,1}x{0,1}x … x{0,1}
{0,1}
np. Funkcja boolowska jednej zmiennej
drut
negator
stałe zera
stałe jedynki
Sposoby określania funkcji boolowskiej:
1) Tabela prawdy dla funkcji boolowskiej m zmiennych ma m+1 kolumn i 2m wierszy. Kolumny są opisane zmiennymi
x1, x2, x3... , xm oraz symbolem y przeznaczonym na wartość funkcji. W kolejnych wierszach tabeli prawdy piszemy aż do wyczerpania możliwe zestawy (wariacje) zero-jedynkowe zmiennych boolowskich - stąd liczba wierszy równa 2m. Dla ułatwienia kolejne wiersze numerujemy dziesiętnie od 0 do 15 (31). Liczbę kolumn tabeli prawdy można rozszerzyć, gdy w jednej tabeli chcemy przedstawić kilka funkcji tych samych zmiennych.
dla m zmiennych wejściowych jest 2m wierszy, które opisujemy liczbami dziesiętnymi od 0 do(2m-1)
2) Zapis numeryczny (uproszczony) funkcji boolowskiej to wyszczególnienie w postaci zbioru liczb dziesiętnych poprzedzonych znakiem
(bądź
- dualny sposób zapisu), a będących numerami tych wierszy tabeli prawdy, w których funkcja boolowska przyjmuje wartość 1 (bądź odpowiednio 0).
y=
(..., ..., ..., ...) x1, x2, x3
W zapisie ważne jest wskazanie starszeństwa bitów , co też uczyniono pisząc kolejno od najstarszego(od lewej) do najmłodszego x1, x2, x3 u dołu, aby uniknąć niejednoznaczności, bowiem co innego znaczyłaby kolejność
x3, x2, x1.
3) Dekompozycja Szannona (funkcja residualna, funkcja resztowa, podfunkcja boolowska )
Każdą funkcję boolowską można zapisać w postaci :
lub krócej:
, gdzie xi - dowolna zmienna.
SYSTEM FUNKCJONALNIE PEŁNY (SFP)
- podzbiór funkcji boolowskich (w szczególności jedna) za pomocą którego można wyrazić wszystkie teoretycznie możliwe funkcje boolowskie.
Z definicji binarnej algebry Boole'a wynika, że podstawowym SFP jest zespół funkcji "+", "-", "*", tak więc można zapisać, że :
SFP={suma logiczna, iloczyn logiczny, negacja}
Gdyby powyższe przeanalizować uważniej okazałoby się, że wystarczą dwie funkcje, i tak:
SFP={suma logiczna, negacja}
SFP={iloczyn logiczny, negacja}.
Wystarczy bowiem zastosować Prawa de Morgana (T6, T6'), które pozwalają wyrażać negację iloczynu jako sumę negacji, bądź negację sumy jako iloczyn negacji.
Powstaje jednak pytanie - jakie inne zespoły funkcji (funktorów), szczególnie dwuargumentowych tworzą SFP ? Odpowiedź pozornie wydaje się mieć aspekt czysto teoretyczny, ma jednak ogromne znaczenie praktyczne. Jeśli bowiem okazałoby się, że istnieje np. funkcja dwuargumentowa, za pomocą której można wyrazić dowolną funkcję wielu zmiennych, to wystarczyłoby produkować element realizujący technicznie funkcję tworzącą SFP, a wówczas każdy układ logiczny można by skonstruować jako odpowiednie "złożenie" tego typu elementów.
Spośród 16 funkcji boolowskich dwóch zmiennych na szczególną uwagę zasługują:
- funkcja Sheffera zwana kreską Sheffera
- funkcja Peirce'a zwana strzałką Pierce'a
Każda z tych funkcji z osobna tworzy SFP.
Technicznym odpowiednikiem kreski Sheffera jest produkowany element (bramka) typu NAND (Not - And czyli negacja iloczynu), natomiast odpowiednikiem strzałki Pierce'a jest element (bramka) NOR (Not - Or, czyli negacja sumy)
Oprócz tak ważnych funkcji dwóch zmiennych jak omawiane wyżej istotne znaczenie w praktyce, choć nie tworzą samodzielnie SFP, mają różnica symetryczna (suma modulo 2, alternatywa wyłączająca, EXOR, XOR), oznaczana symbolem
oraz równoważność oznaczana symbolem
, a zdefiniowane poniżej :
Zależności pomiędzy powyższymi funkcjami :
Z powyższych określeń wynikają także inne własności funkcji.
Zauważyć można, że suma modulo 2 pełnić może rolę detektora przeciwnych sygnałów.
Minimalizacja funkcji boolowskich Kanoniczna postać sumy -KPS- (iloczynu -KPI-) jest jedynie przejściową formą zapisu funkcji boolowskiej. Ze względów czysto technicznych wskazane jest otrzymanie takiej postaci formuły boolowskiej, aby zawierała możliwie jak najmniejszą liczbę składników sumy, o jak najmniejszej liczbie czynników tworzących dany składnik (KPS). Dla KPI postępujemy analogicznie - tzn. możliwie jak najmniejszą liczbę czynników iloczynu o jak najmniejszej liczbie składników, tworzących dany czynnik. 1. Metoda przekształceń formalnych algebraicznych:
gdzie zapis KPS bądź KPI poddaje się przekształceniom zgodnym z aksjomatami i twierdzeniami algebry Boole'a.
Grupowanie składników, wyłączanie przed nawias części wspólnych :
Na mocy aksjomatu 5 (patrz wykład nr2):
Z kolei na mocy dualnego aksjomatu 4' możemy zapisać:
Otrzymaliśmy zatem formułę dwuskładnikową o dwóch czynnikach każdy, podczas gdy pierwotna miała cztery składniki o trzech czynnikach każdy. Gdyby założyć, że mamy do dyspozycji w realizacji technicznej elementy wykonujące operację sumy, iloczynu i negacji, wówczas oczywiście realizacja techniczna formuły uproszczonej byłaby tańsza, jeśliby przyjąć, że cena układu zależy od liczby elementów, jak i liczby połączeń między nimi. 2. Algorytmiczna metoda siatek Karnaugha:
W algorytmicznej metodzie siatek Karnaugha stosuje się tzw. regułę sklejania :
Reguła sklejania pozwala dla dwóch iloczynowych członów różniących się negacją zmiennej x, wyrugować tę zmienną jako nieistotną. Sklejane człony można nazwać sąsiednimi. Zasadniczą trudnością w procesie sklejania jest wyszukanie sąsiednich członów, inaczej mówiąc - znalezienie jedynek(zer) sąsiednich, ponieważ dany składnik reprezentuje zawsze jakąś jedynkę(zero) funkcji. W metodzie siatek Karnaugha problem sąsiedztwa jest rozwiązywany przez odpowiednie narysowanie tabeli prawdy, zwanych tutaj siatkami Karnaugha. Są one skonstruowane tak, że różniącym się tylko o negację jednej zmiennej pełnym iloczynem(sumom) przyporządkowuje się leżące obok siebie pola siatki, w które wpisuje się wartości funkcji. Każdemu wierszowi zwykłej tabeli prawdy odpowiada tu jedna kratka w siatce Karnaugha. Efekt "sąsiedztwa" jest tu zapewniony dzięki odpowiedniemu opisaniu wierszy i kolumn siatki kodem Gray'a. Siatka Karnaugha dla 2 zmiennych:
Siatka Karnaugha dla 3 zmiennych:
Siatka Karnaugha dla 4 zmiennych:
Siatka Karnaugha dla 5 zmiennych:
Poszczególnym kratkom siatki można przypisać dziesiętne odpowiedniki binarnym słowom opisującym tę kratkę. Oczywiście istnieje pełna dowolność w podziale zmiennych na te, które opisują kolumny i te, które opisują wiersze. Pamiętać jednak trzeba, że wówczas zmieniają się liczby dziesiętne opisujące kratki, bowiem jest to konsekwencja zmiany kolejności bitów w słowie, np. z (x1 x2 x3 x4 x5) na (x5 x4 x3 x2 x1).
Grupie 2K jedynek (zer) funkcji, z których każda jest sąsiednia w stosunku do K innych jedynek (zer) tej grupy w siatce Karnaugha, można przyporządkować iloczyn (sumę), w którym(ej) wyrugowano K zmiennych. Wynika stąd praktyczny wniosek, że po wpisaniu do siatki Karnaugha jedynek (zer) funkcji, powinniśmy wyszukiwać w niej grupy jedynek (zer) o liczności 2, 4, 8, 16, 32, zaznaczając je obwiednią i dążąc do tego, aby to były grupy jak najbardziej liczne, ponieważ w ten sposób ruguje się większą liczbę zmiennych.
Wyszukując grupy sąsiednie w sensie reguły sklejania należy pamiętać o sąsiedztwie prawej i lewej krawędzi siatek oraz górnej i dolnej krawędzi. Z tego powodu godnym uwagi jest poniższy rysunek :
Ten sposób jest bardzo często pomijany przy tworzeniu grup jedynek (zer).
Grupy jedynek (zer) opisujemy iloczynem (sumą) tylko tych zmiennych, bądź ich negacji, których wartość nie ulega zmianie przy opisie kratek tworzących grupę, stosując przy tym regułę, że w iloczynie (sumie) występować powinna zmienna xi bez negacji, jeśli przy opisie kratek tworzących grupę przyjmuje ona wartość 1 (0), bądź z negacją, gdy przyjmuje wartość 0 (1).
ALGORYTM POSTĘPOWANIA : |
1. Wpisać jedynki funkcji boolowskich do siatki Karnaugha, utworzonej dla odpowiedniej liczby zmiennych. |
Funkcja boolowska nie w pełni określona - funkcja, która nie dla każdego zestawu argumentów posiada określoną wartość. Nie w każdym wierszu tabeli prawdy wpisano wartość 0, 1, czyli wpisano symbol obojętny {- , O , * }. Kratkom tym przypisujemy bądź wartość równą 1, gdy chcemy kratkę włączyć do tworzonej grupy, bądź 0, gdy nie chcemy jej włączać do grupy jedynek (dla KPI - odwrotnie). Decydując się na zaliczenie (bądź nie) kratki ze znakiem O do grupy mamy na uwadze to, by minimalizacja była jak najbardziej efektywna. Tak więc dowolność w traktowaniu symboli O sprzyja zawsze celom minimalizacji. |
Układy kombinacyjne
Układem kombinacyjnym (bez pamięci) nazywamy układ logiczny, w którym stan wyjść zależy tylko i wyłącznie od stanu wejść, co można przedstawić :
gdzie :
Ponieważ rzeczywiste układy fizyczne wnoszą opóźnienie, więc "odpowiedź" na wyjściach układu kombinacyjnego następuje po charakterystycznej dla danego wyjścia yj chwili
Układy kombinacyjne konstruuje się używając typowych elementów kombinacyjnych, zwanych bramkami (GATES). |
|
AND |
|
|
|
OR |
|
|
|
NAND |
|
|
|
NOR |
|
|
|
NOT |
|
|
|
EXOR |
|
|
Układ kombinacyjny realizuje określoną formułę boolowską, poprzez ściśle określoną kompozycję składowych elementów, tj. bramek łączonych z zasadą, że wyjście bramki można połączyć z wejściami innych bramek. Nie wolno łączyć ze sobą wyjść bramek, poza tym w tej klasie układów nie wolno przy łączeniu dopuszczać do powstawania pętli, tzn. od każdego wejścia musi prowadzić droga do wyjścia.
W układach kombinacyjnych do niektórych bramek dochodzą tylko sygnały z wejść układu, część bramek z kolei wytwarza sygnały przekazywane na wyjścia układu, a inna część bramek może pośredniczyć w połączeniach między wyżej wymienionymi grupami bramek. Uwagi te dotyczą układów bardziej złożonych o strukturze warstwowej.
SYNTEZA UKŁADÓW KOMBINACYJNYCH
1. "Symulacja układu kombinacyjnego na papierze"
Zaprojektować układ sterujący pracą grzejników G1 i G2. Sposób sterowania tymi grzejnikami jest uzależniony od temperatury(T) ustalanej za pomocą termometru kontaktowego według poniższych reguł :
2. Tworzenie tabeli prawdy:
3. Minimalizacja funkcji boolowskiej:
Ponieważ zmienne x1 i x3 zmieniają swoją wartość w opisie grupy, nie zostają zatem uwzględnione podczas minimalnego zapisu funkcji boolowskiej (y1).
Tym razem zostały stworzone dwie grupy. Zasada powstania pierwszego składnika sumy jest analogiczna jak w przypadku wyjścia y1. Druga część sumy pozbawiona została zmiennej x3 ze względu na zmianę swojej wartości (osiąga zarówno "0" jak i "1"), zaś zmienna x1 ulega negacji ponieważ grupa mieści się w kolumnie, gdzie przyjmuje ona wartość "0".
|
Synteza niekoniecznie musi zaczynać się od opisu słownego, a może w niektórych przypadkach zaczynać się od tabeli prawdy, a nawet w prostych przypadkach od formuły boolowskiej. Bywa i tak, że na podstwie opisu słownego można bezpośrednio napisać formułę boolowską, omijając tym samym etap tworzenia tabeli prawdy, np. polecenie "włącz silnik Y, gdy przycisk x1 jest włączony lub przycis x2 jest wyłączony i przycisk x3 jest włączony" jest równoważne formule : |
|
|