我正在尝试模拟具有n
楼层和m
升降机的目的地控制升降控制器。因此,从每个楼层,用户可以进入目的地楼层以获得电梯号码作为回报。因此,为了模拟这种电梯控制器,我需要有变量in
端口(这将等于楼层数),每个都是整数类型。我尝试在谷歌搜索但找不到任何有用的东西。有人可以建议我如何做到这一点吗?
提前谢谢。
答案 0 :(得分:2)
在VHDL中,您可以使用无约束数组作为端口:
entity myDevice is
port ( floors : in std_logic_vector;
lifts : in std_logic_vector
);
end entity myDevice;
端口的大小是在详细说明中通过连接信号的大小确定的。如果您需要知道架构中端口的大小,只需使用'length
,'range
或任何其他适当的属性:
architecture RTL of myDevice is
begin
pr_control : process(all) is
begin
-- Code, code, code...
for n in lifts'range loop
process_lift(n);
end loop;
-- More code ...
end process pr_controll;
end architecture RTL;
答案 1 :(得分:0)
您可以随时执行以下操作:
entity controller is generic (
N : integer;
M : integer
); port (
Floors : in std_logic_vector(N-1 downto 0);
Lifts : in std_logic_vector(M-1 downto 0)
);
end controller;
您可以找到更多此here的例子。
或者也许:
package foo is
type integer_array is array (integer range <>) of integer;
end package;
entity controller is generic (
N : integer;
M : integer
); port (
Floors : in foo.integer_array(N-1 downto 0);
Lifts : in foo.integer_array(M-1 downto 0)
);
end controller;