Minimalizacja funkcji boolowskich Zagadnienie intensywnych prac badawczych od początku lat pięćdziesiątych 20 wieku. Ogromny wzrost zainteresowania minimalizacją f.b. powstał ponownie w latach 80. Przyczyna: możliwość realizacji układów logicznych w strukturach scalonych o złożoności milionów bramek logicznych.
Minimalizacja funkcji boolowskich W ciągu kilkudziesięciu lat powstało wiele metod… Graficzne Analityczne Komputerowe Absolutnie nieprzydatne do obliczeń komputerowych Tablice Karnaugha Metoda Quine’a – McCluskey’a Omówienie całego Espresso jest nierealne! Pierwsze skuteczne narzędzie do minimalizacji wieloargumentowych i wielowyjściowych funkcji boolowskich (Uniwersytet Kalifornijski w Berkeley) : Metoda i system Espresso (1984) Ze względu na ograniczony zakres wykładu omówimy wyłącznie: Metodę tablic Karnaugha Metodę Ekspansji (jako przykładową procedurę Espresso)
Metoda tablic Karnaugha Mimo swoich niedoskonałości metoda K. jest często wykładaną metodą minimalizacji funkcji boolowskich. Paradoksalnie to co jest jej wadą – prostota – jest jednocześnie jej zaletą, gdyż można szybko ją „opanować” i stosować w obliczeniach ręcznych… Należy jednak pamiętać, że w praktyce projektowania inżynierskiego metoda tablic K. jest absolutnie nieprzydatna.
Tablice Karnaugha Tablica K. jest prostokątem złożonym z 2n kratek, z których każda reprezentuje jeden pełny iloczyn (minterm) zmiennych binarnych. W kratki wpisuje się wartości funkcji. x3 x1x2 1 00 01 11 10 W tablicy K. różniącym się tylko o negację pełnym iloczynom przyporządkowane są leżące obok siebie pola tablicy (sąsiednie kratki). Korzysta się z faktu, że dla dowolnego A: - 1 Dla uzyskania efektu sąsiedztwa współrzędne pól opisuje się kodem Gray’a
Kod Gray’a 1 00 01 11 10 000 001 011 010 110 111 101 100 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
Przykładzik wprowadzający do metody 1) Wpisanie funkcji do tablicy x1 x2 x3 f 1 2 3 4 5 6 7 2) Zakreślanie pętelek Z pętelkami kojarzymy iloczyn zmiennych (prostych lub zanegowanych) x3 x1x2 1 00 01 11 10 1 1 1 f = x1x2 + x3
Wpisywanie funkcji ułatwia… …opis kratek tablic Karnaugha wg NKB x3 x1x2 1 00 01 2 3 11 6 7 10 4 5 x2x3 x1 00 01 11 10 1 3 2 4 5 7 6 x1 x2 x3 f 1 2 3 4 5 6 7 x3 x1x2 1 00 01 11 10 x3x4 x1x2 00 01 11 10 1 3 2 4 5 7 6 12 13 15 14 8 9 1 1 1
Zakreślanie pętelek i tworzenie iloczynów x3 x1x2 1 00 01 11 10 x1 x3 x2 1 = 3 2 x f 1 x1 x3 x2 1 x1 x2 x3 x3 1 x1 x2
Algorytm minimalizacji 1) Zapisujemy funkcję do tablicy K. 2) Zakreślamy pętelki. a) Pętelki zakreślamy wokół grup sąsiadujących kratek zawierających 1-ki albo 1-ki i „–” (kreski). b) Liczba kratek objętych pętelka musi wynosić: 1, 2, 4, …,2k. c) Staramy się objąć pętelką jak największą liczbę kratek. 3) Pętelki zakreślamy tak długo, aż każda 1-ka będzie objęta co najmniej jedną pętelką, pamiętając o tym aby pokryć wszystkie 1-ki możliwie minimalną liczbą pętelek. 4) Z każdą pętelką kojarzymy iloczyn zmiennych prostych lub zanegowanych. Suma tych iloczynów, to minimalne wyrażenie boolowskie danej funkcji.
Przykłady prawidłowych pętelek… x2x3 x1 00 01 11 10 1 x3 x1x2 1 00 01 11 10 x4x5 x1x2x3 00 01 11 10 000 001 011 010 110 111 101 100 x3x4 x1x2 00 01 11 10
Przykład - minimalizacja dla KPS Suma iloczynów x3x4 x1x2 00 01 11 10 1 3 2 4 5 7 6 12 13 15 14 8 9 f = 0, 5, 6, 7, 10, (2, 3, 11, 12) x3x4 x1x2 00 01 11 10 1 –
Przykład - minimalizacja dla KPI Różnice wynikają ze sposobu interpretacji zmiennej w… Wszystkie czynności są takie same Kanonicznej Postaci Sumy: Kanonicznej Postaci Iloczynu:
Ten sam przykład dla „iloczynu sum” f = 0, 5, 6, 7, 10, (2, 3, 11, 12) x3x4 x1x2 00 01 11 10 1 –
Implikant funkcji boolowskiej Celem minimalizacji jest reprezentacja funkcji w postaci sumy iloczynów …dlatego taki najkrótszy iloczyn nazywa się implikantem vivjvk + vpvqvrvs +… (v oznacza afirmację albo negację zmiennej x) z najmniejszą liczbą składników oraz najmniejszą łączną liczbą literałów, co zapewnia realizację… z najmniejszą liczbą bramek AND 14 i najmniejszą liczbą wejść do tych bramek
Implikant funkcji boolowskiej Implikant danej funkcji f jest to iloczyn literałów (zmiennych prostych i zanegowanych) taki, że odpowiadający mu zbiór wektorów binarnych nie zawiera wektora „zerowego” funkcji. Prosty implikant jest to implikant, który zmniejszony o dowolny literał przestaje być implikantem. Prosty implikant
Przykład z planszy 11 jest implikantem, bo zbiór wektorów: x3x4 x1x2 00 01 11 10 1 3 2 4 5 7 6 12 13 15 14 8 9 f = 0, 5, 6, 7, 10, (2, 3, 11, 12) jest implikantem, bo zbiór wektorów: 10 1010 11 1011 x3x4 x1x2 00 01 11 10 1 – nie zawiera żadnego wektora (mintermu), dla którego wartość funkcji jest 0 Ale nie jest to implikant prosty, gdyż można usunąć x1 uzyskując:
Implikant funkcji boolowskiej - interpretacja W interpretacji tablic Karnaugha implikant odpowiada prawidłowo zakreślonej grupie jedynek (i kresek). Natomiast implikant prosty odpowiada grupie jedynek (i kresek), której nie można powiększyć. Implikant x3x4 x1x2 00 01 11 10 1 – To nie jest Implikant! Prosty implikant
Realizacje bramkowe Realizacja AND-OR (wg sumy iloczynów) Realizacja OR-AND (wg iloczynu sum)
Realizacja AND-OR Sum-of-products (SOP) x3 x1x2 1 00 01 11 10
Realizacja OR-AND Product-of-sums (POS) x3 x1x2 1 00 01 11 10 20
Inne operatory (bramki) logiczne NAND NOR EX-OR NAND (NOT-AND) NOR (NOT-OR) EXOR (Exclusive OR)
Realizacja NAND x3 x1x2 1 00 01 11 10
Realizacja NOR x3 x1x2 1 00 01 11 10
Minimalizacja funkcji wielowyjściowych Przykład sygnalizujący problem: Należy zaprojektować zespół trzech funkcji czterech argumentów: f1 = (3,7,11,14,15) f2 = (3,7,12,13,14,15) f3 = (3,7,11,12,13,15)
Przykład sygnalizujący problem… Jeśli każdą funkcję zminimalizujemy oddzielnie: cd cd cd 00 01 11 10 ab 00 01 11 10 ab ab 00 01 11 10 00 01 11 10 00 01 11 10 00 01 11 10 f1 = abc + cd
… to uzyskamy… a b c f1 Do realizacji tych trzech funkcji potrzebujemy 9 bramek. Czy można zredukować ich liczbę? Patrz następna plansza . c d a b f2 c d a b f3 c d
…usuwamy niektóre bramki c f1 Bramka AND dla f1 może być usunięta przez wykorzystanie bramki AND z f3. c d a b f2 c d a b Teraz potrzebujemy 8 bramek. …….cdn. f3 c d
…co dalej a b c f1 Bramkę AND z f2 można usunąć przez wykorzystanie faktu c d a b f2 c d Teraz potrzebujemy zaledwie 7 bramek. a b f3 c d
Komentarz Przykład sugeruje, że w realizacji zespołu funkcji stosowanie minimalnej sumy implikantów prostych nie zawsze prowadzi do rozwiązania z minimalnym kosztem.
Przykład 3.5 z książki SUL 7 bramek AND cd ab 00 01 11 10 1 3 2 4 5 7 6 12 13 15 14 8 9 1 10 11 01 00 cd ab 1 10 11 01 00 cd ab 1 10 11 01 00 cd ab 7 bramek AND
Przykład 3.5 z książki SUL 5 bramek AND cd ab 00 01 11 10 1 cd ab 00 01 11 10 1 cd ab 00 01 11 10 1 1 2 3 4 5 bramek AND 1 2 5 … a poprzednio było 7 bramek AND!!! 4 3 5