VHDL case文
VHDLのcase文で'-'(don't care)を使用したら思ったとおりに動作しなかった。
DIN : in std_logic_vector(4 downto 0);
DEC_OUT : out std_logic_vector(5 downto 0) );
とする。
~~NG~~~~~~~~~~~~~~~~~~~~~~~~~
process (DIN)
case DIN is
when "-0000" => DOUT <= "000111";
when "01110" => DOUT <= "111110";
when "11110" => DOUT <= "111111";
when others => DOUT <= "ZZZZZZ";
end case;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DIN(4)をif文で切り替えたら期待通りの動作となった。
~~OK~~~~~~~~~~~~~~~~~~~~~~~~~
signal OP : std_logic_vector(3 downto 0);
signal Flag : std_logic;
begin
OP <=DIN(3 downto 0);
Flag <= DIN(4);
process (OP, Flag)
case OP is
when "0000" => DOUT <= "000111";
when "1110" =>
if Flag = '0' then
DOUT <= "111110";
else
DOUT <= "111111";
end if;
when others => DOUT <= "ZZZZZZ";
end case;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OK例でもprocess(DIN)とすると期待通りに動作しない。