360 likes | 466 Vues
Synteza układów sekwencyjnych w strukturach z (wbudowanymi) pamięciami ROM. 1. Nowoczesne struktury FPGA…. LC. ROM. FPGA. EMB. zawierają również wbudowane pamięci. oprócz komórek logicznych. 2. X. x. q. Rejestr. x + q. Pamięć ROM. y. F. Q.
E N D
Synteza układów sekwencyjnych w strukturach z (wbudowanymi) pamięciami ROM 1
Nowoczesnestruktury FPGA… LC ROM FPGA EMB zawierają również wbudowane pamięci oprócz komórek logicznych 2
X x q Rejestr x + q Pamięć ROM y F Q Realizacja automatów za pomocą pamięci ROM Takie wyposażenie umożliwia realizację automatu w strukturze… Rejestr adresowy Pamięć mikroprogramu 3
clock Rejestr Q Q Q Q D D D D 1 2 3 4 1 2 3 4 Rejestr adresowy 1 1 0 0 CLK 1 0 0 1 1100 1100 0010 4
X0 n ROM N m A Xi XN-1 m Y Pamięci typu ROM N = 2n N słów (komórek) m-bitowych W każdym komórce pamięci zapisane jest słowo m-bitowe Pamięć ROM jest uniwersalnym układem kombinacyjnym 5
0 1 2 3 4 5 6 7 Adres ROM 8 4 Pamięci typu ROM 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 6
x1x2 00 01 11 10 q1 q2 q3 S1 0 0 0 S2 0 0 1 S3 0 1 0 S4011 S5 1 0 0 S2 S1 - S4 S5 S4 - - S3 S2 S1 S3 S1 0 000 REJESTR - S2 S4 S1 1 - - - - S1 S4 S2 S3 2 010 S3 ROM 10 001 S2 25 100 S5 PRZYKŁAD x1 x2 0 0 0 0 0 0 0 0 1 0 CLK q1 q2 q3 WY 0 1 0 0 0 0 7
x q Rejestr adresowy x + q Pamięć mikroprogramu (ROM) y F Q Bardzo dobra realizacja, ale… X Niestety taka realizacja wiąże się z ogromnymi wymaganiami na pojemność pamięci 8
x q b Modyfikator adresu a c < b Rejestr (a + c) < (x + q) Pamięć mikroprogramu (ROM) y MODYFIKACJA ADRESU X Komórki logiczne Wbudowana pamięć F Q 9
X X x x q q b b Funkcja G Modyfikator adresu a a c < b c < b Rejestr Rejestr (a + c) < (x + q) (a + c) < (x + q) Pamięć mikroprogramu (ROM) Funkcja H y y F Q F Q JAK TO ZREALIZOWAĆ ??? 10
JAK TO ZREALIZOWAĆ ??? • Funkcja G reprezentuje modyfikator adresu • Funkcja H opisuje zawartość pamięci U W V LUTs G Dekompozycja Szeregowa Rejestr EABs H F = H(U, G(V W)) 11
Algorytm syntezy automatu(algebra podziałów) 1. Wybór zbioruU (wstępne kodowanie) 2. Określenie podziałów: P(U), Pg = P(V) 3. Szukanie podziaług Pg P(U) g PF (czasami istnieje potrzeba wprowadzenia zbioruW) 4. Obliczenie funkcji G oraz H 12
MODYFIKATOR ADRESU REJESTR PRZYKŁAD Wejścia (x1 ,x2) x1 x2 Odpowiedniezakodowanie stanów i wejść może pomócw podziale zmiennych wejściowych na zbiory U i V Stany ROM WY 13
PRZYKŁAD – podział tablicy x x q 1 2 1 00 01 11 10 MA S1 S1 S2 S4 - Modyfikator Adresu Rejestr S2 - - S5 S4 S4 S2 - S4 S1 ROM S3 S3 S2 S1 S3 S5 S3 S1 S4 S2 Out Kluczem do rozwiązania tego problemu jest permutacja wierszy i/lub kolumn tablicy przejść oraz odpowiedni podział tablicy przejść na podtablice z minimalna liczbą stanów następnych Przestawiliśmy wiersze S3 oraz S4 14
PRZYKŁAD – kodowanie wstępne Przyjęty podział tablicy wymusza odpowiednie kodowanie tzw. kodowanie wstępne x1,x2 q1 U = {x1,x2,q1} V = {q2,q3} Kodowanie wstępne koduje tylko jedną zmienną q, czyli q1 oraz zmienne zewnętrzne x 15
x1x2 00 01 11 10 1 2 3 - - - 4 5 6 - 7 8 9 10 11 12 13 14 15 16 PRZYKŁAD – wyznaczenie podziału P(U)|PF Uzyskane kodowanie trzeba zapisać w rachunku podziałów U = {x1,x2,q1} V = {q2,q3} q1 q2 q3 S1 0 ?? S2 0 ?? S4 0 ?? S3 1 ?? S5 1 ?? P(U)|PF = ((1)(6) ; (2) ; (3,7)(4) ; (5)(8) ; (9,13) ; (10)(14) ; (11)(15) ;(12)(16)) 16
PRZYKŁAD – wyznaczenie podziału P(V) Kodowanie wtórne U = {x1,x2,q1} V = {q2,q3} x1x2 00 01 11 10 q1 q2 q3 S1 0 S2 0 S4 0 S3 1 S5 1 • 0 0 • 0 1 • 1 0 • 1 • 0 1 1 2 3 - - - 4 5 6 - 7 8 9 10 11 12 13 14 15 16 17
00 01 11 10 1 2 3 - - - 4 5 6 - 7 8 9 10 11 12 13 14 15 16 1, 2, 3 PRZYKŁAD – wyznaczenie podziału G U = {x1, x2, q1} V = {q2, q3} P(U)|PF = ((1)(6) ; (2) ; (3,7)(4) ; (5)(8) ; (9,13) ; (10)(14) ; (11)(15) ; (12)(16)) G x1x2 6, 7,8 4, 5, 13, 14, 15, 16 9, 10, 11, 12 Przyjmujemy: W = {x1} 18
PRZYKŁAD – wyznaczenie podziału G V’ = {x1, q2, q3} P(U)|PF = ((1)(6) ; (2) ; (3,7)(4) ; (5)(8) ; (9,13) ; (10)(14) ; (11)(15) ; (12)(16)) Uwaga: jest to inne rozwiązanie niż w książce Synteza układów logicznych ale oba rozwiązania są dobre 19
x1 q2 q3 g q1q2q3 S1 0 0 0 S2 0 0 1 S4 0 1 0 S3 1 1 1 S5 1 0 1 00 01 11 10 1 2 3 - - - 4 5 6 - 7 8 9 10 11 12 13 14 15 16 PRZYKŁAD c.d. – tablica funkcji G 0 1 0 0 0 0 x1x2 0 1 0 0 0 0 1 1 20
PRZYKŁAD – schemat układu x1 q2 q3 g x1 x2 q1 G REJESTR H q1 q2 q3 21
q1 q2 q3 S1 0 0 0 S2 0 0 1 S4 0 1 0 S3 1 1 1 S5 1 0 1 00 01 11 10 1 2 3 - - - 4 5 6 - 7 8 9 10 11 12 13 14 15 16 PRZYKŁAD – tablica funkcji H x1x2 P(U) = (1,6 ; 2 ; 3,4,7 ; 5,8 ; 9,13 ; 10,14 ; 11,15;12,16) P(U) G = (1; 6; 2; 3,7; 4; 5; 8; 9; 13; 10; 14; 11; 15; 12; 16) 22
q1 q2 q3 S1 0 0 0 S2 0 0 1 S4 0 1 0 S3 1 1 1 S5 1 0 1 x1x2 00 01 11 10 1 2 3 - - - 4 5 6 - 7 8 9 10 11 12 13 14 15 16 PRZYKŁAD – tablica funkcji H P(U) G = (1; 6; 2; 3,7; 4; 5; 8; 9; 13; 10; 14; 11; 15; 12; 16) 1 6 2 3,7 23
PRZYKŁAD – schemat układu x1 q2 q3 g x1 x2 q1 G REJESTR ROM Tablica H określa zawartość pamięci ROM q1 q2 q3 24
x x q q q 2 3 1 1 2 UMA Rejestr ROM Out PRZYKŁAD - ten sam automat… …ale w innej strukturze I1 I2 I3 I4 S1 S1 S2 S4 - S2 - - S5 S4 S3 S3 S2 S1 S3 S4 S2 - S4 S1 Teraz są dwa wyjścia z UMA S5 S3 S1 S4 S2 Konsekwencją takiego podziału jest: U = {q1,q2} V = {q3, x1,x2} 25
1 2 3 - - - 4 5 6 7 8 9 10 - 11 12 13 14 15 16 PRZYKŁAD c.d. - wyznaczenie P(U) Kodowanie wstępne U = {q1,q2} V = {q3, x1,x2} x1x2 q1 q2 q3 S1 0 0 ? S2 0 0 ? S3 0 1 ? S4 1 0 ? S5 1 1 ? 00 01 11 10 I1 I2 I3 I4 S1 S1 S2 S4 - S2 - - S5 S4 S3 S3 S2 S1 S3 S4 S2 - S4 S1 S5 S3 S1 S4 S2 = P(U) P(U)|PF= 26
1 2 3 - - - 4 5 6 7 8 9 10 - 11 12 13 14 15 16 PRZYKŁAD c.d. - wyznaczenie P(V) U = {q1,q2} V = {q3, x1,x2} Kodowanie wtórne x1x2 q1 q2 q3 S1 0 00 S2 0 01S3 0 10 S4 1 01 S5 1 11 00 00 01 11 10 27
x1x2 00 01 11 10 1 2 3 - - - 4 5 6 7 8 9 10 - 11 12 13 14 15 16 Zakodowaliśmy bloki podziału G PRZYKŁAD c.d. – obliczenie G q1q2q3 000 001 010 101 111 P(U)|PF= 11 00 01 10 G (1) (3,5) (2) (4) 28
PRZYKŁAD c.d. – tablice dla UMA i ROM x1 x2 q3 q1q2 G g1 g2 REJESTR H q1 q2 q3 29
x1x2 00 01 11 10 1 2 3 - - - 4 5 6 7 8 9 10 - 11 12 13 14 15 16 g1 q3 x1 x2 g2 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 PRZYKŁAD c.d. – tablice dla UMA i ROM q1q2q3 000 001 010 101 111 11 00 01 10 G 30
x1x2 00 01 11 10 I1 I2 I3 I4 1 2 3 - - - 4 5 S1 S2 S4 - 6 7 8 9 - - S5 S4 10 - 11 12 S3 S2 S1 S3 13 14 15 16 S2 - S4 S1 S3 S1 S4 S2 q1 q2 g1 g2 q1 q2 q3 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 PRZYKŁAD c.d. – tablice dla UMA i ROM q1q2q3 000 001 010 101 111 ( = P(U) 11 00 01 10 G … P(U) G = 31
1 2 3 - - - 4 5 6 7 8 9 10 - 11 12 13 14 15 16 Jeszcze inna struktura (najlepsza) U = {q1,q2, x1 } V = {q3, x2} x1x2 q1 q2 q3 S1 0 0 0 S2 0 0 1 S3 0 1 1 S4 1 0 1 S5 1 1 0 00 01 11 10 I1 I2 I3 I4 S1 S1 S2 S4 - S2 - - S5 S4 S3 S3 S2 S1 S3 S4 S2 - S4 S1 S5 S3 S1 S4 S2 P(U) = (1,2 ; 3,4,5 ; 6,7 ; 8,9 ; ... 32
PRZYKŁAD – schemat układu x2 q3 g q1q2x1 UMA REJESTR ROM q1 q2 q3 Można uzyskać UMA o dwóch wejściach i jednym wyjściu 33
Implementacja automatu wukładzie EPF 10K10 3 x EAB (2048 bitów) 576 Komórek logicznych • Implementation not possible – not enough memory recourses • Implementation not possible – not enough CLB recourses 35
ODWZOROWANIE UKŁADU TBK tbk: 16 384 bitów lub 759 komórek log. tbk: 4096 bitów oraz 333 komórek log. Po dekompozycji Przed dekompozycją 36