DEBUGGING: VHDL 错误案例语句未涵盖所有选择。 'others' 子句是必需的,但已定义所有状态

DEBUGGING: VHDL error case statement does not cover all choices. 'others' clause is needed, but all states defined

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 位逻辑向量定义的当前状态。但我得到的错误是并未涵盖所有情况。当我把 case others 声明时,我的代码总是进入 others case。

你必须涵盖所有可能的情况。逻辑信号在此列表中可以具有 任何 值:'U'、'X'、'0'、'1'、'Z'、'W', 'L', 'H'。 由于在您的情况下,所有不同于“0”和“1”的值都是无关紧要的,因此您应该在开关中添加一个默认情况(以防万一发生错误,并且条件信号的值与预期的不同)

when others =>