让我们考虑以下内容(暂时忽略综合):
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;
将采取相同的动作 state3 和 state4 具有相同的动作。其他人的意图是对状态 2 和 5 执行相同的操作。
是否仍然“需要”做类似于以下的事情
when state2 | state5 => do something
when others => null;
我的目标是避免为了相同的操作而必须拥有大量的状态或在一起。
谢谢!