2

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

4

2 回答 2

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;
于 2013-08-18T05:53:52.813 回答
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;

您可以在此处找到更多示例。


也许:

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;
于 2013-08-17T17:50:48.290 回答