TC Moduł 14: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
m Zastępowanie tekstu – „,...,” na „,\ldots,” |
||
(Nie pokazano 7 wersji utworzonych przez 2 użytkowników) | |||
Linia 35: | Linia 35: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M14_Slajd5.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M14_Slajd5.png|thumb|500px]] | ||
|valign="top"|Obecnie zajmiemy się analitycznym opisem dekompozycji funkcji boolowskich. Do tego celu posłużymy się wprowadzonym w module 5 rachunkiem podziałów. W szczególności wyprowadzimy warunki dekompozycji dla funkcji boolowskich opisanych podziałami <math>P_1, P_2, | |valign="top"|Obecnie zajmiemy się analitycznym opisem dekompozycji funkcji boolowskich. Do tego celu posłużymy się wprowadzonym w module 5 rachunkiem podziałów. W szczególności wyprowadzimy warunki dekompozycji dla funkcji boolowskich opisanych podziałami <math>P_1, P_2,\ldots, P_n, P_f\,</math> określonymi na zbiorze <math>K\,</math> ponumerowanych wektorów odwzorowania <math>F:\, B^n\to \{0,1, -\}^m</math>. | ||
Na początek zajmiemy się poszukiwaniem dekompozycji <math>F = H(U,G(V,W))\,</math>, gdzie: <math>U, V\,</math> są podzbiorami zbioru <math>X = \{x_1, | Na początek zajmiemy się poszukiwaniem dekompozycji <math>F = H(U,G(V,W))\,</math>, gdzie: <math>U, V\,</math> są podzbiorami zbioru <math>X = \{x_1,\ldots, x_n\}</math> argumentów funkcji boolowskiej, a ponadto <math>W\subseteq U\,</math>, | ||
<math>U\cup V\subseteq X</math>, <math>U\cap V =\Phi</math>. Dla podanych założeń obowiązuje twierdzenie: | <math>U\cup V\subseteq X</math>, <math>U\cap V =\Phi</math>. Dla podanych założeń obowiązuje twierdzenie: | ||
Linia 72: | Linia 72: | ||
Iloczynem podziałów <math>P_a\bullet P_b\,</math> nazywamy największy (względem relacji <math>\le\,</math>) podział, który jest nie większy od <math>P_a\,</math> oraz <math>P_b\,</math>. Na przykład | Iloczynem podziałów <math>P_a\bullet P_b\,</math> nazywamy największy (względem relacji <math>\le\,</math>) podział, który jest nie większy od <math>P_a\,</math> oraz <math>P_b\,</math>. Na przykład | ||
<math>\Pi_a=(\overline{1,2,4};\overline{3,5,6})</math> | <math>\Pi_a=(\overline{1,2,4};\overline{3,5,6})</math> | ||
Linia 84: | Linia 85: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M14_Slajd8.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M14_Slajd8.png|thumb|500px]] | ||
|valign="top"|Niech <math>P_a\,</math> i <math>P_b\,</math> są podziałami na <math>S\,</math> oraz <math>P_a\ge P_b\</math>. | |valign="top"|Niech <math>P_a\,</math> i <math>P_b\,</math> są podziałami na <math>S\,</math> oraz <math>P_a\ge P_b\ </math>. | ||
Podział <math>P_a | P_b\,</math> jest podziałem ilorazowym <math>P_a\,</math> i <math>P_b\,</math> , jeżeli jego elementy są blokami <math>P_b\,</math>, a bloki są blokami <math>P_a\,</math>. | Podział <math>P_a | P_b\,</math> jest podziałem ilorazowym <math>P_a\,</math> i <math>P_b\,</math> , jeżeli jego elementy są blokami <math>P_b\,</math>, a bloki są blokami <math>P_a\,</math>. | ||
Linia 162: | Linia 163: | ||
Łatwo sprawdzić, że <math>P_U\bullet Pi_G\le P_F</math>. Zatem dekompozycja istnieje. | Łatwo sprawdzić, że <math>P_U\bullet \Pi_G\le P_F</math>. Zatem dekompozycja istnieje. | ||
|} | |} | ||
Linia 192: | Linia 193: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M14_Slajd20.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M14_Slajd20.png|thumb|500px]] | ||
|valign="top"|Podobnie postępujemy dla funkcji <math>H\,</math>, ale tu korzystamy z bloków iloczynu podziałów <math>P_U\bullet \Pi_g\,</math> oraz ich przynależności do podziałów <math>P_7, P_8, P_9, \Pi_g\,</math> oraz <math> | |valign="top"|Podobnie postępujemy dla funkcji <math>H\,</math>, ale tu korzystamy z bloków iloczynu podziałów <math>P_U\bullet \Pi_g\,</math> oraz ich przynależności do podziałów <math>P_7, P_8, P_9, \Pi_g\,</math> oraz <math>P_F\,</math>. | ||
Linia 214: | Linia 215: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M14_Slajd23.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M14_Slajd23.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W celu pełnego przekonania o skuteczności twierdzenia o dekompozycji zajmiemy się dekompozycją zespołu 3 funkcji boolowskich o 5 argumentach, dla których tablica prawdy jest podana na planszy. | ||
Oznaczmy jak poprzednio wektory z <math>B^n\,</math> liczbami naturalnymi <math>K = \{1,\ldots,|B^n|\}</math>, a przez <math>P_F\,</math> podział wyjściowy funkcji <math>F\,</math> skonstruowany w następujący sposób: | |||
:<math>(s,t)\in B_{P_F}\iff F(s)=F(t)\,</math> | |||
Inaczej mówiąc, wektory <math>s\,</math> i <math>t\,</math> należą do jednego bloku <math>B\,</math> podziału <math>P_F\,</math> tylko wtedy, gdy odwzorowanie <math>F\,</math> przyporządkowuje tym wektorom taki sam wektor z <math>\{0,1\}^m\,</math>. Na przykład, dla odwzorowania <math>F\,</math> określonego jak w tablicy na planszy podział <math>P_F\,</math> (zapisany w postaci podziału na zbiorze <math>K = \{1,2,\ldots,15\}\,</math> będzie miał postać: | |||
<math>P_F=\{\overline{1,9,14};\overline{5,7,8,13};\overline{2,6,12};\overline{4,11};\overline{3,10,15} \}</math> | |||
|} | |} | ||
Linia 221: | Linia 233: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M14_Slajd24.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M14_Slajd24.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Jak widać zastosowanie rachunku podziałów okazało się wyjątkowo wygodne, gdyż odpowiednie twierdzenie o dekompozycji układów wielowyjściowych traktuje zespół funkcji jako pojedynczy obiekt, podlegający zasadom dekompozycji identycznie jak pojedyncza funkcja | ||
boolowska. Dodatkowo uzyskuje się tu prostą metodę selekcji zbioru argumentów należących do zbioru <math>U\,</math>, o której niestety ze względu na ograniczony zakres wykładu nie będziemy mówili. | |||
Zatem przyjmujemy arbitralnie <math>U = \{x_3,x_4\}</math> oraz <math>V= \{x_1,x_2,x_5\}</math>, czyli podział <math>P_U = P_3\bullet P_4</math>, <math>P_V = P_1\bullet P_2\bullet P_5</math>, a więc: | |||
<math>P_U=(\overline{1,7,8,13};\overline{2,3,9,14,15};\overline{4,5,10};\overline{6,11,12})</math> | |||
<math>P_F=(\overline{1,9,14};\overline{5,7,8,13};\overline{2,6,12};\overline{4,11};\overline{3,10,15})</math> | |||
<math>P_U|P_F=(\overline{(1)(7,8,13)};\overline{(2)(9,14)(3,15)};\overline{(4)(5)(10)};\overline{(11)(6,12)})</math> | |||
<math>P_V=(\overline{1,3};\overline{2};\overline{4,6,7};\overline{5};\overline{8,9,10,12};\overline{11};\overline{13,14};\overline{15})</math> | |||
gdzie bloki <math>P_V\,</math> są oznaczone kolejno <math>B_1, B_2,\ldots, B_8\,</math>. | |||
|} | |} | ||
Linia 228: | Linia 255: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M14_Slajd25.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M14_Slajd25.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Z podziału ilorazowego <math>P_U | P_F\,</math> wnioskujemy, że odpowiedni PG powinien mieć co najmniej 3 bloki. Wynika to z faktu, że elementy (2), (9,14) i (3,15) muszą należeć do trzech różnych bloków <math>\Pi_G\,</math> (to samo dotyczy (4), (5) i (10)). Ponadto pamiętamy, że <math>\Pi_G\ge P_V\,</math>. Zatem wprowadzenie bloków z <math>P_V\,</math> do tworzonego <math>\Pi_G\,</math> powinno przebiegać według schematu pokazanego w kolorowej tablicy na planszy. Stąd: | ||
<math>\Pi_G=(\overline{2,4,6,7};\overline{8,9,10,12,13,14};\overline{1,3,5,11,15})</math> | |||
|} | |} | ||
Linia 235: | Linia 265: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M14_Slajd26.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M14_Slajd26.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Przyjmując, że kodowanie bloków <math>\Pi_G\,</math> jest: pierwszy blok – 01, drugi blok – 10, trzeci blok – 00 i uwzględniając, iż kolejnym blokom z podziału <math>P_V\,</math> odpowiadają wektory (zmienne <math>x_1, x_2, x_5\,</math>) odpowiednio: <math>B_1 = 000</math>, <math>B_2 = 001</math>, <math>B_3 = 010</math>, <math>B_4 = 011</math>, <math>B_5 = 110</math>, <math>B_6 = 111</math>, <math>B_7 = 101</math> oraz <math>B_8 = 100</math>, wyznaczamy tablicę prawdy funkcji <math>G\,</math>. | ||
|} | |} | ||
Linia 253: | Linia 283: | ||
<math>P_U\cdot \Pi_G=(\overline{1};\overline{7};\overline{8,13};\overline{3,15};\overline{2};\overline{9,14};\overline{4};\overline{5};\overline{10};\overline{6};\overline{11};\overline{12})</math> | <math>P_U\cdot \Pi_G=(\overline{1};\overline{7};\overline{8,13};\overline{3,15};\overline{2};\overline{9,14};\overline{4};\overline{5};\overline{10};\overline{6};\overline{11};\overline{12})</math> | ||
wyznaczamy tablicę prawdy funkcji <math>H\,</math>. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> |
Aktualna wersja na dzień 21:58, 15 wrz 2023
![]() |
Niech i są podziałami na oraz .
Podział jest podziałem ilorazowym i , jeżeli jego elementy są blokami , a bloki są blokami . |
![]() |
Przystępując do obliczenia dekompozycji najpierw należy funkcję opisać podziałami. |
![]() |
Obecnie stajemy przed najważniejszym zadaniem wynikającym z twierdzenia o dekompozycji, a mianowicie przed obliczeniem podziału . |
![]() |
Dla wygody dalszych obliczeń podział zapiszemy w postaci podziału ilorazowego:
|
![]() |
Interpretując twierdzenie o dekompozycji łatwo zauważyć, że podział tworzymy z bloków podziału zgodnie z podziałem ilorazowym . |
![]() |
Podobnie postępujemy dla funkcji , ale tu korzystamy z bloków iloczynu podziałów oraz ich przynależności do podziałów oraz .
|
![]() |
Rysując raz jeszcze schemat blokowy uzyskanej dekompozycji łatwo zauważamy, że funkcję TL27 można zrealizować na 2 komórkach struktury FPGA typu LUT. |
![]() |
Fragment tej tablicy podany jest na planszy. |
![]() |
Podobnie, po obliczeniu iloczynu:
wyznaczamy tablicę prawdy funkcji . |