Random VHDL Case语句错误

Random VHDL Case语句错误,random,error-handling,vhdl,leap-year,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

我创建了一个生成随机数的函数。这个数字代表一年。我需要知道那一年是不是闰年。生成的数字范围在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 '2000' => leap_year <='1';

根据评论,选择
integer
作为
leap\u year
有点奇怪。如果您使用类型
std\u logic
进行定义,您的
闰年分配请查看您的
案例
行:

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

根据评论,选择
integer
作为
leap\u year
有点奇怪。如果您使用类型
std_logic
来定义它,那么您的
闰年赋值也将闰年更改为std_logic。@FritzDC不一定,我们不知道上下文。如果它是
整数
或更好,
自然范围0到1
您可以将它添加到daysPerYear等(但您也必须在那里丢失引号)是的,“或者也丢失引号”应该是正确的。话虽如此,在编写VHDL时,将std_逻辑用于二进制逻辑可能是一个学习的好习惯。此外,将leap_year更改为std_逻辑。@FritzDC不一定,我们不知道上下文。如果它是
整数
或更好,
自然范围0到1
您可以将它添加到daysPerYear等(但您也必须在那里丢失引号)是的,“或者也丢失引号”应该是正确的。话虽如此,在编写VHDL时,将std_逻辑用于二进制逻辑可能是一个好习惯。