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