플립플롭은 입력 값의 변화에 관계없이 출력 값을 유지할 수 있는 논리 회로로, 즉 “메모리” 상태를 포함합니다. 이는 조합 논리에서 순차 논리로의 전환을 가능하게 하는 요소입니다.
플립플롭에는 비안정, 쌍안정, 단안정 등 여러 유형이 있습니다.
비안정: 2개의 불안정한 상태를 포함하는 플립플롭으로 주기적(주기 T)으로 한 상태에서 자발적으로 전환됩니다.
다른 사람에게.
쌍안정: 두 개의 안정된 상태를 갖는 것. 논리학에서는 이를 논리적 상태 “1” 또는 “0”으로 해석합니다.
단안정 상태: 안정된 상태가 하나만 있고 다른 상태는 일시적입니다.
플립플롭에는 비동기식과 동기식의 두 가지 유형이 있습니다. 동기 플립플롭에는 클럭 입력이 있는 반면, 비동기 플립플롭에는 그런 입력이 없습니다.
비동기 플립플롭
– RS 로커
– D 래치
동기식 플립플롭
– 로커 D
– JK 스위치
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;
JK 플립플롭은 쌍안정 플립플롭의 한 유형으로, 두 가지의 서로 다른 안정 상태를 갖습니다. 이름인 “JK”는 주요 입국 항구와 관련된 글자인 J와 K에서 따왔습니다.
J와 K의 값이 다를 때, JK 플립플롭은 잘 정의된 순서에 따라 상태를 변경합니다. J가 높음(1)이고 K가 낮음(0)이면 플립플롭은 “SET”(1) 상태를 취합니다. J가 낮음(0)이고 K가 높음(1)이면 플립플롭은 “RESET”(0) 상태를 취합니다. J와 K가 모두 높음(1)이면 플립플롭은 토글되어 각 클록 펄스마다 상태를 번갈아 가며 변경됩니다.
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;