在VHDL中的Case语句中更改控制变量

时间:2012-09-11 14:23:24

标签: switch-statement vhdl

    case task is

       when 1 => task <= 2;

       when 2 => task <= 3; 

       when other =>...

    end case

我尝试更改case中的switch变量,但是在传递case子句后它不会影响该值。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

由于您使用信号分配<=,我认为task是一个信号,而不是一个变量。任务的新值将在下一个模拟周期(delta周期)中可用。这通常意味着当再次执行进程时,或者在“wait”语句之后,新值将可见(但如果要合成代码,则可能不需要等待语句)。

作为替代方案,您可以为task使用变量,并使用变量赋值运算符:task := 2;

答案 1 :(得分:0)

使用变量,而不是信号 - 这将更新您期望的方式。

信号对于多个进程之间的通信很有用,因为它们是updates are well-controlled。普通变量不是并且因此仅限于过程范围,因此不能无意中用于进程间通信,这将容易出错。