调试:VHDL错误案例声明未涵盖所有选择需要“其他”子句,但已定义所有状态

问题描述

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 =>