Układy sekwencyjne - pojęcie automatu v2 v1 v V y Y v3 S2 /Y1 S1 /Y2 v2 v1 v3 v1 v2 v3 Y3 Y1 Y2 v1 v3 v1 S3 /Y3 v2 jest definiowany przez określenie: a) zbioru liter wejściowych V (X) i wyjściowych Y, b) zbioru stanów wewnętrznych S, c) funkcji przejść (ozn. ), d) funkcji wyjść (ozn. ).
Funkcja przejść i wyjść Funkcja przejść: : S X S Funkcja wyjść: : S X Y (tzw. automat Mealy’ego) : S Y (tzw. automat Moore’a) Automat może być zupełny lub niezupełny
Specyfikacja automatu Tablica przejść-wyjść automatu: Moore’a Mealy’ego v1 v2 v3 y S1 S2 S3 y2 y1 y3 v1 v2 S1 S2 y1 y2 S3 y3 ... i graf Mealy’ego: Moore’a: stan wejście/wyjście stan/ wyjście wejście
Specyfikacja automatu Tablica przejść-wyjść automatu: Moore’a Mealy’ego v1 v2 v3 y S1 S2 S3 y2 y1 y3 v1 v2 S1 S2 y1 y2 S3 y3 ... i graf /y2 Moore’a Mealy’ego
wejście synchronizujące Układ sekwencyjny Zakodowane litery wejściowe Zakodowane litery wyjściowe x1 xn y1 ym Q1 Qk q1 qk US UK układ kombinacyjny BP blok pamięci Zakodowane stany automatu CLK wejście synchronizujące Układy sekwencyjne: Synchroniczne (BP zbudowany z przerzutników synchronicznych) Asynchroniczne (BP realizują opóźnienia lub przerzutniki asynchroniczne)
Synchroniczne układy sekwencyjne x1 xn y1 ym UK Q1 Qk q1 qk BP Przerzutniki CLK
Przerzutniki Przerzutnik FF I1 I2 Q CLK – to automat typu Moore’a o dwóch stanach wewnętrznych, jednym lub dwóch wejściach informacyjnych, dwóch wyjściach (prostym i zanegowanym) oraz wejściu synchronizującym (zegarowym). W zależności od rodzaju wejść informacyjnych wyróżniamy przerzutniki typu: D, T, SR oraz JK. FF J K Q CLK FF S R Q CLK FF D Q CLK FF T Q CLK
Przerzutniki Przerzutnik jest określony: tablicą przejść, FF I1 I2 Q CLK Przerzutnik jest określony: tablicą przejść, równaniem charakterystycznym, tablicą wzbudzeń.
Przerzutniki – tablice przejść Q 1 D Q 1 Q’ = D SR Q 00 01 11 10 – 1 JK Q 00 01 11 10 1 Równanie charakterystyczne: Q’ = f(I1,I2,Q)
Przerzutniki – tablice wzbudzeń Q Q’ D T S R J K 00 0 – 01 1 1 0 1 – 10 0 1 – 1 11 – 0 D – delay T – trigger S – Set (wejście włączające) R – Reset (wejście wyłączające) J – wejście włączające K – wejście wyłączające
Przebiegi czasowe – przerzutnik typu D FF D Q CLK CLK D D Q 1 Q
Przebiegi czasowe – przerzutnik typu T FF T Q CLK CLK T T Q 1 Q
Przebiegi czasowe - porównanie CLK D (T) Q (D) Q (T)
Synteza układów sekwencyjnych Etapy syntezy: synteza abstrakcyjna (utworzenie tablicy przejść-wyjść) redukcja (minimalizacja) liczby stanów kodowanie stanów, liter wejściowych i wyjściowych synteza kombinacyjna (obliczanie funkcji wzbudzeń przerzutników i funkcji wyjściowych) S1 S2 S3 v1 v2 v3 /Y2 /Y1 /Y3 CLK x Y minimalizacja v1 v2 S1 S2 y1 y2 S3 y3 kodowanie
Synteza kombinacyjna… Y = f(X,Q) (Mealy) Q’ Q X Przerzu tniki Y UK we UK wy Obliczanie funkcji sterujących wejściami przerzutników (funkcje wzbudzeń) Obliczanie funkcji wyjściowych CLK Y = f(Q) (Moore) Q’ = f(X,Q)
Przykład syntezy (detektor sekwencji) Wystarczą dwa przerzutniki X S Q1Q0 1 A 00 01 00 B 01 11 C 11 (–) 10 – – – X S 1 A B C Kodowanie Y Na razie staramy się spełnić wyłącznie warunek jednoznaczności kodowania
Obliczanie funkcji wzbudzeń i wyjściowych X S Q1Q0 1 A 00 01 00 B 01 11 C 11 (–) 10 – – – QQ’ D 00 01 1 10 11 Y X Q1Q0 1 00 01 11 10 – D1=Q1’ D0=Q0’
Schemat logiczny detektora sekwencji x Y
Przykład... Realizacja T Y – jak poprzednio QQ’ T 00 01 1 10 11 X Q1Q0 1 00 01 11 10 – X Q1Q0 1 00 01 11 10 – QQ’ T 00 01 1 10 11 Q1’ Q0’ X Q1Q0 1 00 01 11 10 – X Q1Q0 1 00 01 11 10 – 1 1 1 1 1 T1 T0 Y – jak poprzednio
Schemat logiczny detektora (T) x Y CLK Y – jak poprzednio
Schemat logiczny detektora (JK) CLK Y x Y – jak poprzednio
CAD Nie martwmy się ... Synteza kombinacyjna układów sekwencyjnych może być (i zazwyczaj jest) procesem żmudnym, trzeba przetwarzać ogromne tablice wypełnione zerami i jedynkami. CAD Ale nie martwmy się! Proces ten – w systemach komputerowego projektowania – jest całkowicie zautomatyzowany.
jedyną czynnością użytkownika jest ... Nie martwmy się ... zapisanie tablicy p-w w języku AHDL lub VHDL …dalej automatycznie …aż do zaprogramowania
Specyfikacja automatu Nie wnikając w szczegóły takiego zapisu (będą one omawiane na innych wykładach) trzeba podkreślić, że jest to wierne odwzorowanie tablicy przejść wyjść automatu. tablica przejśc-wyjść AHDL VHDL Odwzorowanie
Na przykład licznik ze sterowaniem... TABLE % current current next next % % state input state output % s, v[] => s, y; s0, B"00„ => s1, 0; s0, B"01„ => s4, 0; s0, B"1X„ => s0, 0; s1, B"00„ => s2, 0; s1, B"01„ => s0, 0; s1, B"1X„ => s0, 0; s2, B"00„ => s3, 0; s2, B"01„ => s1, 0; s2, B"1X„ => s0, 0; s3, B"00„ => s4, 0; s3, B"01„ => s2, 0; s3, B"1X„ => s0, 0; s4, B"00„ => s0, 1; s4, B"01„ => s3, 1; s4, B"1X„ => s0, 1; END TABLE; X S 00 01 10 Y S0 S1 S4 S2 S3 1 zapisany w języku AHDL, po wprowadzeniu...
…specyfikacji do edytora tekstowego TABLE % current current next next % % state input state output % s, v[] => s, y; s0, B"00„ => s1, 0; s0, B"01„ => s4, 0; s0, B"1X„ => s0, 0; s1, B"00„ => s2, 0; s1, B"01„ => s0, 0; s1, B"1X„ => s0, 0; s2, B"00„ => s3, 0; s2, B"01„ => s1, 0; s2, B"1X„ => s0, 0; s3, B"00„ => s4, 0; s3, B"01„ => s2, 0; s3, B"1X„ => s0, 0; s4, B"00„ => s0, 1; s4, B"01„ => s3, 1; s4, B"1X„ => s0, 1; END TABLE;
i uruchomieniu kompilatora… ...zostanie automatycznie zrealizowany bez udziału projektanta. EPM7032 q0 _EQ001 = !q0 & q1 & !X1 & X2 # q2 & !X1 & X2 # !q0 & !q2 & !X1 & !X2; q1 _EQ002 = q2 & !X1 & X2 # q0 & q1 & !X1 & X2 # !q0 & q1 & !q2 & !X1 & !X2 # q0 & !q1 & !q2 & !X1 & !X2; q2 _EQ003 = !q0 & !q1 & !q2 & !X1 & X2 # q0 & q1 & !q2 & !X1 & !X2;
Wniosek Skoro kompilator oblicza funkcje wzbudzeń automatycznie, to umiejętność ta nie jest w dzisiejszych czasach sprawą najważniejszą. Lepiej skoncentrować się na tych metodach i procedurach syntezy logicznej, które nie są jeszcze wbudowane do systemów komercyjnych.