【问题标题】:Sensitive list in VHDLVHDL 中的敏感列表
【发布时间】:2014-12-06 14:35:43
【问题描述】:

我有如下的 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 信号添加到敏感列表,会发生什么?我希望你的帮助。谢谢。

【问题讨论】:

    标签: vhdl


    【解决方案1】:

    如果您将d 添加到敏感度列表中,模拟器可能需要做更多的工作,但输出将是相同的。

    话虽这么说......

    让我们分别看这3个变量,问一个问题:“如果这个变量改变了,这个过程的输出会改变吗?

    • clk:好吧,如果clk 发生变化,那么d 可能有一个新值,我们需要将其存储到q。所以这是必要的。

    • rst_n:好吧,如果情况发生变化,我们可能会将 q 设置为 0。所以这是必要的。

    • d:好吧,如果d 发生了变化,而没有其他任何变化,那么进程的输出不会发生变化。所以我们不需要敏感列表中的这个信号。

    【讨论】:

    • 还有对权威的呼吁,现已失效的 IEEE Std 1076.6-2004 VHDL 寄存器传输级别 (RTL) 综合标准,6.1.3.1 来自具有敏感性列表和一个时钟的进程的边缘敏感存储,见注释 1。Except for a clock signal, signals read in a &lt;sync_assignment&gt; or signals controlling a &lt;sync_assignment&gt; are not required to be on the process sensitivity list. 本质上,触发器的形式既可用于综合识别,也可用于仿真。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多