Struktury układów logicznych f Gate Array Standard Cell Programmable Logic Devices
Struktury układów logicznych Ale w dzisiejszych technologiach układy logiczne to nie tylko bramki! FPGA Coraz większego znaczenia nabierają technologie, w których podstawowym elementem konstrukcyjnym są komórki logiczne (Logic Cell) Logic Cell … a dla tych struktur omówione do tej pory metody syntezy - w szczególności minimalizacja - są nieskuteczne Field Programmable Gate Array
Dekompozycja funkcji boolowskich Dekompozycja funkcjonalna jest metodą znaną od dawna, ale jej intensywny rozwój dokonuje się od niedawna. Sytuacja jest podobna do rozwoju nowoczesnych metod minimalizacji, który to rozwój zapoczątkowany został pojawieniem się układów scalonych z milionami bramek logicznych. Jedyną różnicą jest fakt, że technologie struktur komórkowych pojawiły się znacznie później i metody ich syntezy nie nie są jeszcze wbudowane do systemów komercyjnych.
Dekompozycja funkcjonalna Skuteczność dekompozycji jest tak ogromna, że mimo jej braku w narzędziach komercyjnych należy się z tymi metodami zapoznać i stosować w praktyce projektowania układów cyfrowych za pośrednictwem narzędzi uniwersyteckich. Dekompozycję funkcji boolowskich omówimy w dwóch ujęciach: a) metoda klasyczna (znana od dawna...) b) metoda nowoczesna (dostosowana do złożoności dzisiejszych technologii)
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 B oraz o wierszach etykietowanych wartościami zmiennych funkcji f ze zbioru A B 1 01 00 001 000 x1x2x3 x4x5 A 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.
Krotność kolumn Krotność kolumn = 4 Liczbę istotnie różnych kolumn tej macierzy ze względu na ich zawartość nazywamy ich krotnością i oznaczamy symbolem (A|B). x1x2x3 x4x5 000 001 010 100 110 101 011 111 00 1 01 10 11 A B Krotność kolumn = 4
Klasyczne twierdzenie o dekompozycji Niech będzie dana funkcja boolowska f oraz podział zbioru zmiennych wejściowych funkcji f na dwa rozłączne zbiory A i B, to wówczas: f(A,B) = h(g1(B),.., gj(B),A) (A|B) 2j. B (bound set), A (free set)
Istnieje dekompozycja ! Przykład x1x2x3 x4x5 000 001 010 100 110 101 011 111 00 1 01 10 11 A B x1 x2 x3 g1 g2 1 g1g2 x4x5 00 01 10 11 0 0 1 0 1 1 0 1 1 Istnieje dekompozycja ! f = h(x4, x5, g1(x1, x2, x3), g2(x1, x2, x3))
Praktyczne znaczenie dekompozycji.. ..dla struktur FPGA x1 x2 x3 x4 x5 x1 x2 x3 x4 x5
Przykład trochę trudniejszy 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))
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 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.
Przykład - obliczanie klas zgodności Pary sprzeczne: 0,1 0,2 0,5 0,7 1,2 1,7 2,3 2,4 2,6 3,5 3,7 4,7 5,6 6,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
Przykład – obliczanie klas zgodności Stosując algorytm MKZ obliczamy rodzinę Maksymalnych Klas Zgodnych 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
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 21
Przestawiliśmy wiersze Przykład – funkcja h Uwaga: Przestawiliśmy wiersze g1g2 ab 00 01 11 10 1 - 22
Przykład – realizacja G H a b c d e G g1 g2 H h = f
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 A B
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 .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 Tylko 2 komórki
Zagadka 25 kom. (FLEX) lub 27 kom. (Stratix)!!! Na ilu komórkach zrealizuje tę funkcję amerykański system QUARTUS? QUARTUS 25 kom. (FLEX) lub 27 kom. (Stratix)!!!
Jak usprawnić obliczanie MKZ? W metodzie dekompozycji jednym z najważniejszych algorytmów jest algorytm obliczania maksymalnych klas zgodności W celu sprawniejszego obliczania MKZ wprowadzimy metodę wg par zgodnych: metodę bezpośrednią b) metodę iteracyjną
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 – obliczanie klas zgodności 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 Maksymalne klasy zgodności: 0,3,4 0,3,6 0,4,6 1,3,4 0,3,4,6 1,3,6 1,3,4,6 1,4,5 1,4,6 2,5,7 3,4,6 1,4,5 2,5,7
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 = 0,2,5
Przykład R0 = R1 = R2 = R3 = R4 = R5 = {0,1} {0,1,3} {1,2,4} R6 = {0,1,3,4} R7 = {0,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
Warto umiejętnie dobierać metodę... Pary zgodne: (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (2,3), (2,5), (2,6), (2,7), (3,4), (3,5), (3,6), (3,8), (4,6), (4,7), (4,8), (5,6), (5,7), (5,8), (6,7), (6,8), (7,8), Pary sprzeczne: (1,8) (2,4) (2,8) (3,7) (4,5) Wybór metody jest oczywisty!
W poszukiwaniu innych metod… W obliczaniu kolumn, które można „skleić” znajdują zastosowanie algorytmy kolorowania grafu. Wierzchołki grafu reprezentują kolumny tablicy dekompozycji. Niezgodne pary kolumn łączy się krawędziami. Graf niezgodności: (ki, kj) (ki, ks) (kl, kr) Pary niezgodne: ks k2 ki kj kl k1 kr kp
Przykład… Pary zgodne: Pary sprzeczne: 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,1 0,2 0,5 0,7 1,2 1,7 2,3 2,4 2,6 3,5 3,7 4,7 5,6 6,7
Graf niezgodności (0,1), (0,2), (0,5), (0,7), (1,2), (1,7), (2,3), (2,4), (2,6), (3,5), (3,7), (4,7), (5,6), (6,7) 1 2 3 4 5 6 7 i jego kolorowanie