Programowalne układy logiczne Przerzutniki Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 20 maja 2013
Przerzutnik synchroniczny Układ synchroniczny wyzwalany ustalonym zboczem sygnału zegarowego (ang. edge-triggered) Jedno wyjście, oznaczane Q, przyjmujące dwa stany: 0 i 1 Następny stan, oznaczany Q, zależny od aktualnego stanu Q i stanu wejść w chwili pojawienia się aktywnego zbocza sygnału zegarowego Elementarny składnik układów synchronicznych
Dygresja Przerzutnik to po angielsku flip-flop. W komputerze używającym notacji trójkowej potrzebowalibyśmy przerzutników flip-flap-flop [Knuth, TAOCP, rozdz. 4.1].
Przerzutnik synchroniczny o jednym wejściu Przerzutnik D Przerzutnik T Q = D D 0 1 Q 0 0 1 1 0 1 Q Q = Q T T 0 1 Q 0 0 1 1 1 0 Q
Przerzutnik synchroniczny o jednym wejściu, cd. Z dokładnością do symetrii można wymyślić jeszcze jeden rodzaj przerzutnika o jednym wejściu Q = Q X X 0 1 Q 0 0 1 1 0 0 Q Przerzutnik ten można łatwo zrobić z przerzutnika D, dokładając jedną bramkę: D = Q X. Przerzutnik T też można zrobić z przerzutnika D, dokładając jedną bramkę: D = Q T. W praktyce produkuje się tylko przerzutniki D. Nie ma innych przerzutników o jednym wejściu.
Przerzutnik synchroniczny o dwóch wejściach Jest wiele możliwych sposobów użycia dwóch wejść. Najbardziej naturalne jest, aby jedno wejście S (ang. set) ustawiało wyjście, a drugie R (ang. reset) go zerowało. Przerzutnik SR Przerzutnik JK Q = S (Q R), S R = 0 SR 00 01 11 10 Q 0 0 0 1 1 1 0 1 Q Q = (Q J) (Q K) JK 00 01 11 10 Q 0 0 0 1 1 1 1 0 0 1 Q
Przerzutnik synchroniczny, podsumowanie Praktyczne znaczenie mają głównie przerzutniki D oraz JK. Produkuje się tylko te rodzaje przerzutników. Przerzutnik RS zawsze można zastąpić przerzutnikiem JK. Przerzutnik T też można łatwo zrobić z przerzutnika JK.
Przerzutnik typu zatrzask Oprócz przerzutników wyzwalanych zboczem istnieją też przerzutniki typu zatrzask (ang. latch), wyzwalane poziomem (ang. level-triggered). Różnice w działaniu łatwo jest pokazać, porównując ich defincje w VHDL-u. Deklaracja interfejsu w obu przypadkach jest taka sama: entity flip_flop is port( input, clock, reset: in std_logic; q: out std_logic ); end entity flip_flop;
Definicja przerzutnika wyzwalanego zboczem architecture edge_triggered of flip_flop is begin process (clock, reset) begin if reset = 0 then q <= 0 ; elsif clock event and clock = 1 then q <= input; end if; end process; end architecture edge_triggered;
Definicja przerzutnika wyzwalanego poziomem architecture level_triggered of flip_flop is begin process (clock, reset, input) begin if reset = 0 then q <= 0 ; elsif clock = 1 then q <= input; end if; end process; end architecture level_triggered;
Przerzutnik typu zatrzask, podsumowanie Nie może być użyty do syntezy układu synchronicznego. Stosuje się go w różnego rodzaju buforach. Często stosuje się go w taki sposób, że wejście danych nie zmienia się, gdy na wejściu zegarowym jest aktywny poziom.
Układowe realizacje przerzutników Prawie zawsze mamy do dyspozycji wyjście zanegowane Q układowo to nic nie kosztuje, a jest wygodne. Często mamy do dyspozycji asynchroniczne wejście zerujące R (ang. reset), a czasem też asynchroniczne wejście ustawiające S (ang. set). Wejścia asynchroniczne mają wyższy priotytet niż wejścia synchroniczne. Aktywnym poziomem na wejściach asynchronicznych jest zwykle poziom niski.
Układowe realizacje przerzutników Zawierają przerzutnik wpisz-zeruj (ang. set-reset). Przerzutnik synchroniczny można zrealizować jako dwutaktowy (ang. master-slave), zawierający dwa połączone kaskadowo przerzutniki typu zatrzask wyzwalane przeciwnymi poziomami. Na kolejnych slajdach zobaczymy przykłady.
Przerzutnik D wyzwalany narastającym zboczem z asynchronicznym zerowaniem i ustawianiem
Przerzutnik D typu zatrzask
Przerzutnik JK master-slave, zmiana stanu wyjścia przy opadającym zboczu zegara
Symbole przerzutników z poprzednich slajdów D S Q D Q J Q C C C R Q Q K Q
Asynchroniczny przerzutnik T Dzielnik częstotliwość przez dwa Symetryzator sygnału zegarowego T Q Jedyny możliwy przerzutnik synchroniczny bez wejścia Q = Q Q 0 1 1 0 Q T D C Q Q Q
Asynchroniczny przerzutnik T w VHDL-u entity asynchronous_t is port(t: in std_logic; q: out std_logic); end entity asynchronous_t; architecture behavioral of asynchronous_t is signal r: std_logic := 0 ; begin q <= r; process (t) begin if t event and t = 1 then r <= not r; end if; end process; end architecture behavioral;
Literatura Wiesław Traczyk: Układy cyfrowe. Podstawy teoretyczne i metody syntezy. WNT, Warszawa 1982, 1986. Jerzy Baranowski, Bogusław Kalinowski, Zbigniew Nosal: Układy elektroniczne. Część III Układy i systemy cyfrowe. WNT, Warszawa 1994, 1998.