Podręcznik
2. Dekompozycja funkcjonalna metodą rachunku podziałów
2.2. Dekompozycja zespołów funkcji boolowskich
Ze względu na różne zastosowanie przedstawionego wyżej schematu, blok G będziemy nazywać albo układem składowych dekompozycji gj , albo układem modyfikacji adresu. Pierwsza nazwa jest analogią do dekompozycji pojedynczej funkcji boolowskiej. Druga z kolei wiąże się z zastosowaniem dekompozycji w projektowaniu układów adresowania pamięci ROM, dla których to układów ograniczenia w liczbie wejść adresowych zmuszają do procesu modyfikacji adresu o n bitach na adres t-bitowy.
Oznaczmy jak poprzednio wektory z B n liczbami naturalnymi K = {1,...,</span></span></span><span style="line-height:150%"><span style="font-family:Symbol"><span style="color:black"><span style="letter-spacing:-.15pt">÷ </span></span></span></span><b><span style="line-height:150%"><span style="color:black"><span style="letter-spacing:-.15pt"><i>B</i> </span></span></span></b><sup><span style="line-height:150%"><span style="color:black"><span style="letter-spacing:-.15pt"><i>n</i></span></span></span></sup><span style="line-height:150%"><span style="font-family:Symbol"><span style="color:black"><span style="letter-spacing:-.15pt">÷</span></span></span></span><span style="line-height:150%"><span style="color:black"><span style="letter-spacing:-.15pt">}, a przez PF podział wyjściowy funkcji F skonstruowany w następujący sposób:
Inaczej mówiąc, wektory s i t należą do jednego bloku B podziału PF tylko wtedy, gdy odwzorowanie F przyporządkowuje tym wektorom taki sam wektor z {0,1}m. Na przykład, dla odwzorowania F określonego jak w tabl. 3.8 podział PF (zapisany w postaci podziału na zbiorze K = {1,2,...,15}) będzie miał postać:
Tablica 3.8
|
|
x1 x2 x3 x4 x5 |
y1 y2 y3 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 1 0 |
0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 |
Warunek istnienia dekompozycji o schemacie blokowym jak na rys. 3.6, gdzie U, V są rozłącznymi podzbiorami zbioru X funkcji F(X) oraz W Í U formułuje następujące twierdzenie.
Funkcja F: B n ®{0,1,–}m ma dekompozycję (rys. 3.6):
F = H (U, G (V, W ))
wtedy i tylko wtedy, gdy istnieje podział PG ³ PVÈW taki, że:
PU × PG £ PF
Dekompozycja wg twierdzenia 3.3
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.
Dla układu funkcji F z tabl. 3.9 przyjmijmy U = {<i>x</i><sub>1</sub>, </span></span><i><span style="line-height:150%"><span style="letter-spacing:-.15pt">x</span></span></i><sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">3</span></span></sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">, </span></span><i><span style="line-height:150%"><span style="letter-spacing:-.15pt">x</span></span></i><sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">4</span></span></sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">} oraz z V = {<i>x</i><sub>2</sub>,<b> </b></span></span><i><span style="line-height:150%"><span style="letter-spacing:-.15pt">x</span></span></i><sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">5</span></span></sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">} oraz W = f.
Tablica 3.9
|
|
x1 x3 x4 g |
y1 y2 y3 |
|
1 2 3 4 5 6 7 8,13 9,14 10 11 12 15 |
0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 |
0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 |
Podział PU = P1 × P3 × P4 (Pi = P(xi)), PV = P2 × P5. Zapisując PU w postaci podziału ilorazowego mamy, że:
Blokom H1,...,H4 podziału PV odpowiadają wektory D(H1) = 00, D(H2) = 01, D (H3) = 10, D(H4) = 11. W celu wyznaczenia dwublokowego podziału PG ³ PV spełniającego warunek dekompozycji (3-1) zauważmy, że jeśli blok H1 przeznaczymy do pierwszego bloku podziału PG, to blok H3 należy przeznaczyć do drugiego bloku tego podziału. Stwierdzenie to jest wynikiem faktu, że H1 zawiera wektor 1, H3 zawiera wektor 7, a ponadto wektory te należą do różnych bloków podziału wyjściowego PF. Fakt ten jest zresztą zaznaczony w podziale ilorazowym PU½PF. Mamy więc
, więc
. Następnie sprawdzamy kolejną parę wektorów z PU½PF, czyli 2 i 3. Skoro 3 jest w 
. Kolejna para (9,14) i (15) należy już do różnych bloków PG, a więc sprawdzamy 4 i 5. Stąd:
Łatwo stwierdzić, że funkcja g przyporządkowuje wektorowi (x2, x5) = (0,0) wartość 0, i analogicznie g(0,1) = 1, g(1,0) = 1, g(1,1) = 0. Ostatecznie g = x2 Å x5. W rezultacie, dla układu y1, y2, y3 funkcji z tabl. 3.9 danego odwzorowaniem F : (y1, y2, y3) = F(x1,...,x5) uzyskaliśmy dekompozycję: F = H(x1, x3, x4, g(x2 Å x5)).
Tablicę prawdy funkcji H można wyznaczyć na podstawie przynależności bloków iloczynu P1 × P3 × P4 × PG do bloków podziałów P1, P3, P4, PG oraz PF. Odpowiednie obliczenia podane są w tabl. 3.10.
Tablica 3.10
|
(2) |
(9,14) |
(3,15) |
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
Z kolei dla U = {</span></span><i><span style="line-height:150%"><span style="letter-spacing:-.15pt">x</span></span></i><sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">3</span></span></sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">, </span></span><i><span style="line-height:150%"><span style="letter-spacing:-.15pt">x</span></span></i><sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">4</span></span></sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">} oraz V = {<i>x</i><sub>1</sub>, <i>x</i><sub>2</sub>, </span></span><i><span style="line-height:150%"><span style="letter-spacing:-.15pt">x</span></span></i><sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">5</span></span></sub><span style="line-height:150%"><span style="letter-spacing:-.15pt">}, podział PU = P3 × P4, PV = P1 × P2 × P5, a więc:
gdzie bloki PV są oznaczone kolejno B1, B2,..., B8.
Z podziału ilorazowego PU | PF 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 PG (to samo dotyczy (4), (5) i (10)). Ponadto pamiętamy, że PG ³ PV. Zatem wprowadzenie bloków z PV do tworzonego PG powinno przebiegać według schematu pokazanego w tablicy 3.10. Stąd:
Przyjmując, że kodowanie bloków PG jest: pierwszy blok – 01, drugi blok – 10, trzeci blok – 00 i uwzględniając, iż kolejnym blokom z podziału PV odpowiadają wektory (zmienne x1, x2, x5) odpowiednio: B1 = 000, B2 = 001, B3 = 010, B4 = 011, B5 = 110, B6 = 111, B7 = 101 oraz B8 = 100, wyznaczamy tablicę prawdy funkcji G (tab. 3.11).
Tablica 3.11
|
|
x1 x2 x5 |
g1 g2 |
|
0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 |
0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 |
Podobnie, po obliczeniu iloczynu:
wyznaczamy tablicę prawdy funkcji H (tab. 3.12).
Tablica 3.12
|
|
x3 |
x4 |
g1 |
g2 |
y1 |
y2 |
y3 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|
|
0 |
0 |
1 |
0 |
0 |
0 |
1 |
|
|
0 |
1 |
0 |
0 |
1 |
0 |
0 |
|
|
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|
0 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
1 |
0 |
0 |
1 |
0 |
1 |
1 |
|
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
|
|
1 |
0 |
1 |
0 |
1 |
0 |
0 |
|
|
1 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|
1 |
1 |
0 |
0 |
0 |
1 |
1 |
|
|
1 |
1 |
1 |
0 |
0 |
1 |
0 |































