TC Moduł 4: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Daniel-PW (dyskusja | edycje)
Nie podano opisu zmian
Daniel-PW (dyskusja | edycje)
Nie podano opisu zmian
Linia 161: Linia 161:
{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd17.png]]
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd17.png]]
|valign="top"|
|valign="top"|Tablicę implikantów prostych konstruujemy w następujący sposób. Jeśli implikant <math>I_j\,</math> pokrywa kostkę <math>k_i\,</math> , to na przecięciu wiersza wiersza <math>k_i\,</math> z kolumną <math>I_j\,</math> piszemy 1, w przeciwnym przypadku piszemy 0.
 
Tablica implikantów prostych umożliwia wybór (selekcję) takiego minimalnego zbioru implikantów, który pokrywa wszystkie kostki funkcji pierwotnej
 
|}
|}


Linia 168: Linia 171:
{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd18.png]]
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd18.png]]
|valign="top"|
|valign="top"|Minimalny zbiór implikantów prostych reprezentujących funkcję  <math>f\,</math>  można wyznaczyć obliczając minimalne pokrycie kolumnowe tablicy implikantów prostych. W tym celu zapisujemy wiersze tablicy w postaci zbiorów kolumn wskazywanych przez pozycje jedynek w danym wierszu, a następnie zauważając, że implikant <math>I_3\,</math> tworzy zbiór jednoelementowy wykreślamy wiersze z tym implikantem. Po takiej redukcji wierszy spostrzegamy, że  I2 jest wspólny dla obu wierszy. Zatem minimalne pokrycie tworzą implikanty  <math>I_2\,</math> , <math>I_3\,</math>. Czyli <math>f=\overline{x}_4\overline{x}_7+x_2\overline{x}_6</math> .
 
|}
|}


Linia 175: Linia 179:
{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd19.png]]
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd19.png]]
|valign="top"|
|valign="top"|Analogiczny wynik obliczy program PANDOR.
 
Pandor jest akademickim narzędziem minimalizacji funkcji boolowskich zmodyfikowaną metodą ekspansji z zastosowaniem dodatkowej procedury redukcji argumentów. Pandor został opracowany w ramach pracy dyplomowej Mirosława Cagary w Ośrodku Kształcenia na Odległość OKNO Politechniki Warszawskiej. Program Pandor jest dostępny na stronie internetowej www.zpt.tele.pw.edu.pl, a także na stronie internetowej jego autora www.domicil.pl.
 
|}
|}


Linia 182: Linia 189:
{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd20.png]][[Grafika:TC_M4_Slajd21.png]]
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd20.png]][[Grafika:TC_M4_Slajd21.png]]
|valign="top"|
|valign="top"|Również program ESPRESSO obliczy taki sam wynik. Zapis funkcji EXTL w standardzie Espresso podano na planszach 20 i 21. Więcej informacji na temat standardu Espresso można znaleźć w książce ''Synteza układów logicznych''.
 
Taki sam wynik minimalizacji funkcji EXTL w programie PANDOR (wyposażonym tylko w jedną procedurę ekspansji) oraz w programie ESPRESSO (zbudowanym z wielu procedur) nasuwa wątpliwości. Dlaczego program PANDOR za pomocą jednej procedury minimalizuje tak samo dobrze jak ESPRESSO zbudowane z wielu procedur.
 
|}
|}


Linia 190: Linia 200:
{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd22.png]]
|valign="top" width="450px"|[[Grafika:TC_M4_Slajd22.png]]
|valign="top"|
|valign="top"|Barierą ograniczającą obliczenia systematyczną metodą  zastosowaną w Pandorze jest ogromna złożoność obliczeniowa zarówno w procesie generacji, jak też w procesie obliczania pokrycia kolumnowego.
 
Program PANDOR został stworzony po to, aby naocznie zaobserwować zjawisko wzrostu złożoności obliczeniowej wraz ze wzrostem liczby argumentów funkcji.
 
Funkcja EXTL ma 7 implikantów (Pandor dokonuje lepszej selekcji i oblicza ich zaledwie 5). W tym przypadku obliczenie minimalnego pokrycia kolumnowego jest zadaniem łatwym. Ale już dla bardziej skomplikowanych funkcji takich jak TL27 i KAZ, których tablice w standardzie Espresso są podane na planszy, sytuacja jest całkiem inna – właśnie ze względu na dużą liczbę implikantów. Czas obliczeń programem PANDOR jest drastycznie większy od czasu obliczeń programem Espresso. Oczywiście Espresso nie zawsze poda wynik minimalny. W celu uzyskania minimalnych rozwiązań w rozsądnym czasie obliczeń w programie PANDOR zastosowano procedurę redukcji argumentów. Jej wpływ na proces minimalizacji omówimy w następnym wykładzie.
|}
|}


<hr width="100%">
<hr width="100%">

Wersja z 23:20, 28 sie 2006

Minimalizacja funkcji boolowskich metodą ekspansji.

Kolejną klasyczną metodą minimalizacji funkcji boolowskich jest metoda Quine’a-McCluskey’a . Jest ona wykonywana w dwóch etapach:

