进程是否被激活或暂停?
Does the process get activated or suspended?
我在理解敏感度列表和它激活一个进程时仍然有点困难。
大多数教科书都说,每当敏感列表内的信号发生事件时,都会激活一个进程。
process(in)
begin
x <= in;
end process;
现在看这个例子,"in"是在实体中声明的输入。现在,如果 "in" 从 0 开始并更改为 1,则该过程将激活并且 x 的值将采用值 "in"。现在假设在 in 从 0 变为 1 之后,它现在保持恒定值 1。这是否意味着该进程将不会被激活? x 仍会输出“1”吗?我想说它不会被激活,只会在从 1 变回 0 时激活一次。有人可以确认一下吗?
在敏感度列表中(我假设这是硬件语言,VHDL 具有完全相同的语法和格式),只要有某种类型的信号变化 (L-> H, 0 ->1, 1-> 0 ...您在敏感列表中列出的变量的任何更改),它将激活该过程并且该过程将执行直到完成,然后该过程将结束。当进程结束时,signals/outputs(取决于你如何解释它们)将被存储在一个驱动程序上,它将在一些传播延迟后更新给定的信号。
所以从你的第二个陈述来看,是的。如果变为0 -> 1,则激活进程,如果变为1 -> 0,则激活进程,如果in保持为1,则不会激活进程。所以 x 的值保持不变。
我在理解敏感度列表和它激活一个进程时仍然有点困难。 大多数教科书都说,每当敏感列表内的信号发生事件时,都会激活一个进程。
process(in)
begin
x <= in;
end process;
现在看这个例子,"in"是在实体中声明的输入。现在,如果 "in" 从 0 开始并更改为 1,则该过程将激活并且 x 的值将采用值 "in"。现在假设在 in 从 0 变为 1 之后,它现在保持恒定值 1。这是否意味着该进程将不会被激活? x 仍会输出“1”吗?我想说它不会被激活,只会在从 1 变回 0 时激活一次。有人可以确认一下吗?
在敏感度列表中(我假设这是硬件语言,VHDL 具有完全相同的语法和格式),只要有某种类型的信号变化 (L-> H, 0 ->1, 1-> 0 ...您在敏感列表中列出的变量的任何更改),它将激活该过程并且该过程将执行直到完成,然后该过程将结束。当进程结束时,signals/outputs(取决于你如何解释它们)将被存储在一个驱动程序上,它将在一些传播延迟后更新给定的信号。
所以从你的第二个陈述来看,是的。如果变为0 -> 1,则激活进程,如果变为1 -> 0,则激活进程,如果in保持为1,则不会激活进程。所以 x 的值保持不变。