我有一个D触发器的VHDL程序如下
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY ff2 IS
PORT (
clk : IN STD_LOGIC;
rst_n : IN STD_LOGIC;
d : IN STD_LOGIC;
q : OUT STD_LOGIC
);
END ff2;
ARCHITECTURE beh OF ff2 IS
BEGIN -- beh
ff2_proc: PROCESS (clk, rst_n)
BEGIN -- PROCESS ff2_proc
IF rst_n = '0' THEN
q <= '0';
ELSIF falling_edge(clk) THEN
q <= d;
END IF;
END PROCESS ff2_proc;
END beh;
我不明白为什么敏感列表只包含信号clk和rst_n . 如果我将d信号添加到敏感列表,会发生什么?我希望你的帮助 . 谢谢 .
1 回答
如果将
d
添加到灵敏度列表中,模拟器可能需要做更多工作,但输出将是相同的 .有人说......
让我们独立地看一下3个变量,然后问一个问题:“如果这个变量发生变化,这个过程的输出会改变吗?
clk :好吧,如果
clk
发生变化,d
可能会有一个我们需要存储到q
的新值 . 所以这是必要的 .rst_n :好吧,如果这个改变了,我们可能会将
q
设置为0.所以这是必要的 .d :好吧,如果
d
发生了变化,而没有其他变化,则该过程的输出在灵敏度列表中不需要此信号 .