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 -

我有一个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;
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模拟。