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。普通變量不是,因此僅限於過程範圍,所以不能無意中用於進程間通信,因而容易出錯。