Wstęp Przerzutnik to układ logiczny zdolny do utrzymywania wartości swoich wyjść niezależnie od zmian wartości wejściowych, czyli zawierający stan „pamięci”. Jest to element umożliwiający przejście z logiki kombinacyjnej do logiki sekwencyjnej.Istnieją różne rodzaje przerzutników: astabilne, bistabilne i monostabilne.Astabilny: Jest to przerzutnik składający się z 2 niestabilnych stanów, który okresowo (okres T) i spontanicznie przełącza się z jednego stanudo drugiego.Bistabilny: Posiadający dwa stabilne stany. W logice oznacza to stany logiczne „1” lub „0”.Monostabilny: mający tylko jeden stan stabilny, a drugi stan jest tymczasowy.Istnieją dwa rodzaje przerzutników: asynchroniczne i synchroniczne. Przerzutniki synchroniczne mają wejście zegarowe, czego nie ma w przypadku przerzutników asynchronicznych.Przerzutniki asynchroniczne– Wahadło RS– Zatrzask DPrzerzutniki synchroniczne– Rocker D– Przełącznik JK Jaka jest różnica między przerzutnikiem a bramką logiczną? Przerzutnik to układ logiczny zdolny do utrzymywania wartości swoich wyjść niezależnie od zmian wartości wejściowych, czyli zawierający stan „pamięci”. Jest to element umożliwiający przejście z logiki kombinacyjnej do logiki sekwencyjnej. Przerzutnik często składa się z kilku bramek logicznych. Oto przykład z przerzutnikiem D: Jaka jest różnica między przełącznikiem a zatrzaskiem? Główną różnicą pomiędzy przerzutnikiem a zatrzaskiem jest to, że przerzutnik sprawdza wejścia, ale zmienia wyjście tylko w momentach zdefiniowanych przez sygnał zegara lub inny sygnał sterujący, podczas gdy zatrzask sprawdza wejścia w sposób ciągły i natychmiast reaguje na zmiany wejścia. Sommaire masquer 1 Wstęp 1.1 Jaka jest różnica między przerzutnikiem a bramką logiczną? 1.2 Jaka jest różnica między przełącznikiem a zatrzaskiem? 2 Flip-flop D 2.1 Jak działa przerzutnik D? 3 Flip-flop JK Flip-flop D Przyjrzymy się teraz przerzutnikowi D z asynchronicznym resetem. W tym celu wykorzystamy dane wejściowe, które chcesz przekazać. Potrzebujemy zegara (clk), ponieważ jest to przerzutnik synchroniczny. Na koniec funkcja resetu umożliwia przesłanie danych z d do q lub zresetowanie przerzutnika. Jak działa przerzutnik D? Jeżeli reset wynosi 1, to wyjście q przyjmuje wartość 0.Jeżeli reset wynosi 0, wówczas przekazujemy wartość pochodzącą z d za pomocą q przy każdym takcie zegara. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY bascule_D IS PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC); END bascule_D; ARCHITECTURE comportement OF bascule_D IS BEGIN PROCESS (clk, rst) BEGIN IF (rst='1') THEN q <= '0'; ELSIF (clk'EVENT AND clk='1') THEN q <= d; END IF; END PROCESS; END comportement; Oto wynik symulacji: 1. tyk zegara: zegar jest wysoki, reset również, więc sygnał wejściowy d nie może przejść do sygnału wyjściowego q. Flip-flop JK Przerzutnik JK jest rodzajem przerzutnika bistabilnego, co oznacza, że posiada dwa odrębne stany stabilne. Nazwa „JK” pochodzi od liter oznaczających główne porty wjazdowe: J i K.Jeżeli J i K mają różne wartości, przerzutnik JK zmienia stan zgodnie z dobrze zdefiniowaną sekwencją. Jeżeli J jest wysokie (1), a K jest niskie (0), przerzutnik przyjmie stan „SET” (1). Jeżeli J jest niskie (0), a K jest wysokie (1), przerzutnik przyjmie stan „RESET” (0). Jeżeli oba stany J i K są wysokie (1), przerzutnik będzie się przełączał, zmieniając stany z każdym impulsem zegara. library ieee; use ieee.std_logic_1164.all; entity Bascule is port(J,K,Clk,Set, Reset : in std_logic; Q, Q_bar : out std_logic); end Bascule; architecture bascule_JK of Bascule is signal SIG : std_logic; signal JK : std_logic_vector (1 downto 0); begin JK(1) <= J; JK(0) <= K; process(Clk, Set, Reset) begin if (Reset = '0'and Set = '0') then SIG <= '0'; elsif (Reset = '0' and Set = '1') then Sig <= '0'; elsif (Reset ='1' and Set ='0') then Sig <='1'; elsif (Reset = '1' and Set ='1') then if (Clk'event and Clk ='0') then case JK is when "00" => SIG <= SIG; when "01" => SIG <= '0'; when "10" => SIG <= '1'; when "11" => SIG <= not SIG; when others => SIG <= '-'; end case; else SIG <= SIG; end if; end if; end process; Q <= SIG; Q_bar <= not SIG; end bascule_JK; Oto wynik symulacji: