W jakim celu to robimy? W projektowaniu układów cyfrowych istotne jest aby budować je jak najmniejszym kosztem. To znaczy wykorzystanie dwóch bramek jest tańsze niż konieczność wykorzystania trzech dla układu spełniającego identyczne funkcje. Układy cyfrowe opisuje się funkcjami boolowskimi. Minimalizacje takiej funkcji boolowskiej skutkuje uproszczeniem układu, który implementuje taką funkcję z a tym wiąże się obniżenie kosztów. Do minimalizacji używa się tablic Karnaugh. Ręcznie daje się minimalizować tablicę dla kilku (zwykle do 4) zmiennych. Dla większej ilości trzeba wspomagać się odpowiednim oprogramowaniem. Tablica Karnaugh Jak taka tablica wygląda? Dla dwóch zmiennych: 0 1 x i y to zmienne wejściowe (mogą przyjmować wartość 0 lub 1 ). Wartości zmiennych wpisywane są zgodnie z kodem Graya. Niewypełnione miejsca przeznaczone są na wartości funkcji. W przecięciu wiersza i kolumny odpowiadającym wartościom odpowiednich zmiennych wstawia się wartość funkcji. Na przykład w górnej lewej komórce umieszcza się wartość funkcji dla x=0 i y=0. Spróbujmy wypełnić taką tablicę danymi z Zad. 1a. =( x, y)= x y+ x y+x y Co oznacza taki zapis? Podane są warunki, dla których funkcja przyjmuje wartość 1. Czyli dla (x=0 i y= 1) lub (x=1 i y=0 ) lub (x=1 i y=1). W pozostałych przypadkach funkcja przyjmuje wartość 0. Minimalizacja Gdybyśmy chcieli zrealizować taką funkcję bez minimalizacji potrzebowalibyśmy trzy bramki AND i jedną bramkę OR. Bramki AND realizowałyby mnożenie odpowiednich zmiennych a bramka OR sumowałaby wyniki mnożeń oraz dwa inwertery dla uzyskania zanegowanego sygnału. Zad. 1a jest na tyle proste, że można pokusić się o próbę minimalizacji bez tablicy Karnaugh przez
przekształcenie. =( x, y)= x y+ x y+x y =( x, y)= x y+ x y+x y+x y =( x, y)= y( x+x)+ x( y+ y) =( x, y)= y+ x Skorzystaliśmy z własności A= A+ A oraz A + A=1 Funkcja uprościła nam się znacząco. W tej chwili do jej realizacji wystarczy jedna bramka OR. Redukcja kosztów o 75% nie licząc inwerterów. Jak to robić przy użyciu tablicy Karnaugh? Podobnie jak w przekształcaniu zapisu funkcji, musimy znajdować fragmenty tablicy z których możemy wyeliminować jedną lub więcej zmiennych. W tym celu na tablicy rysujemy pętle otaczające leżące obok siebie jedynki. Pętle mogą otaczać 2 n elementów, muszą też być symetryczne względem głównej lub dodatkowej osi symetrii. Wszystkie jedynki muszą być otoczone jakąś pętlą. Pamiętać należy też, że tablica jest sklejona (tzn. lewa strona z prawą i górna krawędź z dolną). Im większą grupę zaznaczymy i im mniej ich będzie tym zminimalizowana funkcja będzie prostsza a układ tańszy. Poszukajmy pętli w naszej tablicy. Pierwsza pętla mówi nam, że wartością funkcji będzie jedynką dla y=1 bez względu na wartość x. Podobnie druga pętla mówi nam, że dla x=1 wartością funkcji będzie jeden bez względu na y. Te dwie pętla otaczają wszystkie jedynki występujące w tablicy, czyli kolejnych grup nie szukamy. Zminimalizowana funkcja będzie miała postać: =( x, y)= y+ x Zad 1b. Tym razem funkcja podana jest w innej postaci. Wymienione są liczby dla których funkcja przyjmuje wartość jeden.
xyz 0 000 0 1 001 0 2 010 1 3 011 1 4 100 1 5 101 1 6 110 0 7 110 0 f Na podstawie takiej tablicy wartości funkcji możemy zbudować tablicę Karnaugh. Przypominam, że wartości zmiennych w kolejności kodu Graya. 0 1 0 0 I pętle: 0 1 0 0 Pętla niebieska mówi nam, że funkcja przyjmuje wartość jeden dla x=0 i y= 1 przy dowolnym z. Pomarańczowa z kolei dla x=1 i y=0 przy dowolnym z. Okazuje się, że funkcja w ogóle nie jest zależna od zmiennej z. Zminimalizowana funkcja ma postać: f 2 =(x, y,z)= x y+ x y Do realizacji takiej funkcji potrzebujemy dwie bramki AND i jedną bramkę OR. Zad. 1c. Wiemy już o co chodzi więc zaczynamy od tablicy Karnaugh. 0 0 1 1 0 1 1 Co zrobić z samotną jedynką dla wartości zmiennych 100? Przypominam, że tablica jest sklejona. Możemy ją połączyć z jedynką dla wartości zmiennych 110.
0 0 1 1 0 1 1 f 3 =( x, y, z)= y z+x y+ x z Zad. 1d. Od razu tablica Karnaugh. 0 1 0 1 Tym razem udało nam się znaleźć 4 jedynki (pomarańczowa pętla wykorzystująca sklejenie lewej krawędzi z prawą) f 4 =(x, y,z)= z+x y Zad 1e. Tym razem mamy cztery zmienne. Od razu tablica Karnaugh. w 00 1 1 0 1 0 0 1 1 0 0 10 1 1 0 1 Tym razem udało nam się znaleźć zacną grupę składającą się z ośmiu jedynek oraz grupę jedynek w narożnikach (pamiętamy, że tabela jest sklejona krawędziami) f 5 =(w, x, y, z)= y+ w z+ x z Zad. 1f. Znów cztery zmienne i zapis taki jak w zad 1a. Warto zwrócić uwagę, że funkcja jest już częściowo zminimalizowana (w funkcji znajdują się wyrażenia bez jednej zmiennej). Prawdopodobnie da się lepiej zminimalizować.
ab\cd 00 01 11 10 00 1 1 0 1 01 0 11 0 0 0 0 10 1 1 0 1 f 6 =(a,b,c,d )= b c+ b d+ a c d Oprogramowanie na licencji GPL służące do projektowania układów cyfrowych. Można między innymi sprawdzić sobie jak dana funkcja się minimalizuje. Strona domowa: http://www.cburch.com/logisim/index.html Do pobrania z sf.net: http://sourceforge.net/projects/circuit/