【问题标题】:Does simulation always show signal/output assignment on clock edge?仿真是否总是在时钟边沿显示信号/输出分配?
【发布时间】:2017-02-28 01:44:40
【问题描述】:

所以我明白,如果我们在时钟进程中分配信号或输出,则分配发生在下降沿,或者换句话说,当进程挂起时,但为什么在模拟过程中信号或输出在上升期间被分配时钟的边缘? 例如,我有以下代码:

 if(rising_edge(clk)) then
     if(one_second_counter = "10111110101111000001111111")
         one_second_counter <= (others=> '0');
     else
      one_second_counter <= one_second_counter + 1; --
 end if;

我附上了仿真波形:

【问题讨论】:

    标签: process signals vhdl simulation fpga


    【解决方案1】:

    所以我明白,如果我们在时钟进程中分配信号或输出,分配发生在下降沿,或者换句话说,当进程挂起时......

    这是不正确的。当满足流程的敏感性条件时,分配发生。在您的示例中,这是 rising_edge(clk) - 时钟的上升沿。

    【讨论】:

    • 只要出现隐含的最后一条语句等待语句敏感的条件,具有敏感度列表的进程就会恢复 (wait on sensitivity_list;)。外部 if 语句只允许在其条件评估为 TRUE 时执行顺序语句,这里是在 clk 的上升沿。 IEEE Std 1076-2008 IEEE 标准 VHDL 语言参考手册 11.3 过程语句、10.2 等待语句、10.8 if 语句、10.5 信号分配语句/10.5.2 简单信号分配和 16.8.4 信号边沿检测。它显示了提供 VHDL sn-ps 的危险。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多