【发布时间】:2016-12-21 17:31:27
【问题描述】:
我知道信号分配是在流程结束时完成的。但是假设我有两个信号“A”和“B”。 A 的值在我的过程中变化如此频繁(几乎在每个周期中),B 用于将 A 的值保存为临时值,以便在下一个时钟周期将其分配给其他信号。但是,除非发生某些特定事情,否则我不希望 B 的值发生变化。因此,如果我在此过程中将 A 分配给 B 一次,B 的值是否会在 A 的值发生变化时自动更新?如果答案是肯定的,我怎样才能让 B 只有在 if 语句成立时才改变它的值?使用变量而不是信号作为 B 可以解决这个问题吗?
【问题讨论】:
-
我不明白你的问题。生成MCVE 怎么样?如果你这样做,你可能会自己回答。
-
你不清楚。用代码说明。敏感度列表中发生了什么?
-
我认为您不了解流程中的分配在更基础的层面上的作用。如果您在每次运行时在进程中分配
B <= A,那么在进程结束时(0 时差)B将获得值A在进入时过程。如果您仅在if语句中分配B <= A,则当进程运行但不满足if语句时,B将保留其先前的值。假设您的进程是计时的,这将在触发器中实现B。如果它是一个非时钟进程,它将使用闩锁(坏)来实现它。