次のことを考えてみましょう(そして今のところ合成を無視します):
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;
他のチェックには「U」が含まれるため、sig1の潜在的な「有効な」値(「0000」、「0001」、「0010」、...、「1111」)ごとに条件を設定することは非常に良い習慣です。 、'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;
私の目標は、州の膨大なリストを作成したり、同じアクションを一緒に実行したりする必要がないようにすることです。
ありがとう!