Metoda klasyczna ... to metoda tablicowa, graficzna, której podstawowe operacje wykonywane są na tzw. tablicy dekompozycji Tablicą dekompozycji funkcji f nazywamy macierz dwuwymiarową o kolumnach etykietowanych wartościami zmiennych funkcji f ze zbioru V oraz o wierszach etykietowanych wartościami zmiennych funkcji f ze zbioru U V 1 01 00 001 000 x1x2x3 x4x5 U Elementami macierzy M są wartości, jakie przyjmuje funkcja f na wektorach złożonych z odpowiednich etykiet i-tego wiersza i j-tej kolumny.
Relacja zgodności kolumn Jak obliczać dekompozycję
Relacja zgodności kolumn Kolumny {kr, ks} są zgodne, jeśli nie istnieje wiersz i, dla którego elementy Kir, Kis są określone i różne, tzn. odpowiednio: 0, 1 albo 1, 0. K1 K2 K3 K4 K5 K6 K7 1 -
Relacja zgodności kolumn 1 - Kolumny zgodne można „sklejać” {K1,K4,K7} 1 - 1 - {K5,K6}
Obliczanie dekompozycji... Wyznaczyć relację zgodności kolumn, czyli wypisać wszystkie pary zgodne (albo sprzeczne). Wyznaczyć rodzinę maksymalnych zbiorów kolumn zgodnych (maksymalnych klas zgodnych – MKZ). Z rodziny tej wyselekcjonować minimalną podrodzinę (w sensie liczności) rozłącznych zbiorów zgodnych pokrywającą zbiór K wszystkich kolumn tablicy dekompozycji.
Istnieje dekompozycja ! Przykład cde a b 000 001 010 011 100 101 110 111 00 1 – 01 10 11 K0 K1 K2 K3 K4 K5 K6 K7 c d e a b Istnieje dekompozycja ! f = h(a,b,g1(c,d,e), g2(c,d,e))
Przykład - obliczanie klas zgodności Pary zgodne: 0,3 0,4 0,6 1,3 1,4 1,5 1,6 2,5 2,7 3,4 3,6 4,5 4,6 5,7 cde a b 000 001 010 011 100 101 110 111 00 1 – 01 10 11 K0 K1 K2 K3 K4 K5 K6 K7 K0, K1 sprzeczna K0, K2 sprzeczna K0, K3 zgodna K0, K4 zgodna
Metoda bezpośrednia Pary zgodne: a, b b, c a, c {a, b, c} a, b, c a, b, d b, c, d a, c, d {a, b, c, d} i.t.d.
Przykład - klasy zgodności… …policzymy najprostszą metodą 0,3 0,4 0,6 1,3 1,4 1,5 1,6 2,5 2,7 3,4 3,6 4,5 4,6 5,7 0,3,4 0,3,6 Maksymalne klasy zgodności: 0,4,6 1,3,4 1,3,6 0,3,4,6 1,4,5 1,4,6 2,5,7 3,4,6 1,3,4,6 1,4,5 2,5,7
Komentarz 1 2 3 4 5 6 7 Przykład 2.7 i 2.8 (str. 34) Powinniśmy pamiętać, że są jeszcze inne metody obliczania MKZ: metoda kolorowania grafu b) metodę iteracyjną 1 2 3 4 5 6 7 Przykład 2.7 i 2.8 (str. 34)
Przykład c.d. Z rodziny MKZ wybieramy minimalną liczbę klas (lub podklas) pokrywającą zbiór wszystkich kolumn. Wybieramy: 1,5 0,3,4,6 2,7 Ostatecznie: 0,3,4,6 1,3,4,6 0,3,4,6 1,4,5 2,5,7 1,4,5 Kolumny powtarzające się usuwamy Komentarz: formalnie obliczamy pokrycie.. 2,5,7
Sklejanie kolumn – funkcja h cde ab 000 001 010 011 100 101 110 111 00 1 - 01 10 11 K0 K1 K2 K3 K4 K5 K6 K7 {K0,K3,K4,K6} {K1,K5} {K2,K7} g1g2 ab 00 01 11 10 1 - Kodowanie? Może być dowolne
Kodowanie kolumn – funkcja g cde ab 000 001 010 011 100 101 110 111 00 1 - 01 10 11 K0 K1 K2 K3 K4 K5 K6 K7 c d e g1 g2 1 g1g2 ab 00 01 11 10 1 -
Co uzyskaliśmy c d e a b c d e g1 g2 1 - 10 1 11 01 00 g1g2 ab Opis funkcji g i h tablicami prawdy wystarczy dla realizacji w strukturach FPGA Ale funkcje g i h można obliczyć jawnie… czyli po procesie dekompozycji można je minimalizować
uzyskując w rezultacie … …strukturę na bramkach c d e a b Do tego zagadnienia wrócimy pod koniec wykładu
Ten sam przykład metodą r. p. U = {a, b} V = {c, d, e} cde ab 000 001 010 011 100 101 110 111 00 1 01 10 11 cde ab 000 001 010 011 100 101 110 111 00 1 2 3 4 5 6 01 7 8 10 9 11 12 13 14 15 16 Przy takich U i V podziały PU, PV, PF, a także podział ilorazowy PU|PF można obliczyć bezpośrednio z tablicy dekompozycji. Wiersze reprezentują bloki PU, a kolumny bloki PV.
W celu obliczenia PU|PF – jawne obliczenie PF jest niepotrzebne. Ten sam przykład c.d. cde ab 000 001 010 011 100 101 110 111 00 1 01 10 11 cde ab 000 001 010 011 100 101 110 111 00 1 2 3 4 5 6 01 7 8 10 9 11 12 13 14 15 16 W celu obliczenia PU|PF – jawne obliczenie PF jest niepotrzebne.
Ten sam przykład c.d. Obliczenie G: (9,11,12,13) (10,14) (15) 9,16 3,11 7,12 5,13 2,10 6,14 4,8 (1,15)
Przykład (bardziej skomplikowany) - TL27 .type fr .i 10 .o 1 .p 25 0010111010 0 1010010100 0 0100011110 0 1011101011 0 1100010011 0 0100010110 0 1110100110 0 0100110000 0 0101000010 0 0111111011 1 0000010100 1 1101110011 1 0100100000 1 0100011111 1 0010000110 1 1111010001 1 1111101001 1 1111111111 1 0010000000 1 1101100111 1 0010001111 1 1111100010 1 1010111101 1 0110000110 1 0100111000 1 .e x3 x5 x6 x7 x8 x9 x10 f 1 x7 x8 x9 x3 x5 x6 x10 f 1 U V
Tablica dekompozycji dla funkcji TL27 x3 x5 x6 x10 1 x7x8x9 000 – – – 1 – – 1 – – 1 – – – – 001 – – – – 1 – – – – 1 – – – 010 – 1 – – – – – – – – – – – – 011 – – – 1 – – 1 – – – – – – 100 – – – – – 1 – – – – – – 1 – – 101 – – – – – – – – – – – – 1 110 – – – – – – – – – – – – – – 1 111 – – 1 – – – – – 1 – – – – – 1 20
Tablica dekompozycji dla funkcji TL27 1 000 – 001 010 011 100 101 110 111 x3 x5 x6 x10 x7x8x9
Tablica dekompozycji dla funkcji TL27 H G g 000 1 001 010 011 100 – 101 110 111 x7x8x9 x3 x5 x6 x10 G 1
Praktyczny wynik dekompozycji funkcji TL27 Tylko 2 komórki 25 kom. (FLEX) lub 27 kom. (Stratix)!!! Niesamowita skuteczność procedur dekompozycji!!! QUARTUS
Wracamy do przykładu… c d e a b c d e g1 g2 1 - 10 1 11 01 00 g1g2 ab Opis funkcji g i h tablicami prawdy wystarczy dla realizacji w strukturach FPGA Ale funkcje g i h można obliczyć jawnie… czyli po procesie dekompozycji można je minimalizować
Przykład – funkcje g1 i g2 c d e g1 g2 1 e cd 1 00 01 11 10 e cd 1 00 1 e cd 1 00 01 11 10 e cd 1 00 01 11 10 25
Przestawiliśmy wiersze Przykład – funkcja h Uwaga: Przestawiliśmy wiersze g1g2 ab 00 01 11 10 1 - 26
Przykład – realizacja G H a b c d e G g1 g2 H h = f
Mniej ważne metody syntezy… np. faktoryzacja wyrażeń boolowskich – metoda istotna w strukturach bramkowych (w technologiach GA lub S.C.) Faktoryzacja przekształca dwupoziomowe wyrażenie boolowskie w wielopoziomowe, przez wprowadzenie podfunkcji (węzłów) pośrednich. f = ac + ad + bc + bd + e a c a d b c f b d e
Faktoryzacja a dekompozycja f = ac + ad + bc + bd + e, f = (a + b) (c + d) + e g = a + b h = c + d a c a b g h a d f b c f c d b d e e Pierwotne 5 bramek, 9 literałów, operacja faktoryzacji redukuje do 4 bramek i 7 literałów.
Algorytm MKZ wg par zgodnych E – relacja zgodności (ei,ej) E Rj = { ei | i < j oraz (ei,ej) E} RKZk RKZk+1 KZ RKZk a) Rk+1 = , RKZk+1 jest powiększana o klasę KZ = {k+1} b) KZ Rk+1 = , KZ bez zmian c) KZ Rk+1 , KZ’ = KZ Rk+1 {k+1}
Rj = { ei | i < j oraz (ei,ej) E} Przykład Rj = { ei | i < j oraz (ei,ej) E} E: 0,3 0,4 0,6 1,3 1,4 1,5 1,6 2,5 2,7 3,4 3,6 4,5 4,6 5,7 R0 = R1 = R2 = R3 = 0,1 R4 = 0,1,3 R5 = 1,2,4 R6 = 0,1,3,4 R7 = 2,5
Przykład R0 = R1 = R2 = R3 = R4 = R5 = {0,1} {0,1,3} {1,2,4} R6 = {0,1,3,4} R7 = {2,5} {0} {0} {1} {0} {1} {2} {0,3} {1,3} {2} {0,3,4} {1,3,4} {2} {4,5} {1,4,5} {2,5} {0,3,4} {1,3,4} {1,4,6} {2,5} {0,3,4,6} {1,3,4,6} {1,4,5} {1,4,5} {2,5,7} {0,3,4,6} {1,3,4,6} {5,7} Rodzina MKZ