VHDL Case语句错误

时间:2017-03-22 13:31:21

标签: random error-handling vhdl leap-year

我创建一个生成随机数的函数。这个数字代表一年。我需要找到那一年是否是闰年。生成数字的范围在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'期待最后一行的每一行都收到此错误。

  

错误:COMP96_0019:Afisare.vhd:(28,9):关键字“其他人”预期。

1 个答案:

答案 0 :(得分:2)

查看您的case行:

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

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

when 2000 => leap_year <='1';

根据评论,integerleap_year的选择有点奇怪。如果您使用std_logic类型对其进行定义,则leap_year <= '1'的分配将生效。或者,如果integer合适,请将作业更改为leap_year <= 1