实体中可变数量的“in”端口?

时间:2013-08-17 17:28:01

标签: simulation vhdl

我正在尝试模拟具有n楼层和m升降机的目的地控制升降控制器。因此,从每个楼层,用户可以进入目的地楼层以获得电梯号码作为回报。因此,为了模拟这种电梯控制器,我需要有变量in端口(这将等于楼层数),每个都是整数类型。我尝试在谷歌搜索但找不到任何有用的东西。有人可以建议我如何做到这一点吗? 提前谢谢。

2 个答案:

答案 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;