LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY D_FF IS
PORT
(
D,CP:IN std_logic;--D为数据输入,CP为时钟,上升沿触发
Rd,Sd:IN std_logic; --Rd为异步复位信号,Sd为异步置位信号
Q,Qn:OUT std_logic --输出信号,是两个互补输出
);
END D_FF;
ARCHITECTURE behave OF D_FF IS
BEGIN
PROCESS(CP,Rd,Sd)
BEGIN
IF (Rd='0' AND Sd='1') THEN--功能表第一条
Q<='0';
Qn<='1';
ELSIF (Rd='1' AND Sd='0') THEN--功能表第二条
Q<='1';
Qn<='0';
ELSIF (Rd='0' AND Sd='0') THEN--功能表没有这条,要注意
Q<='X';
Qn<='X';
ELSE --功能表第四和第五条,即Rd='1' AND Sd='1'
IF (rising_edge(CP)) THEN
Q<=D;
Qn<=NOT D;
END IF;
END IF;
END PROCESS;
END behave;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY D_FF IS
PORT
(
D,CP:IN std_logic;--D为数据输入,CP为时钟,上升沿触发
Rd,Sd:IN std_logic; --Rd为异步复位信号,Sd为异步置位信号
Q,Qn:OUT std_logic --输出信号,是两个互补输出
);
END D_FF;
ARCHITECTURE behave OF D_FF IS
BEGIN
PROCESS(CP,Rd,Sd)
BEGIN
IF (Rd='0' AND Sd='1') THEN--功能表第一条
Q<='0';
Qn<='1';
ELSIF (Rd='1' AND Sd='0') THEN--功能表第二条
Q<='1';
Qn<='0';
ELSIF (Rd='0' AND Sd='0') THEN--功能表没有这条,要注意
Q<='X';
Qn<='X';
ELSE --功能表第四和第五条,即Rd='1' AND Sd='1'
IF (rising_edge(CP)) THEN
Q<=D;
Qn<=NOT D;
END IF;
END IF;
END PROCESS;
END behave;
一周热门 更多>