Synteza układów sekwencyjnych z (wbudowanymi) pamięciami ROM w strukturach z (wbudowanymi) pamięciami ROM 1
Nowoczesne struktury FPGA… EMB ROM LC oprócz komórek logicznych zawierają również wbudowane pamięci 2
Realizacja automatów za pomocą pamięci ROM Takie wyposażenie umożliwia realizację automatu w strukturze… X F Q Pamięć ROM Rejestr q x x + q y Rejestr adresowy Pamięć mikroprogramu 3
Rejestr adresowy i pamięć ROM N m X0 Xi XN-1 n Y m 1100 1100 Rejestr clock 0010 4
PRZYKŁAD x1 x2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 q1 q2 q3 S1 0 0 0 S2 0 0 1 S3 0 1 0 S4 0 1 1 S5 1 0 0 - S1 10 11 01 00 x1x2 S4 S2 S5 S3 CLK REJESTR 000 (S1) - - - - 010 (S3) 001 (S2) … ... ROM 1 2 .. 8 .. q1 q2 q3 WY 0 0 1 0 1 0 0 0 0 5
Bardzo dobra realizacja, ale… X F Q Pamięć mikroprogramu (ROM) Rejestr adresowy q x x + q y Niestety taka realizacja wiąże się z ogromnymi wymaganiami na pojemność pamięci 6
UKŁADY MIKROPROGRAMOWANE Takt RA ROM A UO UA X X Multiplekser warunków 7
MODYFIKACJA ADRESU Komórki logiczne Wbudowana pamięć X Pamięć mikroprogramu (ROM) Rejestr Modyfikator adresu q x a b c < b (a + c) < (x + q) y Komórki logiczne Wbudowana pamięć F Q 8
JAK TO ZREALIZOWAĆ ??? X F Q Funkcja H X F Q Pamięć mikroprogramu Rejestr Funkcja G q x a b c < b (a + c) < (x + q) y X F Q Pamięć mikroprogramu (ROM) Rejestr Modyfikator adresu q x a b c < b (a + c) < (x + q) y 9
Dekompozycja Szeregowa Funkcja G reprezentuje modyfikator adresu JAK TO ZREALIZOWAĆ ??? Funkcja G reprezentuje modyfikator adresu Funkcja H opisuje zawartość pamięci U W V LUTs G Dekompozycja Szeregowa Rejestr H EMB F = H(U, G(V W)) 10
Algorytm syntezy automatu (algebra podziałów) 1. Wybór zbioru U (wstępne kodowanie) 2. Określenie podziałów: P(U), Pg = P(V) 3. Szukanie podziału g Pg P(U) g PF (czasami istnieje potrzeba wprowadzenia zbioru W) 4. Obliczenie funkcji G oraz H 11
PRZYKŁAD Wejścia (x1 , x2) x1 x2 00 01 11 10 Wyj-ścia S1 S2 S4 - W Y J Ś C I A S5 S3 Stany MODYFIKATOR ADRESU REJESTR ROM Odpowiednie zakodowanie stanów i wejść może pomóc w podziale zmiennych wejściowych na zbiory U i V WY 12
Przestawiliśmy wiersze S3 oraz S4 PRZYKŁAD c.d. 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 00 01 11 10 S1 S2 S4 - S5 S3 Przestawiliśmy wiersze S3 oraz S4 13
PRZYKŁAD c.d. Przyjęty podział tablicy wymusza odpowiednie kodowanie tzw. kodowanie wstępne oraz pozwala wyznaczyć zbiory U i V x1x2 00 01 11 10 S1 0 S1 S2 S4 - S2 0 S5 S4 0 S3 1 S3 S5 1 U = {x1,x2,q1} V = {q2,q3} Kodowanie wstępne koduje tylko jedną zmienną q, czyli q1 oraz zmienne zewnętrzne x 14
PRZYKŁAD c.d. Na tej podstawie możemy określić strukturę, czyli schemat blokowy realizowanego automatu. U = {x1,x2,q1} V = {q2,q3} Modyfikator Adresu MA ROM Rejestr x x 1 2 Out q 1 00 01 11 10 S1 S2 S4 - S5 S3 15
Uzyskane kodowanie trzeba zapisać w rachunku podziałów PRZYKŁAD c.d. Uzyskane kodowanie trzeba zapisać w rachunku podziałów U = {x1,x2,q1} V = {q2,q3} 10 11 01 00 x1x2 q1 q2 q3 S1 0 ? ? S2 0 ? ? S4 0 ? ? S3 1 ? ? S5 1 ? ? 00 01 11 10 S1 0 S1 S2 S4 - S2 0 S5 S4 0 S3 1 S3 S5 1 - 3 2 1 5 4 - 8 7 - 6 16 15 14 13 12 11 10 9 P(U)|PF = ((1)(6) ; (2) ; (3,7)(4) ; (5)(8) ; (9,13) ; (10)(14) ; (11)(15) ;(12)(16)) 16
PRZYKŁAD c.d. Kodowanie wtórne U = {x1,x2,q1} V = {q2,q3} 00 01 11 10 q1 q2 q3 S1 0 S2 0 S4 0 S3 1 S5 1 0 0 0 1 1 0 1 1 2 3 - - - 4 5 6 - 7 8 9 10 11 12 13 14 15 16 17
PRZYKŁAD c.d. 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)) 10 11 01 00 G x1x2 8 7 - 6 16 15 14 13 12 11 10 9 5 4 3 2 1 3 1, 2, 6, 7, 8 4, 5, 13, 14, 15, 16 9, 10, 11, 12 Przyjmujemy: W = {x1} 18
Synteza układów logicznych PRZYKŁAD c.d. 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
PRZYKŁAD c.d. – tablica funkcji G 1 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 8 7 - 6 16 15 14 13 12 11 10 9 5 4 3 2 1 01 00 0 0 0 x1x2 1 0 0 0 0 1 1 20
PRZYKŁAD c.d. x1 q2 q3 g x1 x2 q1 G REJESTR H q1 q2 q3 21
PRZYKŁAD c.d. – tablica funkcji H q1 q2 q3 S1 0 0 0 S2 0 0 1 S4 0 1 0 S3 1 1 1 S5 1 0 1 8 7 - 6 16 15 14 13 12 11 10 9 5 4 3 2 1 01 00 I1 I2 I3 I4 S1 S2 S4 - S5 S3 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
PRZYKŁAD c.d. – tablica funkcji H q1 q2 q3 S1 0 0 0 S2 0 0 1 S4 0 1 0 S3 1 1 1 S5 1 0 1 8 7 - 6 16 15 14 13 12 11 10 9 5 4 3 2 1 01 00 x1x2 I1 I2 I3 I4 S1 S2 S4 - S5 S3 P(U) G = (1; 6; 2; 3,7; 4; 5; 8; 9; 13; 10; 14; 11; 15; 12; 16) x1 x2 q1 g 1 S1 1 S2 6 1 S2 2 1 3,7 S4 23
Tablica H określa zawartość pamięci ROM PRZYKŁAD c.d. x1 q2 q3 g x1 x2 q1 G REJESTR ROM Tablica H określa zawartość pamięci ROM q1 q2 q3 24
PRZYKŁAD - ten sam automat… …ale w innej strukturze UMA ROM Rejestr x x 1 2 Out q 1 3 2 U = {q1,q2} V = {q3, x1,x2 } I1 I2 I3 I4 S1 S1 S2 S4 - S2 - - S5 S4 Teraz są dwa wyjścia z UMA S3 S3 S2 S1 S3 S4 S2 - S4 S1 S5 S3 S1 S4 S2 25
PRZYKŁAD c.d. - wyznaczenie P(U) U = {q1,q2} V = {q3, x1,x2 } Kodowanie wstępne 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 - - 3 2 1 S2 - - S5 S4 5 4 - 9 8 7 6 S3 S3 S2 S1 S3 16 15 14 13 12 11 - 10 S4 S2 - S4 S1 S5 S3 S1 S4 S2 P(U) = P(U)|PF= 26
PRZYKŁAD c.d. - wyznaczenie P(V) U = {q1,q2} V = {q3, x1,x2 } Kodowanie wtórne x1x2 q1 q2 q3 S1 0 0 0 S2 0 0 1 S3 0 1 0 S4 1 0 1 S5 1 1 1 00 00 01 11 10 - 3 2 1 5 4 - 9 8 7 6 16 15 14 13 12 11 - 10 27
PRZYKŁAD c.d. – obliczenie G 9 8 7 6 16 15 14 13 12 11 - 10 5 4 3 2 1 01 00 x1x2 q1q2q3 000 001 010 101 111 P(U)|PF= 00 01 10 11 G (1) (3,5) (2) (4) 28
PRZYKŁAD c.d. – tablice dla UMA i ROM x1 x2 q3 q1 q2 G g1 g2 REJESTR H q1 q2 q3 29
PRZYKŁAD c.d. – tablice dla UMA i ROM 9 8 7 6 16 15 14 13 12 11 - 10 5 4 3 2 1 01 00 x1x2 1 g1 x1 q3 g2 x2 q1q2q3 000 001 010 101 111 00 01 10 11 G 30
PRZYKŁAD c.d. – tablice dla UMA i ROM 9 8 7 6 16 15 14 13 12 11 - 10 5 4 3 2 1 01 00 x1x2 S2 S4 S1 S3 - S5 I4 I3 I2 I1 q1q2q3 1 g2 q2 q1 q1 q2 q3 g1 0 0 0 1 0 1 0 0 1 000 001 010 101 111 ( P(U) = 00 01 10 11 G … P(U) G = 31
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 - - 3 2 1 S2 - - S5 S4 5 4 - 9 8 7 6 S3 S3 S2 S1 S3 16 15 14 13 12 11 - 10 S4 S2 - S4 S1 S5 S3 S1 S4 S2 P(U) = (1,2 ; 3,4,5 ; 6,7 ; 8,9 ; ... 32
PRZYKŁADOWE BENCHMARKI TEST Wejścia Wyjścia Stany d14 3 5 7 cse 16 ex4 6 9 14 mark1 15 s1 8 20 tbk 32 sse 33
Implementacja automatu w ukł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 34
ODWZOROWANIE UKŁADU TBK tbk: 16 384 bitów lub 759 komórek log. tbk: 4093 bitów oraz 333 komórek log. Przed dekompozycją Po dekompozycji 35