VHDL中的敏感列表
我有一个D触发器的VHDL程序,如下所示VHDL中的敏感列表,vhdl,Vhdl,我有一个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 -
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;
ieee库;
使用ieee.std_logic_1164.ALL;
实体ff2是
港口(
clk:标准逻辑中;
rst_n:标准逻辑中;
d:在标准逻辑中;
q:输出标准逻辑
);
结束ff2;
ff2的架构是
开始吧
ff2_过程:过程(clk,rst_n)
开始——处理ff2_过程
如果rst_n='0',则
q如果将d
添加到灵敏度列表中,模拟器可能需要做更多的工作,但输出将是相同的
话虽如此。。。
让我们独立地看一下这3个变量,然后问一个问题:“如果这个变量改变,这个过程的输出会改变吗?”
- clk:如果
clk
发生变化,d
可能有一个新值需要存储到q
。因此这是必要的
- rst\u n:如果这个值改变,我们可能会将
q
设置为0。所以这是必要的
- d:如果
d
发生了变化,而没有其他变化,则过程的输出不会发生变化。因此,灵敏度列表中不需要此信号
如果将d
添加到灵敏度列表中,模拟器可能需要做更多的工作,但输出将是相同的
话虽如此。。。
让我们独立地看一下这3个变量,然后问一个问题:“如果这个变量改变,这个过程的输出会改变吗?”
- clk:如果
clk
发生变化,则d
可能有一个新值需要存储到q
。所以这是必要的
- rst\u n:如果这发生变化,我们可能会将
q
设置为0。所以这是必要的
- d:如果
d
发生了变化,而没有其他变化,那么流程的输出不会发生变化。所以我们在灵敏度列表中不需要这个信号
还有对权威机构的呼吁,即现已失效的IEEE Std 1076.6-2004 VHDL寄存器传输级(RTL)合成标准,6.1.3.1具有灵敏度列表和一个时钟的进程的边缘敏感存储,见注释1<代码>除时钟信号外,在a中读取的信号或控制a的信号不需要在过程灵敏度列表中。
基本上,触发器的形式对于合成和模拟来说都是可识别的。此外,还有对权威机构的呼吁,即现在失效的IEEE Std 1076.6-2004 VHDL寄存器传输级别(RTL)合成标准,6.1.3.1具有灵敏度列表和一个时钟的过程的边缘敏感存储,见注释1。除时钟信号外,在a中读取的信号或控制a的信号不需要在过程灵敏度列表上。
基本上触发器的形式对于合成和功能都是可识别的r模拟。