我有很多常数。每个常量的长度为8位。
我想将其更改为枚举,原因有两个。 1.每个常数的值无关紧要,只需要是不同的值。 2.由于每个项目的值无关紧要,我想使用枚举,而不关心给出常量数字。
我知道你可以这样做:
type fruit is (banana, apple, orange);
attribute enum_encoding : string;
attribute enum_encoding of fruit : type is "00000000 00000001 00000010";
然而,这似乎是双重工作,因为我毕竟必须给项目nubmers。我只想指出,它必须是8位,让Vivado进行计数。
答案 0 :(得分:0)
据我所知,你从你的ROM读取“0000_0010”,等于2,这意味着你要选择“橙色”。您可以使用VHDL预定义属性'VAL
。
library ieee;
use ieee.std_logic_1164.all;
entity test_e is end entity test_e;
architecture test_a of test_e is
type fruit is (banana, apple, orange);
constant rom_out : std_logic_vector(7 downto 0) := "00000010";
use ieee.numeric_std.all;
constant sel_fr : fruit := fruit'val(to_integer(unsigned(rom_out)));
begin
end architecture;
sel_fr
将是“橙色”。