0
    case task is

       when 1 => task <= 2;

       when 2 => task <= 3; 

       when other =>...

    end case

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

4

2 回答 2

3

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

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

于 2012-09-11T15:00:49.680 回答
0

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

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

于 2012-09-12T15:52:03.630 回答