以下は、IF ブロックを使用する VHDL のコードです。最後の「elsif」では、「my_choice」の値を「ch4」に代入しています。次に、条件が満たされないため、「else」ブロックが実行されます。しかし、「my_choice」が (ch1、ch2、ch3、ch4) 以外の値 (高インピーダンス (またはその他) など) を取得する可能性はありますか? もしそうなら、どうすればそれを避けることができますか? この割り当てにより、コードの動作が変わる可能性があるためです。
entity entity_name
port
.....
.....
end entity_name;
architecture bhvr of entity_name
type choices is (ch1, ch2, ch3, ch4);
signal my_choice,next_choice : choices;
begin
process(clk, reset)
begin
if reset='1' tehn
--------reset
else
my_choice<=next_choice;
end if;
end process;
process(my_choice)
begin
if my_choice = ch1 then
next_choice <= ch2;
elsif my_choice = ch2 then
next_choice <= ch3;
elsif my_choice = ch3 then
next_choice <= ch4;
else ------------------------------------coming to ch4
---- task for ch4
end process;
end architecture;