在尝试查看是否可以通过设置“通用”来提出输出数量变量的方法时,我提出了以下想法。我们的想法是在“端口”声明中的VHDL代码中有一个例程,这样例程就会在“端口”声明中添加文本“output(X):out std_logic_vector(bits-1 downto 0)”。请注意,(X)表示输出端口的数量,即output1,output2等。这个想法是当VHDL解析器读取代码时,它会在编译时看到所需的输出数量。这是可以做到的吗?
答案 0 :(得分:2)
如果我理解正确,您希望进行元编程并拥有通用数量的端口。这在VHDL中是不可能的。但是,您可以使用多维数组:
-- declare array type VHDL-2008-style
-- put this in a package
type slv_array is array(natural range<>) of std_logic_vector;
entity test is
generic (
-- number of outputs, at least one output
num_outputs : positive := 1
);
port (
my_inputs : in std_logic_vector(1 downto 0);
my_outputs : out slv_array(num_outputs - 1 downto 0)(1 downto 0)
);
end entity test;
然后您就可以使用这样的组件:
comp0 : component test
generic map (
num_outputs => 1
)
port map (
my_inputs => "10",
my_outputs(0) => my_output0
);
comp1 : component test
generic map (
num_outputs => 2
)
port map (
my_inputs => "00",
my_outputs(0) => my_output1
my_outputs(1) => my_output2
);