{0, 1}, A
Transkrypt
{0, 1}, A
3.6. AUTOMATY ELEMENTARNE - PRZERZUTNIKI Przerzutnik-automat elementarny o pamięci jednego bitu: A={0, 1}, A=<Q>. Dla maksymalnej prostoty przerzutniki są automatami Moore'a o jednym wyjściu y = Q. Aby dany automat mógł realizować dowolny blok δ musi mieć tzw. pełny system przejść: dla każdej pary stanów (Ai, Aj) musi istnieć pobudzenie realizujące przejście Ai (w grafie automatu odpowiada temu występowanie krawędzi Ai Aj Aj). W przypadku przerzutnika oznacza to, że jego graf musi mieć postać: 3.6.1. Przerzutniki o sygnale wejściowym jednobitowym X= <x>, X={0, 1}. Ponieważ rozważamy automaty wyłącznie deterministyczne (odwzorowanie δ jest funkcją), należy pamiętać o warunkach: X00 ≠ X0l oraz Xl0 ≠ Xll. Możliwe są tylko cztery przypadki (a) - (d) przyporządkowania pobudzeniom Xij sygnałów jednobitowych: X QQ’ (a) (b) (c) (d) X00 00 0 0 1 1 X01 01 1 1 0 0 X10 10 0 1 1 0 X11 11 1 0 0 1 1 Ponieważ (c) jest prostą negacją (a), a (d) negacją (b), tak naprawdę są to tylko dwa przypadki: (a) Q' = x (powtórzenie sygnału WE) - tzw. przerzutnik typu D, (d) Q' = /Q dla x = 1 lub Q' = Q dla x = 0 - tzw. przerzutnik typu T. 3.6.2. Przerzutniki o sygnale wejściowym dwubitowym X = < x1 x2 > X={00, 01, 10, 11, 0-, 1-, -0, -1}, |X| =8. Pamiętając o warunku X00 ≠ X0l i Xl0 ≠ Xll liczba możliwych kombinacji wynosi teraz: (7 ⋅ 8) x (7 ⋅ 8) = 562 =3136. Gdzieś wśród nich są znane nam już dwa przerzutniki... X QQ’ X00 (..) (RS) (/R/S) 00 -0 -1 X01 01 01 10 X10 10 10 01 X11 11 0- 1- (..) <RS> - przerzutnik RS na bramkach NOR (WE aktywne logicznym „1”), </R/S> - przerzutnik RS na bramkach NAND (WE aktywne logicznym „0”). Obok RS, ważnym przerzutnikiem o dwóch sygnałach sterujących jest przerzutnik typu JK - przedstawimy go niebawem. 2 3.6.3. Wyprowadzenia przerzutników Ogólnie: Q,/Q - wyjścia stanu, zwykle dostępne w postaci komplementarnej (bo takie są w podstawowej strukturze przerzutnika RS...), niekiedy /Q jest pomijane dla zmniejszenia liczby wyprowadzeń. Clk - wejście synchronizujące; sposób pracy („dwuzboczowy” lub w pełni synchroniczny) zależy od typu przerzutnika. Oznaczone negacją (kółko), jeśli przełączenie następuje przy zboczu opadającym (jak np. w przerzutnikach Master- Slave!). We1, We2 - wejścia pobudzające, jak np. R S; w niektórych rodzajach tylko jedno (np. w D lub T). Tzw. wejścia synchroniczne - bo zmieniają stan przerzutnika synchronicznie do przebiegu Clk. R, S - asynchroniczne wejścia kasujące (reset) i ustawiające (set); stan aktywny na jednym z nich wymusza natychmiast (niezależnie od fazy zegara, a więc asynchronicznie) odpowiednią wartość stanu Q. Najczęściej zanegowane, tzn. aktywne logicznym „0”, zwykle mają priorytet większy niż WE sterujące synchroniczne. Jednoczesny stan aktywny obu sygnałów R i S zabroniony, zazwyczaj powoduje jednakowy stan na wyjściach Q i /Q (mechanizm analogiczny jak analizowany wcześniej dla przerzutnika RS). 3 3.6.4. Typy przerzutników 3.6.4.1. Przerzutnik D Nazwa: D = ang. delay. Symbol oraz tabela przejść w postaci Karnaugh: D 0 1 0 0 1 1 0 1 Q Q' Funkcja charakterystyczna przerzutnika: Q' =D. Przerzutnik o najprostszej zasadzie pracy, tablica przejść automatu to wprost tablica wzbudzeń dla przerzutników tego typu. Podtrzymanie stanu Q' = Q wymaga pętli sprzężenia zwrotnego realizacje automatów zwykle nieco bardziej złożone. Istnieje elegancka realizacja tego typu przerzutnika w postaci układu w pełni synchronicznego (synchronizacja zboczem rosnącym) - często ona stanowi podstawę konstruowania przerzutników innego typu. 3.6.4.2.Przerzutnik T Nazwa: T = ang. trigger. Symbol oraz tabela przejść: T 0 1 0 0 1 1 1 0 Q Q' Funkcja charakterystyczna przerzutnika: Q'=Q/T+/QT = Q ⊕ T. Podtrzymanie stanu wymaga T = 0 => brak pętli sprzężenia zwrotnego, zwykle prostsze realizacje automatów niż przy użyciu przerzutników D. 4 3.6.4.3.Przerzutnik RS Nazwa: R=Reset, S=Set. Symbol oraz tabela przejść: RS 00 01 11 10 0 0 1 ? 0 1 1 1 ? 1 Q Q' ? - stany niedozwolone, bo jednoczesne polecenie set i reset. Funkcja charakterystyczna przerzutnika: Q' =S+Q/R. 3.6.4.4.Przerzutnik JK Uogólnienie przerzutnika RS, w którym jeśli oba wejścia są aktywne (co było zabronione dla RS), przerzutnik zmienia swój stan na przeciwny. Rola wejść: J = Set, K = Reset. Symbol oraz tabela przejść: JK 00 01 11 10 0 0 0 1 1 1 1 0 0 1 Q Q' Funkcja charakterystyczna przerzutnika: Q'=Q/K + /QJ. Przerzutnik najbardziej uniwersalny, dzięki nadmiarowości WE zwykle prowadzi do najprostszych realizacji automatów. 5 3.6.5. Macierze wzbudzeń Zestawienie pobudzeń realizujących w danym przerzutniku wszystkie cztery zmiany stanu Q Q': 0 0, 0 1, 1 0 oraz 1 1. Wyprowadzenie dla RS oraz JK: QQ’ 00 RS 00, 10 RS JK -0 00, 01 0- 01 01 10, 11 1- 10 10 01, 11 -1 00, 10 -0 11 00, 0l 0- 00 01 11 10 0 0 1 ? 0 1 1 1 ? 1 Q Q' JK 00 01 11 10 0 0 0 1 1 1 1 0 0 1 Q Q' Wynik: QQ’ D T JK SR 00 0 0 0- 0- 01 1 1 1- 10 10 0 1 -1 01 11 1 0 -0 -0 3.6.6. Zmiana typu przerzutnika Wyjściowym przerzutnikiem jest RS (dwie bramki NAND lub NOR...) a) RS D 6 Np. latch D (idea układu TTL SN7475): b)RS JK: 00 01 11 0 0 0 1 1 0 JK Q QQ’ RS 10 00 -0 1 1 01 01 0 1 10 10 11 0- Q' JK 00 01 11 10 0 -0 -0 01 01 1 0- 10 10 0- Q R = QK S = /QJ RS 7 Np. JK master-slave (idea układów TTL SN7472, SN7473...): c) D JK JK 00 01 11 10 0 0 0 1 1 1 1 0 0 1 Q Q' JK 00 01 11 10 0 0 0 1 1 1 1 0 0 1 Q QQ’ d 00 0 01 1 10 0 11 1 => D=Q/K+/QJ D 8 d) D T Q' = Q ⊕ T, więc: e) JK T Z idei pracy JK: f) JK D Identycznie jak RS D: 9 3.6.7. Przerzutnik typu D wyzwalany zboczem (TTL SN7474) Idea: automat asynchroniczny generujący wzbudzenia przerzutnika RS: Trzy stany automatu wzbudzającego: H (hold) - nie zmieniaj stanu; wyjście r'=s'=1, S (set) - ustaw Q = 1; r'=1, s'=0, R (reset) - skasuj Q = 0; r' = 0, s' = 1. automat Moore'a 1) Alfabety: A = {H, S, R} X = <C,D> Y=<r', s’>, Y= {Ol, 10, 11 }; 00 ∉ Y! 2) Graf automatu: 10 3) Synteza sygnałów r', s': Przyjmujemy, że stan sygnałów r's' będzie jednocześnie reprezentować stan automatu (tzw. decyzja o kodowaniu stanów; w sposób nieformalny przeprowadzamy tu syntezę automatu asynchronicznego): H = 11, S = 10, R = 01; CD A CD 00 0l 11 l0 H H H S R S H H S S R H H R R A' CD 01 11 10 -- -- -- -- (R) 01 11 11 01 01 (H) 11 11 11 10 01 (S) 10 11 11 10 10 r’s’ CD 00 01 11 10 - - - - (R) 01 1 1 1 1 0 (H) 11 1 1 0 1 1 (S) 10 1 1 0 0 00 01 11 10 - - - - (R) 01 1 1 0 0 (H) 11 1 1 1 (S) 10 1 1 1 r’s’ 00 00 r’s’ 00 r’s’ 00 r’s’ r’ r’ = /c + /s’ + r’D r’ = /c + /r’ + s’/D r = c s’ r’ D r = c r’ s’ /D 4) Wynik syntezy: 11 Mechanizm przełączania się układu: Clk= 0 ⇒ s' = r' = 1 stale, niezależnie od zmian sygnału U; przerzutnik nie przełącza się. Gdy Clk zmienia się z 0 na 1: a) D = 1 ⇒ a = 1 ⇒ s': 1 0 ⇒ Q 1, /Q 0 oraz... zamrożenie a = 1 niezależnie od dalszych zmian D! b) D = 0 ⇒ b = 1 ⇒ r':1 0 ⇒ /Q 1, Q 0 oraz... zamrożenie b = 1 niezależnie od dalszych zmian D ! Gdy Clk zmienia się z 1 na 0: s' 1, r' 1, wyjściowy przerzutnik RS zamiera. Układ SN7474 - synchroniczny przerzutnik D w rodzinie TTL: Uproszczenie układu dzięki przekształceniu równania s': s'=/c + /r '+ s'/D = /c + /r'(1 + s ')+s'/D = /c + /r' + /r's' + s'/D = = /c + /r' + s'(/r' + /D) = /c + /r' + s' /(r' D) = /c + /r' + s' b =/( c r' /(s' b)) => eliminacja negatora /D. 12 3.7. SYNTEZA STRUKTURALNA AUTOMATU Cel syntezy strukturalnej: zaprojektowanie układu cyfrowego (bramki + przerzutniki), realizującego zadany automat abstrakcyjny. PEŁNY PROCES SYNTEZY AUTOMATU SEKWENCYJNEGO: 1. Synteza właściwa - utworzenie automatu pierwotnego, realizującego określone zadanie. 2. Minimalizacja liczby stanów w automacie pierwotnym. Synteza abstrakcyjna 3. Kodowanie stanów - przypisanie stanom wewnętrznym wektorów zmiennych stanu (A ↔ <Ql Q2 ... Qk>); powstają zakodowane tablice przejść/wyjść. 4. Synteza kombinacyjna - wybranie typu przerzutnika, utworzenie tabel wzbudzeń przerzutników automatu Synteza strukturalna na podstawie zakodowanej tabeli przejść, minimalizacja funkcji wzbudzeń, a także funkcji WY λ(). 3.7.1. Główne kroki syntezy • Dla przypomnienia - struktury automatów Mealy'ego i Moore'a: Kroki syntezy strukturalnej: 1. Dane WE: alfabety X, Y, A, funkcje δ i λ. (z syntezy abstrakcyjnej). 2. Kodowanie zbioru stanów wewnętrznych A: - decyzja o liczbie przerzutników k, k ≥ log2|A|, - przypisanie stanom A wektorów bitowych <Ql Q2 ... Qk>. 3. Przepisanie tablic: przejść i wyjść w postaci zakodowanej (nazwy stanów Ai zastąpione wektorami bitowymi <Ql Q2 ... Qk>. 13 4. Utworzenie tablic Karnaugh dla funkcji wzbudzeń poszczególnych przerzutników (na podstawie zakodowanej tabeli przejść oraz tabeli wzbudzeń wybranego rodzaju przerzutnika). Minimalizacja funkcji wzbudzeń przerzutników; wynik - blok γ. 5. Synteza funkcji wyjść na podstawie zakodowanej tabeli wyjść - blok λ. Przykład 1: Licznik modulo 5 z sygnałem bramkującym 1. Automat Moore'a, cykl stanów: 000 001 010 011 G 100 0 1 000 000 001 001 001 010 010 010 011 011 011 100 l00 l00 000 Q2Q1Q0 Q2'Q1'Q0' 2. Kodowanie zbioru stanów wewnętrznych: ponieważ jest to licznik, przyjmujemy kodowanie identyczne jak słowa wyjściowe (będzie Y =A): A=<Q2Q1Q0>, A={000, 001, 010, 011, 100} 3. Zakodowana tablica przejść - w postaci Karnaugh: Q0G Q2Q1 00 01 11 10 00 000 001 010 001 01 010 011 100 011 11 --- --- --- --- 10 100 000 --- --Q2'Q1'Q0' 14 4. Funkcje wzbudzeń przerzutników Q2Q1Q0: Jako typ - wybieramy np. JK. W zakodowanej tabeli przejść badamy zmiany stanu Q,Q;' i wyznaczamy odpowiednie dla nich wzbudzenia. Np. dla Q2: Q0G Q2Q1 00 01 11 10 00 000 001 010 001 01 010 011 100 011 11 --- --- --- --- 10 100 000 --- --Q2'Q1'Q0' ⇓ Q0G Q2Q1 00 01 11 10 00 00 00 00 00 01 00 00 01 00 11 -- -- -- -- 10 11 10 -- -Q2Q2’ ⇓ Q0G Q2Q1 00 01 11 10 00 0 - 0 - 0 - 0 - 01 0 - 0 - 1 - 0 - 11 - - - - - - - - 10 - 0 - 1 - - - J2K2 J2 = Q1Q0G K2 = G. 15 Analogicznie dla Ql, Q0: Q0G Q2Q1 00 01 11 10 00 000 001 010 001 01 010 011 100 011 11 --- --- --- --- 10 100 000 --- --Q2'Q1'Q0' ⇓ Q0G Q2Q1 00 01 11 10 00 0 - 0 - 1 - 0 - 01 - 0 - 0 - 1 - 0 11 - - - - - - - - 10 0 - 0 - - - - J1K1 Jl = Q0G K1=Q0G = J1 Q0G Q2Q1 00 01 11 10 00 0 - 1 - - 1 - 0 01 0 - 1 - - 1 - 0 11 - - - - - - - - 10 0 - 0 - - - - J0K0 J0 = /Q2G, K0=G Wyznaczenie równań J2, K2, J1, K1, J0, K0 kończy syntezę bloku γ 16 5. Synteza funkcji wyjść Licznik, automat Moore'a ⇒ przyjęliśmy takie kodowanie stanów, że: Y=λ(A)=A - koniec syntezy bloku λ.. Wynik syntezy: J2 = Q1Q0G K2 = G Jl = Q0G K1=Q0G = J1 J0 = /Q2G, K0=G Y = A = <Q2Q1Q0>, 17 Dla porównania: synteza tego samego automatu na przerzutnikach typu D Kroki 1, 2, 3 i 5 identyczne jak poprzednio. Krok 4 (synteza funkcji wzbudzeń przerzutników): dla typu D zakodowana tabela przejść jest od razu tabelą wzbudzeń, bo D = Q' Q0G Q2Q1 00 01 11 10 00 000 001 010 001 01 010 011 100 011 11 --- --- --- --- 10 100 000 --- --Q2'Q1'Q0' ⇓ Q0G Q0G Q2Q1 00 01 11 10 00 0 0 1 0 0 01 1 1 0 1 - - 11 - - - - - - 10 0 0 - - 00 01 11 10 00 0 0 0 0 01 0 0 1 11 - - 10 1 0 Q2Q1 D1 D2 D2 = Q2/G + Q1Q0G D1 = Q1/G + Q1/Q0 + /Q1Q0G Q0G Q2Q1 00 01 11 10 00 0 1 0 1 01 0 1 0 1 11 - - - - 10 0 0 - D2 D0 = /Q2/Q0G + Q0/G Blok γ bardziej złożony w porównaniu do JK. 18