讓我們考慮以下的(而忽略合成的時刻):VHDL數組類型個案處理
SIGNAL sig1 : std_logic_vector(3 DOWNTO 0) := "0000";
CASE sig1 IS
when "0000" => do something
when "0001" => do something
when others => do something
END CASE;
我知道,這是非常好的做法,對有條件的SIG1的每一個潛在的「有效」值(「 0000「,」0001「,」0010「,...,」1111「),因爲其他檢查將包括'U','X'和'Z'。所以,這個良好的實踐告訴我們,上面的例子並不是很好的VHDL代碼。
現在讓我們來考慮下面的(記住合成):
TYPE state_type IS (state0, state1, state2, state3, state4);
SIGNAL sig2 : state_type;
CASE sig2 IS
when state0 => do something
when state1 => do something
when state3 | state4 => do something
when others => do something
END CASE;
同樣將採取行動狀態3和state4具有相同的作用。爲別人的目的是對美國2相同的動作和5
難道還要做類似的東西「所要求的」跟隨
when state2 | state5 => do something
when others => null;
我的目標是,以避免產生巨大同一行動的國家列表OR'd在一起。
謝謝!
請注意'case'語句不是**併發語句,而是一個順序語句(用於進程)。這種併發形式是'with ... select'語句。 – wap26 2012-07-19 09:10:57