TC Moduł 6: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 42: | Linia 42: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd5.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd5.png]] | ||
|valign="top"| | |valign="top"|Sens fizyczny twierdzenia wyjaśnia przykład. Dla funkcji z tablicy na planszy kolumny są adresowane trzema zmiennymi <math>\{x1, x2, x3\}</math> względem których funkcja <math>f</math> jest symetryczna. Wiersze natomiast są adresowane zmiennymi <math>\{x4, x5\}</math>. | ||
Grupy kolumn o adresach <math>\{(0,0,1), (0,1,0), (1, 0, 0)\}</math> i <math>\{(1, 1, 0), (1, 0,1), (0,1,1) \}</math> są odpowiednio równe. Zatem istnieje dekompozycja, w której zmienne <math>\{x_1, x_2, x_3\}</math> są przeadresowywane na <math>\{g_1, g_2\}</math>. Wówczas funkcja <math>f</math> może być wyspecyfikowana w tablicy, w której adresami kolumn są <math>\{g_1, g_2\}</math>, a wierszy odpowiednio wartości zmiennych <math>\{x_4, x_5\}</math>. Tablice te są jednocześnie tablicami prawdy funkcji reprezentujących składowe dekompozycji tzn. bloki ''g'' i ''h''. | |||
|} | |} | ||
Linia 49: | Linia 52: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd6.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd6.png]] | ||
|valign="top"| | |valign="top"|Znaczenie praktyczne dekompozycji wynika z konstrukcji typowych struktur programowalnych jakimi są układy FPGA. Nie wnikając w szczegóły (o układach FPGA powiemy więcej na wykładzie 12) budowę struktur FPGA można scharakteryzować następująco. Są to układy wyposażone w kilkadziesiąt (kilkaset) uniwersalnych komórek logicznych. Typowa komórka ma 4 wejścia i 1 wyjście, na którym realizowana jest dowolna funkcja boolowska 4 argumentów. Komórki umieszczone są w środowisku kanałów połączeniowych dzięki którym można je łączyć w dowolne struktury. | ||
Z powyższego wynika, że funkcja <math>f</math> zdekomponowana na bloki ''g'' i ''h'' połączone jak pokazano na rysunku może być zrealizowana na trzech komórkach struktury FPGA. Później pokażemy, że proces realizacji funkcji boolowskich w strukturach FPGA uwzględniający metodę dekompozycji jest o wiele bardziej skuteczny niż metody przyjęte w systemach komercyjnych, w których w takim przypadku najpierw dokonuje sie minimalizacji funkcji, a dopiero potem sieć bramek jest odwzorowywana na komórki. | |||
|} | |} | ||
Linia 56: | Linia 62: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd7.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd7.png]] | ||
|valign="top"|Niestety postępowanie takie w ogólnym przypadku funkcji nie w pełni określonych nie może być już tak bezpośrednie. Przykład takiej bardziej skomplikowanej sytuacji omówimy dokonując dekompozycji funkcji podanej w tabl. na planszy. Otóż w tym przypadku, ze względu na nieokreśloności funkcji, nie można bezpośrednio podjąć decyzji, które kolumny w tablicy dekompozycji są takie same. Wynika to z faktu, że kreskom reprezentującym punkty nieokreśloności funkcji można przypisać wartość albo 0 albo 1, w rezultacie zaliczając odpowiednią kolumnę do – być może innego zbioru kolumn identycznych. Jak się póżniej przekonamy funkcja ta ma dekompozycję <math>f = h(a,b,g_1(c,d,e), g_2(c,d,e))</math> o schemacie blokowym jak na rysunku. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd8.png]] | |||
|valign="top"|Niniejsza plansza przedstawia funkcje boolowskie odpowiadające składowym tej dekompozycji. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd9.png]] | |||
|valign="top"|W celu obliczania dekompozycji funkcji boolowskich nie w pełni określonych wprowadzimy pojęcie zgodności kolumn (tablicy dekompozycji). | |||
Kolumny <math>\{k_r, k_s\}</math> są zgodne, jeśli nie istnieje wiersz ''i'', dla którego elementy <math>K_{ir}</math>, <math>K_{is}</math> są określone i różne, tzn. odpowiednio: 0, 1 albo 1, 0. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd10.png]] | |||
|valign="top"|Kolumny zgodne można „sklejać”. pokolorowane kolumny na planszy wyjaśniają proces sklejania. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd11.png]] | |||
|valign="top"|Relacja zgodności jest zwrotna, symetryczna, ale nie jest przechodnia. | |||
Pary zgodne umożliwiają wyznaczenie maksymalnych zbiorów kolumn zgodnych. | |||
Zbiór <math>K = {k_1,...,k_p}</math> nazywamy '''maksymalnym zbiorem kolumn zgodnych (maksymalną klasą zgodności)''', jeżeli każda para <math>k_i</math>, <math>k_j</math> wzięta z tego zbioru jest zgodna oraz nie istnieje żaden inny zbiór kolumn zgodnych <math>K'</math>, zawierający <math>K</math>. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd12.png]] | |||
|valign="top"|Problem obliczania maksymalnych klas zgodnych można sprowadzić do znanego problemu obliczania maksymalnych klik w grafie lub do problemu kolorowania grafu. | |||
Najprostsza metoda polega na łączeniu par kolumn zgodnych w trójki, trójek w czwórki itd. | |||
Usuwając zbiory mniejsze zawarte w większych oblicza się Maksymalne Klasy Zgodności. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd13.png]] | |||
|valign="top"|Taką najprostszą metodę obliczania MKZ nazywać będziemy metodą bezpośrednią. Wg niej trzy pary zgodne <math>(a, b)</math>, <math>(b, c)</math>, <math>(a, c)</math> tworzą zbiór zgodny <math>(a, b, c)</math>. Z kolei cztery „trójki”: <math>(a, b, c)</math>, <math>(a, b, d)</math>, <math>(b, c, d)</math>, <math>(a, c, d)</math> tworzą „czwórkę tzn. 4 elementowy zbiór zgodny <math>(a, b, c, d)</math>. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd14.png]] | |||
|valign="top"|Zatem przystępując do obliczania dekompozycji należy najpierw obliczyć pary kolumn zgodnych. Dla funkcji, której tablica dekompozycji jest podana na planszy kolumny K0, K1 oraz K0, K2 są sprzeczne. Natomiast K0, K3 oraz K0, K4 są zgodne. W ten sposób wyznaczamy wszystkie pary kolumn zgodnych. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd15.png]] | |||
|valign="top"|Dysponując parami kolumn zgodnych kolejno obliczamy „trójki”, a następnie „czwórki” zgodne: 0,3,4,6; 1,3,4,6; 1,4,5; 2,5,7. W zapisie formalnym: | |||
: <math>\{K_0, K_3, K_4, K_6\}</math>, | |||
: <math>\{K_1, K_3, K_4, K_6\}</math>, | |||
: <math>\{K_1, K_4, K_5\}</math>, | |||
: <math>\{K_2, K_5, K_7\}</math>. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd16.png]] | |||
|valign="top"|Po wyznaczeniu maksymalnych zbiorów kolumn zgodnych (maksymalnych klas zgodności) | |||
należy wybrać minimalną liczbę klas (lub podklas) pokrywającą zbiór wszystkich kolumn. Z kolei w takiej rodzinie zbiorów należy usunąć kolumny powtarzające się. Ostatecznie uzyskujemy: <math>\{K_0, K_3, K_4, K_6\}</math>, <math>\{K_1, K_5\}</math>, <math>\{K_2, K_7\}</math>. Kolumny należące do jednej klasy zgodności można sklejać. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd17.png]] | |||
|valign="top"| | |valign="top"| | ||
|} | |} | ||
Linia 62: | Linia 155: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika: | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd18.png]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} | ||
Linia 69: | Linia 162: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika: | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd19.png]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} | ||
Linia 76: | Linia 169: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika: | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd20.png]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} |
Wersja z 07:19, 29 sie 2006
![]() |
Niniejsza plansza przedstawia funkcje boolowskie odpowiadające składowym tej dekompozycji. |
![]() |
Kolumny zgodne można „sklejać”. pokolorowane kolumny na planszy wyjaśniają proces sklejania. |
![]() |
Dysponując parami kolumn zgodnych kolejno obliczamy „trójki”, a następnie „czwórki” zgodne: 0,3,4,6; 1,3,4,6; 1,4,5; 2,5,7. W zapisie formalnym:
|
![]() |
![]() |
![]() |
![]() |