VHDL Case语句错误

VHDL Case statement error

我创建了一个生成随机数的函数。这个数字代表一年。我需要找出那一年是否是闰年。生成的数字范围在 2000 年到 2017 年之间,所以我认为我可以使用案例而不是应用公式来查找闰年。

architecture arh_afisare of afisare is      
signal year: integer;
signal leap_year: integer;
begin
process
begin
    year <= random_gen(2000, 2017); 
    case year is
        when '2000' => leap_year <='1';
        when '2004' => leap_year <='1';
        when '2008' => leap_year <='1';
        when '2012' => leap_year <='1';
        when '2016' => leap_year <='1';
        when others => leap_year <='0';
    end case;
wait for 100 ns;
end process;
end architecture;

我在 'when' 的每一行都收到此错误,希望是最后一行。

Error: COMP96_0019: Afisare.vhd : (28, 9): Keyword 'others' expected.

看看你的 case 行:

when '2000' => leap_year <='1';

2000 是一个整数,但是您在它周围加上了单引号。这不是一个有效的结构;只需删除单引号:

when 2000 => leap_year <='1';

根据评论,为 leap_year 选择 integer 有点奇怪。如果您使用 std_logic 类型定义它,您对 leap_year <= '1' 的分配将变得有效。或者,如果 integer 合适,请将分配更改为 leap_year <= 1 .