问题描述
signal next_state,current_state: std_logic_vector(2 downto 0) := "000";
begin
myLogic: process(start,reset,current_state)
begin
case current_state is
when "000" => --code
--some if statement
if start = '1' then
next_state <= "001";
end if;
when "001" =>
--setting signals
when "010" =>
--setting signals
when "011" =>
--setting signals
when "100" =>
--setting signals
when "101" =>
--setting signals
when "110" =>
--setting signals
when "111" =>
--setting stuff
end case;
if reset= '1' then
current_state <= "000";
end if;
end process myLogic;
我上面发布的代码具有由3位逻辑向量定义的当前状态。但是我得到的错误是,并非所有情况都被涵盖。当我发表别人的案例陈述时,我的代码总是进入别人的案例。
解决方法
您必须涵盖所有可能的情况。逻辑信号在此列表中可以具有 any 值:“ U”,“ X”,“ 0”,“ 1”,“ Z”,“ W”,“ L”,“ H”。 由于在您的情况下,所有与“ 0”和“ 1”不同的值都是无关紧要的,因此您应该在开关中添加默认大小写(以防万一发生错误,并且条件信号的值不同于预期)
when others =>