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 stanu
do 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 D
Przerzutniki 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.

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: