case task is
when 1 => task <= 2;
when 2 => task <= 3;
when other =>...
end case
我尝试更改案例中的开关变量,但它不影响case子句传递后的值。什么是正确的方法来做到这一点?更改VHDL中的Case语句中的控制变量
case task is
when 1 => task <= 2;
when 2 => task <= 3;
when other =>...
end case
我尝试更改案例中的开关变量,但它不影响case子句传递后的值。什么是正确的方法来做到这一点?更改VHDL中的Case语句中的控制变量
由于您使用的信号分配<=
我认为task
是一个信号,而不是一个变量。任务的新值将在下一个模拟循环(增量循环)中可用。这通常意味着当再次执行该进程时或在“等待”语句之后,新值将可见(但如果要综合代码,则可能不希望等待语句)。
作为替代方案,你可以使用一个变量为task
,并且使用变量赋值运算符:task := 2;
使用一个变量,而不是一个信号 - 这将更新你期望的方式。
信号是用于多个进程之间的通信是有用的,作为其updates are well-controlled。普通变量不是,因此仅限于过程范围,所以不能无意中用于进程间通信,因而容易出错。