DODATEK: FUNKCJE LOGICZNE CD. 1 FUNKCJE LOGICZNE 1. Tablice Karnaugha Do reprezentacji funkcji boolowskiej n-zmiennych można wykorzystać tablicę prawdy o 2 n wierszach lub np. tablice Karnaugha. Tablica Karnaugha jest kwadratową lub prostokątną siatką zbudowaną z 2 n kratek (dla parzystej liczby argumentów tablica ma kształt kwadratu o wymiarach 2 0.5n 2 0.5n, dla nieparzystej prostokąta o wymiarach 2 0.5 (n 1) 2 0.5 (n+1) )) a) b a 0 1 0 1 b) 0 1 c) 00 01 11 10 Rys. 1. Tablice Karnaugha dla funkcji o: a) n=2, b) n=3 i c) n=4 zmiennych. Do opisania adresu (nr wiersza i kolumny) kratek wykorzystywany jest kod Graya. Adres kratki wyznacza jednoznacznie wartości argumentów funkcji - wartość funkcji (tzn. 0 lub 1) odpowiadającą tym argumentom jest wpisywana we wnętrzu kratki. Na poniższym rysunku w tablicy Karnaugha dla funkcji 3 zmiennych ponumerowane zostały wszystkie kratki i tak np.: wartość funkcji dla argumentów a = 0, b = 0, c = 0 należy wpisać w kratkę ; dla a = 0, b = 1, c = 0 w kratkę a dla a = 1, b = 1, c = 0 w kratkę. 0 1 Rys. 2. Tablice Karnaugha z ponumerowanymi kratkami. Każda kratka tablicy odpowiada jednej kombinacji zmiennych wejściowych (jednemu pełnemu iloczynowi kanoniczej postaci dysjunkcyjnej lub jednej pełnej sumie kanonicznej postaci koniunkcyjnej). Podobnie jak w przypadku tablic prawdy: iloczyn pełny odpowiadający wybranej kratce budowany jest w postaci iloczynu argumentów funkcji (argument jest negowany jeżeli odpowiada sygnałowi o wartości 0), suma pełna odpowiadająca wybranej kratce budowana jest w postaci sumy argumentów funkcji (argument jest negowany jeżeli odpowiada sygnałowi o wartości 1). Wybrane kratki tablicy z rys. 2. odpowiadają następującym iloczynom pełnym: kratka iloczynowi: a, kratka iloczynowi: a, kratka iloczynowi a. Sumy pełne odpowiadające tym kratkom są równe odpowiednio: : a b c, : a b c, : a b c
DODATEK: FUNKCJE LOGICZNE CD. 2 Z tablicy Karnaugha podobnie jak z tabeli prawdy można odczytać kanoniczną postać dysjunkcyjną (w postaci sumy iloczynów pełnych tych kratek tablicy dla których wartość funkcji wynosi 1) i kanoniczną postać koniunkcyjną (w postaci iloczynu sum pełnych tych kratek tablicy dla których wartość funkcji wynosi 0). Tablica Karnaugha, dzięki swej budowie, pozwala również na zapis funkcji w uproszczonych postaciach odpowiednio: normalnej postaci dysjunkcyjnej i normalnej postaci koniunkcyjnej. Normalna postać dysjunkcyjna jest sumą iloczynów dowolnej liczby argumentów funkcji z negacjami lub bez. Można powiedzieć, że postać ta powstaje z kanonicznej postaci dysjunkcyjnej w wyniku zastosowania praw sklejania dla wybranych iloczynów pełnych. Normalna postać koniunkcyjna jest iloczynem sum dowolnej liczby argumentów funkcji z negacjami lub bez. Podobnie jak poprzednio, można powiedzieć, że postać ta powstaje z kanonicznej postaci koniunkcyjnej w wyniku zastosowania praw sklejania dla wybranych sum pełnych. Sąsiednie kratki tablicy Karnaugha odpowiadają wyrażeniom sąsiednim logicznie. Dwa wyrażenia boolowskie określone dla tych samych argumentów z negacjami lub bez, są wyrażeniami sąsiednimi logicznie jeśli różnią się postacią jednego argumentu. Dla wyrażenia w postaci iloczynu dwóch sąsiednich logicznie sum czy w postaci sumy dwóch sąsiednich logicznie iloczynów można stosować prawa sklejania, tzn. prawa: a ba b a, a b a b a. Sklejanie pozwala więc na pozbycie się argumentu którym dwa wyrażenia składowe się różnią. Kratki i leżą obok siebie. Iloczyny pełne a i a odpowiadające tym kratkom są sąsiednie logicznie (różnią się jedynie postacią argumentu a). Wyrażenie w postaci sumy takich dwóch iloczynów a a można zapisać w postaci iloczynu. Wyrażenie można odczytać wprost z tablicy Karnaugha odczytując adresy komórek (a = 0, b = 1, c = 0) i (a = 1, b = 1, c = 0). Adresy te różnią się tylko wartością argumentu a więc w wyniku sklejenia obydwu komórek adres ten zniknie. Adres grupy komórek wyznaczają tylko argumenty b i c. Skoro b = 1, c = 0, więc odpowiedni iloczyn (konstruowany w ten sam sposób w jaki konstruowane były iloczyny pełne) odpowiadający tej grupie wyniesie:. Podobnie, sumy pełne odpowiadające kratkom : a b c i a b c są sąsiednie logicznie. Wyrażenie w postaci iloczynu takich dwóch sum można zapisać w postaci sumy b c. Wyrażenie b c można odczytać odczytując adresy komórek (a = 0, b = 1, c = 0) i (a = 1, b = 1, c = 0). Adresy te różnią się tylko wartością argumentu a więc w wyniku sklejenia obydwu komórek adres ten zniknie. Adres grupy komórek wyznaczają tylko argumenty b i c. Skoro b = 1, c = 0, więc odpowiednia suma (konstruowana w ten sam sposób w jaki konstruowane były sumy pełne) odpowiadający tej grupie wyniesie: b c.
DODATEK: FUNKCJE LOGICZNE CD. 3 Sklejać można również większe grupy sąsiadujących ze sobą kratek. Wyrażenie w postaci sumy iloczynów pełnych z kratek,,,, tzn.: a a a a, można stosując najpierw prawo sklejania dla pierwszego i drugiego składnika oraz dla trzeciego i czwartego składnika (wyrażenia różnią się tylko postacią argumentu c) zapisać prościej jako: a b a b Obydwa składniki powyższej sumy różnią się tylko postacią argumentu a więc po zastosowaniu prawa sklejania wyrażenie można zapisać jako: Wyrażenie b można odczytać wprost z tablicy Karnaugha odczytując adresy komórek : a = 0, b = 1, c = 1; : a = 0, b = 1, c = 0; : a = 1, b = 1, c = 1; : a = 1, b = 1, c = 0; b. Adresy te różnią się wartościami argumentów a i c więc w wyniku sklejania komórek zostaną wyeliminowane. Adres grupy komórek wyznacza tylko argument b. Skoro b = 1, więc odpowiedni iloczyn (właściwie w tej sytuacji trudno mówić o iloczynie) konstruowany w ten sam sposób w jaki konstruowane były iloczyny pełne, odpowiadający tej grupie wyniesie: b.. Podobnie, sumy pełne odpowiadające kratkom,,, są sąsiednie logicznie. Wyrażenie w postaci iloczynu takich sum można zapisać w postaci: Po zastosowaniu sklejania otrzymuje się kolejno: a b ca b ca b c a b c a ba b b Wyrażenie b można odczytać odczytując adresy komórek,,, (patrz powyżej). Adres grupy komórek wyznacza tylko argument b. Skoro b = 1, więc odpowiednia suma (właściwie w tej sytuacji trudno mówić o sumie) konstruowana w ten sam sposób w jaki konstruowane były sumy pełne, odpowiadająca tej grupie wyniesie: b. Y1 0 0 0 1 1 1 0 0 1 1 Kratki,,, sklejane byłyby w postaci sumy iloczynów, jeżeli tablica prawdy odpowiadałaby przedstawionej powyżej funkcji Y1. Zapis tej funkcji w postaci iloczynu sum wymagałby sklejenia kratek,, i. Sklejanie kratek,,, w postaci iloczynu sum odpowiada funkcji Y2 ( Y2 Y1 ). Stąd otrzymane w obydwu przypadkach wyrażenia, dla grupy komórek,,,, tzn. b i b są różne (jedno odpowiada funkcji Y1, drugie funkcji Y2 Y1 ). Y2 0 1 1 0 0 1 1 1 0 0
DODATEK: FUNKCJE LOGICZNE CD. 4 Zauważ, że sklejania nie można byłoby przeprowadzić gdyby wyrażenie odpowiadało sumie iloczynów z kratek,,. Po wykonaniu pierwszego sklejania wyrażenie można byłoby zapisać w postaci: a b a Powyższa postać nie pozwala już na zastosowanie prawa sklejania. Skleić można więc grupę dwóch sąsiadujących kratek po jej sklejeniu powstanie wyrażenie z którego zostanie wyeliminowany jeden z argumentów funkcji. Jeżeli obok tej grupy, znajdzie się grupa dwóch kratek, z której po sklejeniu powstanie wyrażenie, z którego zostanie wyeliminowany ten sam argument funkcji to sklejone grupy będzie można skleić jeszcze raz. Skleić można więc grupę zbudowaną z dwóch kratek, zbudowaną z czterech kratek (dwie sąsiadujące grupy dwukratkowe), zbudowaną z ośmiu kratek (dwie sąsiadujące grupy czterokratkowe),... Ogólnie, grupa sklejanych kratek musi się składać z 2 k kratek (k=1, 2,...). Na poniższych rysunkach przedstawione zostały przykładowe grupy kratek, które można skleić. a) b) c) 0 0 1 1 d) e) 0 1 Rys. 3. Tablice Karnaugha funkcji 3 zmiennych z przykładowymi grupami sklejanych kratek, grupy te w zależności od tego czy sklejane są iloczyny czy sumy, odpowiadają wyrażeniom: a) lub a b, b) lub b c, c) c lu, d) a lub a, e) lub a c a b Na rys. 3.e) sklejone zostały kratki i - odpowiadają one sąsiednim logicznie wyrażeniom: lub: a a a c, a b ca b c a c więc faktycznie mogą zostać sklejone tak jak to zostało pokazane na rysunku. Dla tablicy Karnaugha funkcji 3 zmiennych należy wyobrazić sobie, że sklejone są lewy i prawy brzeg tablicy wtedy widać, że kratki i leża obok siebie. Dla tablicy Karnaugha funkcji 4 zmiennych należy wyobrazić sobie dodatkowo, że sklejone są górny i dolny brzeg tablicy. Na następnej stronie pokazane zostały grupy kratek podlegające sklejaniu dla funkcji 4 zmiennych. 0 1 0 1 a c
DODATEK: FUNKCJE LOGICZNE CD. 5 a) b) c) g) 00 01 11 10 grupy w zależności od tego czy sklejano iloczyny czy sumy, odpowiadają wyrażeniom: a) lub, b) lub, c) lub, d) b lub b, e) lub, f) lub, g) 00 01 11 10 d) e) f) 00 00 01 01 11 11 10 10 00 01 11 10 a b d a b c b d lub b d c d b d 00 01 11 10 00 01 11 10 c d b c b c Rys. 4. Tablice Karnaugha funkcji 4 zmiennych z przykładowymi grupami sklejanych kratek. 2. Minimalizacja funkcji logicznych z wykorzystaniem tablic Karnaugha Omawiana w tym punkcie metoda prowadzi do wyznaczenia minimalnej normalnej postaci dysjunkcyjnej lub minimalnej normalnej postaci koniunkcyjnej. Minimalne postacie dysjunkcyjna i koniunkcyjna są wyrażeniami w postaci sumy iloczynów i iloczynu sum. Wyrażenia te zawierają możliwie najmniejszą liczbę składowych (tzn. minimalną liczbę iloczynów czy sum), przy czym dodatkowo, wyrażenia składowe zawierają najmniejszą możliwą liczbę argumentów. Metoda Karnaugha polega na: wyszukiwaniu i zaznaczeniu wśród niezaznaczonych jeszcze kratek tablicy samodzielnych grup jedynek (zer) obejmujących 2 k kratek (k =, 3, 2, 1, 0) jeżeli po wyodrębnieniu wszystkich samodzielnych grup pozostają jeszcze niezaznaczone jedynki (zera) to należy je połączyć z kratkami zaznaczonymi tak aby zaznaczona w ten sposób grupa reprezentowała iloczyn (sumę) o najmniejszej liczbie argumentów. Dodatkowo grupy jedynek (zer) należy wyodrębniać w taki sposób aby każda para sąsiednich kratek tablicy znajdowała się w tej samej wspólnej grupie takie podejście pozwala na eliminację niekorzystnego zjawiska jakim jest hazard. Jeżeli minimalizowana funkcja jest funkcją niezupełną to podczas sklejania stany nieokreślone (oznaczane w tablicy zwykle symbolami: lub ) można traktować jako 1 lub 0 tak by uzyskiwane grupy były jak największe. Dla określonej funkcji wybrany stan nieokreślony musi być jednak traktowany w ten sam sposób.
DODATEK: FUNKCJE LOGICZNE CD. 6 Przykład W poprzednim dodatku przedstawiony został przykład urządzenia sterującego dwiema zwrotnicami Z1 i Z2. Urządzenie kierowało detale do jednego z trzech pojemników biorąc pod uwagę wartości trzech cech (a, b, c) sortowanych detali. Poniżej przypomniana została tabela prawdy urządzenia i zbudowane na jej podstawie tablice Karnaugha dla funkcji Z1 i Z2. a Z1 Z2 0 0 0 1-0 0 1 1-0 1 0 1-0 1 1 0 0 1 0 0 1-1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 Z1 0 1 1 0 1 1 1 0 0 0 Z2 0 - - 0-1 - 0 1 0 Minimalną normalną postać dysjunkcyjną można otrzymać sklejając grupy przedstawione na poniższym rysunku. Z1 0 1 1 0 1 1 1 0 0 0 Funkcje Z1 i Z2 można na tej podstawie zapisać w postaci: Z a b a c, Z a, 1 (funkcja Z1 została skonstruowana kolejno z grup: czerwonej, zielonej i niebieskiej). 2 Z2 0 - - 0-1 - 0 1 0 Minimalną normalną postać koniunkcyjną, wykorzystując sposób sklejania przedstawiony na poniższym rysunku Z1 0 1 1 0 1 1 1 0 0 0 Z2 0 - - 0-1 - 0 1 0 można natomiast zapisać jako: a cb ca b Z, Z a, 1 2 (funkcje Z1 i Z2 zostały skonstruowana kolejno z grup: czerwonej, zielonej i niebieskiej).
DODATEK: FUNKCJE LOGICZNE CD. 7 3. Eliminacja hazardu Hazard zjawisko polegające na tym, że poprawnie logicznie zaprojektowany układ może w pewnych warunkach na skutek niedokładności swoich elementów składowych działać nieprawidłowo. Nieprawidłowa praca układów kombinacyjnych polega na krótkotrwałym pojawieniu się na wyjściu układu błędnego sygnału. Źródła hazardu w układach stykowych zakłada się np. że zmiana stanu przekaźnika powoduje równoczesne przełączenie zestyków zwiernego i rozwiernego w praktyce przełączenie może nie być równoczesne, w układach bezstykowych sygnały wejściowe są przetwarzane równolegle, czas przejścia sygnału dla każdej ze ścieżek może być różny (czasy działania elementów przełączających oraz ich ilość mogą być różne) stąd sygnał na wyjściu nie zawsze musi odpowiadać aktualnym sygnałom wejściowym. Eliminacja hazardu Eliminacja hazardu polega na dołączaniu do układu dodatkowych elementów uniemożliwiających powstanie hazardu są to tzw. grupy antyhazardowe. W tablicy Karnaugha układu w którym występuje hazard znajdują się grupy, które nie są połączone z innymi grupami. Grupy jedynek (zer) należy wyodrębniać w taki sposób aby każda para sąsiednich kratek tablicy znajdowała się w tej samej wspólnej grupie. Przykład Załóżmy, że urządzenie sterujące powinno pracować zgodnie z przedstawioną poniżej tablicą Karnaugha: Z 0 0 0 0 1 1 0 1 1 1 Minimalną normalną postać dysjunkcyjną można otrzymać sklejając grupy przedstawione na poniższym rysunku: Z 0 0 0 0 1 1 0 1 1 1 czyli: Z a c.
DODATEK: FUNKCJE LOGICZNE CD. 8 Grupy czerwona i zielona sąsiadują ze sobą a nie są ze sobą połączone, w układzie występuje więc hazard. Efekty tego hazardu (w postaci krótkotrwałego błędnego sygnału na wyjściu) można zobaczyć analizując przepływ sygnałów na schemacie urządzenia. a 1 dla a=1, b=1 i c=1, na wyjściach bloków pojawią się sygnały: górny blok logiczne I : 1 dolny blok logiczne I : 0 blok >=1 logiczne LUB : 1 Blok realizuje logiczną negację dla a=1, b=1 i c=0, na wyjściach bramek pojawią się sygnały: górny blok logiczne I : 0 dolny blok logiczne I : 1 blok >=1 logiczne LUB : 1 Zgodnie z przedstawioną powyżej tablicą Karnaugha układ działa prawidłowo: w obydwu przypadkach na wyjściu układu pojawia się sygnał "1". Układ zbudowany jest z dwóch równoległych ścieżek przetwarzających sygnały a, b i c. Górna ścieżka z pomocą bloku logiczne I wyznacza wartość koniunkcji sygnałów a i c, dolna ścieżka przy pomocy bloku negacji logicznej i bloku logiczne I wyznacza wartość koniunkcji b i c. Czas przejścia sygnału przez dolną ścieżkę ze względu na dodatkowy blok negacji jest dłuższy. Rozważmy co się stanie jeżeli bezpośrednio po sygnałach a=1, b=1 i c=1 na wejściu układu pojawią się sygnały a=1, b=1 i c=0. Po zmianie wartości sygnałów wejściowych na wyjściu górnego bloku logiczne I pojawi się sygnał 0, ale ze względu na to że czas przejścia sygnału w dolnej ścieżce jest dłuższy - na wyjściu dolnego bloku logiczne I będzie jeszcze poprzednia wartość sygnału tzn.: 0. Na wyjściu układu pojawi się więc sygnał 0 zamiast prawidłowego 1. Taki stan nie utrzyma się długo, ponieważ na wyjściu dolnego bloku logiczne I pojawi się właściwy sygnał tzn. 1 i na wyjściu układu pojawi się prawidłowy sygnał 1. Rozważane sygnały a=1, b=1 i c=1 oraz a=1, b=1 i c=0 nie zostały wybrane przypadkowo. W tablicy Karnaugha odpowiadające im kratki sąsiadują ze sobą a zostały przypisane do dwóch różnych grup. Zjawisko hazardu ma miejsce jeżeli sąsiadujące w tablicy Karnaugha jedynki (lub zera) należą do różnych grup. Eliminacja hazardu polega na tworzeniu dodatkowych grup tak aby każda para sąsiadujących jedynek (lub zer) należała do wspólnej grupy. W rozważanym układzie trzeba utworzyć dodatkową grupę (na poniższym rysunku została zaznaczona kolorem niebieskim). Z 0 0 0 0 1 1 0 1 1 1
DODATEK: FUNKCJE LOGICZNE CD. 9 Po wprowadzeniu nowej grupy funkcję można zapisać w minimalnej bezhazardowej postaci: Z a c ab. a 1 Jeżeli bezpośrednio po sygnałach a=1, b=1 i c=1 na wejściu układu pojawią się sygnały a=1, b=1 i c=0 to nowy blok logiczne I (na której wyjściu dla obydwu zestawu sygnałów pojawia się sygnał 1) zapobiegnie pojawieniu się krótkotrwałego, błędnego sygnału 0.