signal a:bit:='1'; signal b:bit:='0'; signal c:bit:='0';
begin
process
variable d:bit:='0';
begin
if (a='1')or(b='0') then a <= inertial not d after 1ns;
else a<=inertial not c after 1.5ns;
end if;
d := a and b;
b <= inertial (b)nand(a or d) after 1ns;
wait on a,b,c;end process;
c <= a and b after 1ns;
end Behavioral;
如果 a 和 b 同时改变它们的值会发生什么,例如 2ns。
进程会触发2次吗?
如果是这样,应该为 a,b 使用哪些值,如果我们要通过 a 事件的进程,b 信号是在那个时候改变了,还是当进程再次为 b 运行时它会改变?
还有声明 c <= a and b after 1ns; 在过程之外,它如何与之后一起工作?如果没有之后,它只是一个 AND 单元,没有延迟。