假设我有一个实体:
entity myblock is
port(
input1 : std_logic_vector(15 downto 0);
input2 : std_logic_vector(15 downto 0);
input3 : std_logic_vector(15 downto 0);
-- ...
output : std_logic_vector(15 downto 0);
);
end myblock;
我现在想让输入的大小通用,所以我可以这样做:
entity myblock is
generic(
WIDTH : natural;
);
port(
input1 : std_logic_vector(WIDTH-1 downto 0);
input2 : std_logic_vector(WIDTH-1 downto 0);
input3 : std_logic_vector(WIDTH-1 downto 0);
-- ...
output : std_logic_vector(WIDTH-1 downto 0);
);
end myblock;
理想情况下,我想稍微简化一下,并说:
subtype calc_data is std_logic_vector(WIDTH-1 downto 0);
port(
input1 : calc_data;
input2 : calc_data;
input3 : calc_data;
-- ...
output : calc_data;
);
在这种情况下,这是一个非常简单的例子,收益并不大。但是,在更复杂的情况下,它确实会有所帮助。
这在VHDL中可能吗?