VHDL: Przełączniki

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: