VHDL中的可选PORT?

ref*_*fDL 3 vhdl

我正在编写IP-Core,根据用户选择的通用参数,不需要所有的OUT/IN端口.是否可以选择端口?我知道类似的东西应该是可能的,因为当我使用Xilinx IP-Core时,根据参数并不是所有的PORT都包含在内.

Mor*_*mer 6

端口不能是可选的,但端口的使用可以是,对于设计者而言,就好像它们不存在一样.

未映射(使用)的输入端口必须在实体中具有默认值,并且输出端口可以简单地保持未映射.

如果实体被声明为例如:

entity mdl_sub is
  generic(
    A_C_USE : boolean := FALSE;
    B_D_USE : boolean := FALSE);
  port(
    clk_i : in  std_logic;
    rst_i : in  std_logic;
    a_i   : in  std_logic := 'X';
    b_i   : in  std_logic := 'X';
    c_o   : out std_logic;
    d_o   : out std_logic);
end entity;
Run Code Online (Sandbox Code Playgroud)

然后该模块可以在如下所示的不同配置中使用,其中端口的使用可以根据配置而不同:

-- Using port a_i and c_o
mdl_sub_0 : entity work.mdl_sub
  generic map(
    A_C_USE => TRUE)
  port map(
    clk_i => clk_i,
    rst_i => rst_i,
    a_i   => m0_a_i,
    c_o   => m0_c_o);

-- Using port b_i and d_o
mdl_sub_1 : entity work.mdl_sub
  generic map(
    B_D_USE => TRUE)
  port map(
    clk_i => clk_i,
    rst_i => rst_i,
    b_i   => m1_b_i,
    d_o   => m1_d_o);
Run Code Online (Sandbox Code Playgroud)

所有信号和端口都是std_logic.