a) generacji implikantów prostych,

b) selekcji minimalnego zbioru implikantów wiernie reprezentującego funkcję f.

Mimo dużej złożoności obliczeniowej każdego z wyżej wymienionych etapów, metoda Quine’a-McCluskey’a jest najczęściej nauczaną metodą minimalizacji, głównie ze względu na podstawowy charakter jej procedur. Niestety – podobnie jak w przypadku tablic Karnaugha – jest to metoda absolutnie nieprzydatna do algorytmicznych obliczeń komputerowych. Dla potrzeb komputerowych systemów projektowania układów cyfrowych opracowano wiele nowych metod minimalizacji funkcji boolowskich. Najbardziej znaną i uznawaną za najskuteczniejszą jest metoda ESPRESSO opracowana w latach 80. na Uniwersytecie Kalifornijskim w Berkeley.


Metoda Espresso polega na iteracyjnym stosowaniu różnych procedur, z których najważniejsze to Ekspansja (Expand), Pokrycie nienadmiarowe (Irredundant Cover) i Uzupełnienie (Complement). Są to bardzo złożone procedury, których omówienie przekracza zakres niniejszego wykładu. Ich pełny opis można znaleźć w książce Brayton R., Hachtel G.D., McMullen C., and Sangiovanni-Vincentelli A.: Logic Minimization Algorithms for VLSI Synthesis. Kluwer Academic Publishers, Boston, 1984 lub w podręczniku Synteza układów logicznych.

Najprostszą i najogól¬niejszą procedurą metody ESPRESSO jest procedura Ekspansji. Sama procedura ekspansji wykorzystuje znaną od dawna metodę powiększania mintermu kϵF w taki sposób, aby powiększona kostka nie zawierała żadnego mintermu należącego do zbioru wektorów zerowych funkcji. Ponieważ właściwie powiększony minterm zbioru F może być implikantem funkcji, odpowiednio zmodyfikowana metoda ekspansji może być stosowana autonomicznie jako niezależna metoda minimalizacji funkcji boolowskich. Metoda ta została zrealizowana w programie PANDOR. Program ten jest udostępniony na stronie internetowej www.zpt.tele.pw.edu.pl w katalogu OPROGRAMOWANIE.

Pojęciem podstawowym w metodzie ekspansji jest – podobnie jak w innych metodach minimalizacji – pojęcie kostki. Kostkami nazywać będziemy ciągi elementów ze zbioru {0,1,*} . Kostki będziemy oznaczać nieindeksowanymi literami, na przykład k , a ich składowe będziemy indeksowali, na przykład ki . Również, w celu uproszczenia oznaczeń kostki (i wektory) będziemy zapisywać bez przecinków. Na przykład (*,1,*,0,1) zapiszemy jako (*1*01).

Kostka to uproszczony zapis zbioru wektorów binarnych. Kostka K=(0*1*) reprezentuje zbiór wektorów:

0010001101100111

Kostka reprezentuje również niepełny iloczyn zmiennych binarnych: Na przykład kostkę K=0*1* można zapisać jako x1x3


W metodzie ekspansji podobnie jak w standardzie Espresso zbiór wektorów (w ogólności kostek), dla których funkcja f=1 oznacza się F. Natomiast zbiór tych wektorów (kostek), dla których funkcja f=0 oznacza się R.

Na planszy przedstawiono tablicę prawdy funkcji boolowskiej 7-argumentowej oraz podano odpowiednie zbiory F i R tej funkcji. Funkcję tę w dalszej części wykładu oznaczać będziemy EXTL. Wektory zbioru F oznaczono symbolami k1,...,k5 .

Ekspansja jest procesem działającym na kostkach zbiorów F i R, a jej celem jest uzyskanie dla danej kϵF kostki k tak dużej, jak to tylko możliwe (tzn. z możliwie dużą liczbą pozycji o wartości *) i nie pokrywającej żadnego wektora zbioru R. W swoich obliczeniach Ekspansja wykorzystuje tzw. macierz blokującą B.

Macierzą blokującą (kostkę k) nazywać będziemy macierz:

B(k,R)=[bij] , 1i|R| , 1jn

w której każdy element bijϵ{0,1} jest definiowany następująco:

bij=1 , jeśli kj=1 oraz rij=0 lub kj=0 oraz rij=1 ;

bij=0, w pozostałych przypadkach.

W przypadku funkcji opisanej wektorami binarnymi macierz blokująca dla danej kostki kϵF powstaje z macierzy R przez zanegowanie tych kolumn R, których pozycje są wyznaczone przez pozycje jedynek w kostce kϵF.


Wyznaczymy macierz blokującą dla kostki k1 funkcji EXTL z planszy 7. Macierze F i R tej funkcji podane są ponownie na niniejszej planszy. Zgodnie z definicją, skoro k1=(0100101), to dla uzyskania B wystarczy w macierzy R „zanegować” kolumny drugą, piątą i siódmą, co zaznaczono odpowiednimi kolorami.

