2012-09-11 70 views
0
case task is 

     when 1 => task <= 2; 

     when 2 => task <= 3; 

     when other =>... 

    end case 

我嘗試更改案例中的開關變量,但它不影響case子句傳遞後的值。什麼是正確的方法來做到這一點?更改VHDL中的Case語句中的控制變量

回答

3

由於您使用的信號分配<=我認爲task是一個信號,而不是一個變量。任務的新值將在下一個模擬循環(增量循環)中可用。這通常意味着當再次執行該進程時或在「等待」語句之後,新值將可見(但如果要綜合代碼,則可能不希望等待語句)。

作爲替代方案,你可以使用一個變量task,並且使用變量賦值運算符:task := 2;

0

使用一個變量,而不是一個信號 - 這將更新你期望的方式。

信號是用於多個進程之間的通信是有用的,作爲其updates are well-controlled。普通變量不是,因此僅限於過程範圍,所以不能無意中用於進程間通信,因而容易出錯。