Random VHDL Case语句错误
我创建了一个生成随机数的函数。这个数字代表一年。我需要知道那一年是不是闰年。生成的数字范围在2000年到2017年之间,因此我认为我可以使用一个案例,而不是应用公式来计算闰年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
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_逻辑用于二进制逻辑可能是一个好习惯。