Układy logiczne kombinacyjne sekwencyjne Układy logiczne to dział techniki cyfrowej, w której układy cyfrowe konstruowane są na poziomie bramek logicznych i przerzutników. kombinacyjne sekwencyjne Clk FF D Tadeusz Łuba ZCB
Układ sekwencyjny vs kombinacyjny UKŁAD KOMBINACYJNY Wektor wyjściowy Yt w chwili t zależy od wektora wejściowego Xt w chwili t US UK Xt, Xt-1, Xt-2, …. Xt Yt Yt Historia wejść UKŁAD SEKWENCYJNY Wektor wyjściowy Yt w chwili t zależy od sekwencji wektorów wejściowych Xt, Xt-1, Xt-2, …. w chwilach t, t-1, t-2, ……. Tadeusz Łuba ZCB Modelem układu sekwencyjnego jest AUTOMAT
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, Tadeusz Łuba ZCB c) funkcji przejść (ozn. ), d) funkcji wyjść (ozn. ).
Funkcja przejść i wyjść Funkcja przejść: : S V S Funkcja wyjść: : S V Y (tzw. automat Mealy’ego) : S Y (tzw. automat Moore’a) Automat może być zupełny lub niezupełny. Automat jest niezupełny, jeżeli funkcja nie jest określona dla całego zbioru S V, lub funkcja nie jest określona dla całego zbioru S V lub zbioru S Tadeusz Łuba ZCB
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 Tadeusz Łuba ZCB
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 Tadeusz Łuba ZCB
Przykład automatu… …Detektor sekwencji X Y X S 1 A B C 0/0 A B C 1/0 1/1 Y Tadeusz Łuba ZCB
US Układ sekwencyjny UK BP Jak zrealizować automat 01 00 11 10 x1 xn 000 001 010 Q1Q2 011 100 v1 v2 v3 Y S1 S4 ─ y2 S2 S5 S3 y1 y3 y4 01 00 11 10 W US litery są zastępowane sygnałami x1 xn y1 ym Q1 Qk q1 qk US Zakodowane litery wejściowe Zakodowane litery wyjściowe UK Zakodowane stany automatu BP Tadeusz Łuba ZCB wejście synchronizujące CLK Rzadziej są stosowane układy asynchroniczne: bez zegara układy sekwencyjne synchroniczne
Klasyfikacja układów sekwencyjnych x1 xn y1 ym Q1 Qk q1 qk UK BP CLK wejście synchronizujące Układy sekwencyjne: Synchroniczne (BP zbudowany z przerzutników synchronicznych) Tadeusz Łuba ZCB Asynchroniczne (rolę bloku pamięci spełniają opóźnienia lub przerzutniki asynchroniczne) Brak sygnału zegarowego
Synchroniczne układy sekwencyjne x1 xn y1 ym UK Q1 Qk q1 qk BP Przerzutniki CLK FF I1 I2 Q CLK Przerzutnik – to automat typu Moore’a o dwóch stanach wewnętrznych, jednym lub dwóch wejściach informacyjnych, Tadeusz Łuba ZCB dwóch wyjściach (prostym i zanegowanym) oraz wejściu synchronizującym (zegarowym).
Przerzutniki tablicą wzbudzeń, równaniem charakterystycznym. W zależności od rodzaju wejść informacyjnych wyróżniamy przerzutniki typu: D, T, SR oraz JK. FF S R Q CLK FF J K Q CLK FF T Q CLK FF D Q CLK Przerzutnik jest określony: tablicą przejść, tablicą wzbudzeń, równaniem charakterystycznym. Tadeusz Łuba ZCB
Przerzutniki – tablice przejść D Q 1 Wewnątrz tablicy zapisany jest stan następny Q’ T Q 1 F D Q CLK Q’ = D Równanie charakterystyczne SR Q 00 01 11 10 – 1 JK Q 00 01 11 10 1 Tadeusz Łuba ZCB Stan następny Q’ można przedstawić jako funkcję stanu bieżącego Q oraz wejść przerzutnika 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) Tadeusz Łuba ZCB J – wejście włączające K – wejście wyłączające
Przebiegi czasowe – przerzutnik typu D FF D Q CLK Narastające zbocze wyznacza moment zmiany CLK D D Q 1 Q Przerzutnik nie zmienia swego stanu w momencie zmiany sygnału wejściowego (tak jak by to zrobił UK). On tylko zauważa tę zmianę, a samą zmianę podejmuje w momencie wyznaczonym przez zegar. Tadeusz Łuba ZCB
Przebiegi czasowe – przerzutnik typu T FF T Q CLK CLK T T Q 1 Q Tadeusz Łuba ZCB
Przebiegi czasowe - porównanie CLK D (T) Q (D) Q (T) Tadeusz Łuba ZCB
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) Schemat logiczny CLK x Y minimalizacja v1 v2 S1 S2 y1 y2 S3 y3 kodowanie Tadeusz Łuba ZCB
Synteza kombinacyjna… Q’ Q funkcji sterujących wejściami przerzutników (funkcje wzbudzeń) X Przerzu tniki Y UK we UK wy oraz funkcji wyjściowych CLK …polega na obliczaniu… Tadeusz Łuba ZCB Moore: Mealy: Y = f(Q) Q’ = f(X,Q) Y = f(X,Q)
Przykład syntezy (detektor sekwencji) Do zakodowania trzech symboli stanów potrzebne są dwie zmienne binarne czyli wystarczą dwa przerzutniki, oznaczamy je Q1, Q0 X Q1Q0 1 A 00 01 00 B 01 11 C 11 (–) 10 – – – X S 1 A B C Kodowanie Y Samo przyporządkowanie symbolom stanów słów binarnych jest zazwyczaj dowolne, gdyż staramy się spełnić wyłącznie warunek jednoznaczności kodowania, ale… Tadeusz Łuba ZCB
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’ Tworzymy tabelki do obliczenia funkcji wzbudzeń poszczególnych przerzutników Tadeusz Łuba ZCB Tabelki są w postaci tabelek Karnaugha
Schemat logiczny detektora sekwencji x Y CLK Tadeusz Łuba ZCB Schemat logiczny rysujemy na podstawie obliczonych funkcji wzbudzeń:
Jak pracuje automat x Y Zmienił się sygnał wejściowy 1 1 1 CLK x Y CLK X S Q1Q0 1 A 00 01 00 B 01 11 C 11 (–) 10 – – – 1 1 Początkowo automat znajduje się w stanie A = 00, a na jego wejściu x jest sygnał 0. clk Tadeusz Łuba ZCB Q1 Co się dzieje dalej? Q0 22
Przykład... Realizacja T Y – jak poprzednio QQ’ T 00 01 1 10 11 X Q1Q0 01 1 10 11 X Q1Q0 1 00 01 11 10 – X Q1Q0 1 00 01 11 10 – Stosujemy te same tabelki stanu następnego, ale przekształcamy je do tabelek wzbudzeń Q1’ Q0’ X Q1Q0 1 00 01 11 10 – X Q1Q0 1 00 01 11 10 – 1 1 1 1 1 T1 T0 Tadeusz Łuba ZCB Y – jak poprzednio
Schemat logiczny detektora (T) x Y CLK Tadeusz Łuba ZCB Y – jak poprzednio Co zauważamy: funkcje wzbudzeń dla T są bardziej skomplikowane!
Przykład... Realizacja JK X Q1Q0 1 00 01 11 10 – X Q1Q0 1 00 01 11 10 – QQ’ J K 00 0 – 01 1 – 10 – 1 11 – 0 Q1’ Q0’ Q1Q0 1 00 01 11 10 – J1 K1 Q1Q0 1 00 01 11 10 – J0 K0 – – – – 1 – 1 – 1 – Tadeusz Łuba ZCB
Schemat logiczny detektora (JK) CLK Y x Tadeusz Łuba ZCB Y – jak poprzednio
Porównanie realizacji x Y CLK CLK x Y Realizacja D Realizacja T Najbardziej skomplikowana jest realizacja T Ale nie zawsze tak jest!!! CLK Y x Tadeusz Łuba ZCB Realizacja JK
Zadanie nieco trudniejsze (Licznik mod. 5 ze sterowaniem) Licznik to układ cyfrowy (blok funkcjonalny), w którym zliczane są impulsy zegarowe. Pojawienie się impulsu zwiększa lub zmniejsza zawartość licznika o 1. Czyli jest to prosty układ sekwencyjny, który musi pamiętać poprzednią zawartość reprezentowaną stanem wewnętrznym. Zaprojektować licznik, który będzie wykonywał trzy czynności: a – up – liczenie do przodu (up, down, clear) y Licznik x1 x2 b – down – liczenie do tyłu c – clear – zerowanie Tadeusz Łuba ZCB Informację o tym jaka czynność (mikrooperacja) ma być wykonywana, wprowadzana jest do licznika sygnałami x1, x2.
Zadanie: licznik mod. 5 ze sterowaniem (up, down, clear) x1 x2 clk y a – up – liczenie do przodu b – down – liczenie do tyłu c – clear – zerowanie Etap syntezy abstrakcyjnej: tablica p-w a – up – liczenie do przodu b – down – liczenie do tyłu c – clear – zerowanie X S a b c Y Q2Q1Q0 00 01 11 10 S0 S1 S4 000 001 100 S2 010 S3 011 1 KODOWANIE Tadeusz Łuba ZCB Naturalny kod binarny NKB 29
Licznik ze sterowaniem… Etap syntezy kombinacyjnej: obliczanie funkcji wzbudzeń Skomasowana tablica Karnaugha Zakodowana tablica przejść x1x2 Q2Q1Q0 00 01 11 10 000 001 011 010 110 111 101 100 Wpisywanie w standardową tablicę Karnaugh’a X Q2Q1Q0 00 01 11 10 000 001 100 010 011 001 100 000 000 010 000 000 000 100 010 000 000 011 001 000 000 --- --- --- --- 000 011 000 000 Q2’Q1’Q0’ Tadeusz Łuba ZCB Q2’Q1’Q0’
Przerzutniki D Należy tę tablicę rozpisać na poszczególne x1x2 Q2Q1Q0 00 01 11 10 000 001 100 010 011 110 --- 111 101 Przerzutniki D Kolory wyróżniają stan bieżący i następny poszczególnych przerzutników Należy tę tablicę rozpisać na poszczególne funkcje wzbudzeń Q2 Q1 Q0 Dla przerzutników typu D: Q’ = D Q2’Q1’Q0’ Q2’ Q0’ Q1’ x1x2 Q2Q1Q0 00 01 11 10 000 1 001 011 010 110 – 111 101 100 Tadeusz Łuba ZCB = D2 = D1 = D0
Licznik ze sterowaniem - przerzutniki D x1x2 Q2Q1Q0 00 01 11 10 000 1 001 011 010 110 – 111 101 100 D2 D1 D0 D2 = D1 = D0 = Tadeusz Łuba ZCB
Licznik ze sterowaniem - przerzutniki JK Tablica funkcji Q' Tablica funkcji J funkcji K Tadeusz Łuba ZCB
Licznik ze sterowaniem - JK QQ’ J K 00 0 – 01 1 – 10 – 1 11 – 0 Należy skorzystać z tabelki wzbudzeń JK x1x2 Q2Q1Q0 00 01 11 10 000 1 001 011 010 110 – 111 101 100 x1x2 Q2Q1Q0 00 01 11 10 000 1 – 001 011 010 110 111 101 100 J2 K2 Tadeusz Łuba ZCB Q2’ J2 = K2 = 1
Licznik ze sterowaniem - JK QQ’ J K 00 0 – 01 1 – 10 – 1 11 – 0 x1x2 Q2Q1Q0 00 01 11 10 000 001 1 011 010 110 – 111 101 100 x1x2 Q2Q1Q0 00 01 11 10 000 – 001 1 011 010 110 111 101 100 J1 K1 Tadeusz Łuba ZCB Q1’ J1 = K1 = x1
Licznik ze sterowaniem - JK QQ’ J K 00 0 – 01 1 – 10 – 1 11 – 0 x1x2 Q2Q1Q0 00 01 11 10 000 1 001 011 010 110 – 111 101 100 x1x2 Q2Q1Q0 00 01 11 10 000 1 – 001 011 010 110 111 101 100 J0 K0 Tadeusz Łuba ZCB Q0’ J0 = K0 = 1
...i jeszcze zakreślać pętelki!!! Nie martwmy się ... Wniosek Synteza kombinacyjna układów sekwencyjnych może być (i zazwyczaj jest) procesem żmudnym, trzeba przetwarzać ogromne tablice wypełnione zerami i jedynkami. CAD ...i jeszcze zakreślać pętelki!!! Ale nie martwmy się! Proces ten – w systemach komputerowego projektowania – jest całkowicie zautomatyzowany. Tadeusz Łuba ZCB
jedyną czynnością użytkownika jest ... zapisanie tablicy p-w w języku Nie martwmy się ... zapisanie tablicy p-w w języku AHDL lub VHDL …dalej automatycznie …aż do zaprogramowania Tadeusz Łuba ZCB
Specyfikacja automatu Nie wnikając w szczegóły takiego zapisu (będą one omawiane na wykładzie z Układów cyfrowych) trzeba podkreślić, że jest to wierne odwzorowanie tablicy przejść wyjść automatu… …na zapis w języku tablica przejśc-wyjść AHDL VHDL Odwzorowanie Tadeusz Łuba ZCB
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 Tadeusz Łuba ZCB zapisany w języku AHDL…
…lub VHDL po wprowadzeniu… ……….. Tadeusz Łuba ZCB ********************* Plik VHDL automat.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY automat IS PORT(zegar, reset : IN STD_LOGIC; X: IN STD_LOGIC_VECTOR(1 DOWNTO 0); Y : OUT STD_LOGIC); END automat; ARCHITECTURE funkcja_przejsc OF automat IS CONSTANT a : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00"; CONSTANT b : STD_LOGIC_VECTOR(1 DOWNTO 0) := "01"; CONSTANT c : STD_LOGIC_VECTOR(1 DOWNTO 0) := "11"; CONSTANT S0 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "000"; CONSTANT S1 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "001"; CONSTANT S2 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "010"; CONSTANT S3 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "011"; CONSTANT S4 : STD_LOGIC_VECTOR(2 DOWNTO 0) := "100"; SIGNAL state_reg, state_next : STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(reset, zegar) IF reset = '1' THEN state_reg <= S0; ELSIF(zegar'EVENT AND zegar = '1') THEN state_reg <= state_next; END IF; END PROCESS; PROCESS(X, state_reg) BEGIN CASE state_reg IS WHEN S0 => CASE X IS WHEN a => state_next <= S1; WHEN b => state_next <= S4; WHEN c => state_next <= S0; WHEN OTHERS => END CASE; ……….. WHEN S4 => state_next <= S3; END PROCESS; -- funkcja wyjscia Y <= '1' WHEN state_reg = S4 ELSE '0'; END funkcja_przejsc; Tadeusz Łuba ZCB 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; Tadeusz Łuba ZCB
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; Tadeusz Łuba ZCB
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. Tadeusz Łuba ZCB