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
.
我创建了一个生成随机数的函数。这个数字代表一年。我需要找出那一年是否是闰年。生成的数字范围在 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
.