320 likes | 498 Views
U. V. x 1 x 2 x 3 x 4 x 5. 000. 001. . 00. 0. 1. 01. 1. 0. . Metoda klasyczna. ... to metoda tablicowa, graficzna, której podstawowe operacje wykonywane są na tzw. tablicy dekompozycji.
E N D
U V x1x2x3 x4x5 000 001 00 0 1 01 1 0 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 Elementami macierzy M są wartości, jakie przyjmuje funkcja f na wektorach złożonych z odpowiednich etykiet i-tego wierszai j-tej kolumny.
Jak obliczać dekompozycję Relacja zgodności kolumn
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.
Relacja zgodności kolumn Kolumny zgodne można „sklejać” {K1,K4,K7} {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.
cde a b 000 001 010 011 100 101 110 111 a b c d e 00 1 – 0 1 – 0 1 0 01 – – – – 1 1 – – 10 – 0 1 0 0 – 0 1 11 0 1 – – – – – – K0 K1 K2 K3 K4 K5 K6 K7 Przykład Istnieje dekompozycja ! f = h(a,b,g1(c,d,e), g2(c,d,e))
cde a b 000 001 010 011 100 101 110 111 00 1 – 0 1 – 0 1 0 01 – – – – 1 1 – – 10 – 0 1 0 0 – 0 1 11 0 1 – – – – – – K0 K1 K2 K3 K4 K5 K6 K7 Przykład - obliczanie klas zgodności Pary zgodne: 0,30,40,6 1,31,41,51,6 2,52,7 3,43,6 4,54,6 5,7 K0, K1 sprzeczna K0, K2 sprzeczna K0, K3 zgodna K0, K4 zgodna
Metoda bezpośrednia Pary zgodne: a, bb, ca, c {a, b, c} a, b, ca, b, db, c, da, c, d {a, b, c, d} i.t.d.
Przykład - klasy zgodności… …policzymy najprostszą metodą 0,30,40,61,31,41,51,62,52,73,43,64,54,65,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 Powinniśmy pamiętać, że są jeszcze inne metody obliczania MKZ: • metoda kolorowania grafu b) metodę iteracyjną 0 Przykład 2.7 i 2.8 (str. 34) 7 1 6 2 3 5 4
Komentarz: formalnie obliczamy pokrycie.. Ostatecznie: 0,3,4,6 1,5 2,7 Kolumny powtarzające się usuwamy Przykład c.d. Z rodziny MKZ wybieramy minimalną liczbę klas (lub podklas) pokrywającą zbiór wszystkich kolumn. Wybieramy: 0,3,4,6 0,3,4,6 1,3,4,6 1,4,5 1,4,5 2,5,7 2,5,7
Sklejanie kolumn – funkcja h {K0,K3,K4,K6} {K1,K5} {K2,K7} Kodowanie? Może być dowolne
c d e g1 g2 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 Kodowanie kolumn – funkcja g
c d e g1 g2 0 0 0 0 0 0 1 1 0 0 a b c d e 1 0 0 0 0 g1g2 ab 00 01 11 10 1 1 0 0 0 00 1 0 0 - 01 1 1 - - 0 0 1 0 1 10 0 0 1 - 11 0 1 - - 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 Co uzyskaliśmy 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ć
a b c d e uzyskując w rezultacie … …strukturę na bramkach Do tego zagadnienia wrócimy pod koniec wykładu
Ten sam przykład metodą r. p. U = {a, b} V = {c, d, e} 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.
Ten sam przykład c.d. 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)
x7 x3 x5 x8 x6 x9 x7 x3 x8 x5 x9 x6 x10 x10 f f 1 0 1 1 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 V U 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 0 1 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
Tablica dekompozycji dla funkcji TL27 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 000 – – – 1 – 0 – 1 – – 1 – – – – 001 0 – 0 – – – 1 – – – – 1 – – – 010 – – – – – – – – 0 – – – – – 011 – 0 – – 1 – – 1 – – – 0 – – – 100 – – – – – 1 – – – – – – 1 – – 101 – – – – – – – – – – – – 0 0 1 110 – – – – – – – – – – – – – – 1 111 – – 1 – – – – – 1 – – – – – 1 x3 x5 x6 x10 x7x8x9 1 20
0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 000 – – – 1 – 0 – 1 – – 1 – – – – x3 x5 x6 x10 001 0 – 0 – – – 1 – – – – 1 – – – 010 – – – – – – – – 0 – – – – – x7x8x9 011 – 0 – – 1 – – 1 – – – 0 – – – 1 100 – – – – – 1 – – – – – – 1 – – 101 – – – – – – – – – – – – 0 0 1 110 – – – – – – – – – – – – – – 1 111 – – 1 – – – – – 1 – – – – – 1 Tablica dekompozycji dla funkcji TL27
0 1 000 1 0 001 0 1 010 0 011 1 0 100 – 1 101 1 0 110 1 – 111 1 – Tablica dekompozycji dla funkcji TL27 H G g x7x8x9 1
Praktyczny wynik dekompozycji funkcji TL27 Tylko 2 komórki 25 kom. (FLEX) lub 27 kom. (Stratix)!!! Niesamowita skuteczność procedur dekompozycji!!! QUARTUS
c d e g1 g2 0 0 0 0 0 0 1 1 0 0 a b c d e 1 0 0 0 0 g1g2 ab 00 01 11 10 1 1 0 0 0 00 1 0 0 - 01 1 1 - - 0 0 1 0 1 10 0 0 1 - 11 0 1 - - 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 Wracamy do przykładu… 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 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 25
Przykład – funkcja h Uwaga: Przestawiliśmy wiersze 26
Przykład – realizacja 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 f b c 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 g h a b a d f f b c 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}
Przykład Rj = { ei | i < j oraz (ei,ej) E} 0,30,40,61,31,41,51,62,52,73,43,64,54,65,7 R0 = E: R1 = R2 = 0,1 R3 = 0,1,3 R4 = 1,2,4 R5 = 0,1,3,4 R6 = 2,5 R7 =
Przykład {0} R0 = R1 = {0} {1} {0,3} {1,3} {2} R2 = {0} {1} {2} {2} {0,3,4} {1,3,4} {0,1} R3 = {4,5} {1,4,5} {2,5} {0,3,4} {1,3,4} {0,1,3} R4 = {1,4,6} {0,3,4,6} {1,3,4,6} {1,4,5} {2,5} {1,2,4} R5 = {1,4,5} {2,5,7} {0,3,4,6} {1,3,4,6} {5,7} {0,1,3,4} R6 = {2,5} R7 = Rodzina MKZ