(1)在进程中只能将信号加入信号敏感表,而不能将变量加入信号敏感表。因为只有信号才能将进程外的信息带入进程内部。
从以下代码中体会信号和变量的区别。
SIGNAL s1 ,s2 : STD_LOGIC;
SIGNAL svec : STD_LOGIC_VECTOR (0 TO 7);
...
PROCESS ( s1 ,s2 )
VARIABLE v1 ,v2 : STD_LOGIC;
BEGIN
v1 := '1' ; -- 立即将 v1 置位为 1
v2 := '1' ; -- 立即将 v2 置位为 1
s1 <= '1' ; -- s1 被赋值为 1
s2 <= '1' ; -- 由于在本进程中这里的 s2 不是最后一个,因此此处赋值不起作用
svec(0) <= v1; -- 将 v1 在上面的赋值 1 赋给svec(0)
svec(1) <= v2; -- 将 v2 在上面的赋值 1 赋给svec(1)
svec(2) <= s1; -- 将 s1 在上面的赋值 1 赋给svec(2)
svec(3) <= s2; -- 将最下面的赋予 s2 的值'0' 赋给svec(3)
v1 := '0' ; -- 将 v1 置入新值 0
v2 := '0' ; -- 将 v2 置入新值 0
s2 <= '0' ; -- 由于这是 s2 最后一次赋值 赋值有效,此'0'将上面准备赋入的'1'覆盖掉 svec(4) <= v1; -- 将 v1 在上面的赋值 0 赋给svec(4)
svec(5) <= v2; -- 将 v2 在上面的赋值 0 赋给svec(5)
svec(6) <= s1; -- 将 s1 在上面的赋值 1 赋给svec(6)
svec(7) <= s2; -- 将 s2 在上面的赋值 0 赋给svec(7)
END PROCESS ;