Pokryciem kolumnowym macierzy B=[bij], iϵ{1,...,w}, jϵ{1,...,n} jest zbiór L{1,...,n} taki, że dla każdego iϵ{1,...,w} istnieje jϵL , dla którego bij=1 . Pokrycie kolumnowe nazywamy minimalnym, jeżeli nie istnieje LL, który jest pokryciem macierzy B.

Obliczenia pokrycia kolumnowego omówimy na przykładzie macierzy blokującej wyznaczonej dla kostki k2. Dla tak obliczonej macierzy B , L={2,3,6} (kolumny macierzy B są numerowane od lewej do prawej) jest minimalnym pokryciem kolumnowym. Natomiast L={2,3} , L={2,6} oraz L={3,6} nie są pokryciami kolumnowymi tej macierzy.

Macierz blokująca B(k,R) pozwala wyznaczyć rozwinięcie (ekspansję) kostki k oznaczane k+(L,k) w sposób następujący:

kj+={kj,gdyjϵL*,wpozostalychprzypadkach

Można wykazać, że k+(L,k) jest implikantem funkcji f=(F,R). W szczególności k+(L,k) jest implikantem prostym, gdy L jest minimalnym pokryciem kolumnowym macierzy B(k,R).


Kontynuujemy obliczenia dla funkcji EXTL. Dla kostki k2=(1000110) odpowiednia macierz blokująca B=B(k2,R) jest:


1234567

B=[0000011001100001010000110001]


Zbiór L={4,7} jest pokryciem kolumnowym B, a więc k+(L,k)=(***0**0) , czyli implikantem F jest x4x7 . Natomiast dla L={2,3,6} (inne pokrycie kolumnowe), k+(L,k)=(*00**1*)=x2x3x6 .




Tablicę implikantów prostych konstruujemy w następujący sposób. Jeśli implikant Ij pokrywa kostkę ki , to na przecięciu wiersza wiersza ki z kolumną Ij piszemy 1, w przeciwnym przypadku piszemy 0.

Tablica implikantów prostych umożliwia wybór (selekcję) takiego minimalnego zbioru implikantów, który pokrywa wszystkie kostki funkcji pierwotnej


Minimalny zbiór implikantów prostych reprezentujących funkcję f można wyznaczyć obliczając minimalne pokrycie kolumnowe tablicy implikantów prostych. W tym celu zapisujemy wiersze tablicy w postaci zbiorów kolumn wskazywanych przez pozycje jedynek w danym wierszu, a następnie zauważając, że implikant I3 tworzy zbiór jednoelementowy wykreślamy wiersze z tym implikantem. Po takiej redukcji wierszy spostrzegamy, że I2 jest wspólny dla obu wierszy. Zatem minimalne pokrycie tworzą implikanty I2 , I3. Czyli f=x4x7+x2x6 .

Analogiczny wynik obliczy program PANDOR.

Pandor jest akademickim narzędziem minimalizacji funkcji boolowskich zmodyfikowaną metodą ekspansji z zastosowaniem dodatkowej procedury redukcji argumentów. Pandor został opracowany w ramach pracy dyplomowej Mirosława Cagary w Ośrodku Kształcenia na Odległość OKNO Politechniki Warszawskiej. Program Pandor jest dostępny na stronie internetowej www.zpt.tele.pw.edu.pl, a także na stronie internetowej jego autora www.domicil.pl.


Również program ESPRESSO obliczy taki sam wynik. Zapis funkcji EXTL w standardzie Espresso podano na planszach 20 i 21. Więcej informacji na temat standardu Espresso można znaleźć w książce Synteza układów logicznych.

Taki sam wynik minimalizacji funkcji EXTL w programie PANDOR (wyposażonym tylko w jedną procedurę ekspansji) oraz w programie ESPRESSO (zbudowanym z wielu procedur) nasuwa wątpliwości. Dlaczego program PANDOR za pomocą jednej procedury minimalizuje tak samo dobrze jak ESPRESSO zbudowane z wielu procedur.



Barierą ograniczającą obliczenia systematyczną metodą zastosowaną w Pandorze jest ogromna złożoność obliczeniowa zarówno w procesie generacji, jak też w procesie obliczania pokrycia kolumnowego.

Program PANDOR został stworzony po to, aby naocznie zaobserwować zjawisko wzrostu złożoności obliczeniowej wraz ze wzrostem liczby argumentów funkcji.

Funkcja EXTL ma 7 implikantów (Pandor dokonuje lepszej selekcji i oblicza ich zaledwie 5). W tym przypadku obliczenie minimalnego pokrycia kolumnowego jest zadaniem łatwym. Ale już dla bardziej skomplikowanych funkcji takich jak TL27 i KAZ, których tablice w standardzie Espresso są podane na planszy, sytuacja jest całkiem inna – właśnie ze względu na dużą liczbę implikantów. Czas obliczeń programem PANDOR jest drastycznie większy od czasu obliczeń programem Espresso. Oczywiście Espresso nie zawsze poda wynik minimalny. W celu uzyskania minimalnych rozwiązań w rozsądnym czasie obliczeń w programie PANDOR zastosowano procedurę redukcji argumentów. Jej wpływ na proces minimalizacji omówimy w następnym wykładzie.