VHDL 中的可选端口?
Optional PORTs in VHDL?
我正在编写一个 IP 核,根据用户选择的通用参数,并非所有 OUT/IN 端口都是必需的。是否可以有可选端口?我知道类似的事情应该是可能的,因为当我使用 Xilinx IP-Cores 时,根据参数,并非所有端口都包括在内。
端口不能是可选的,但端口的使用是可以的,这对设计者来说就好像它们不存在一样。
未映射(使用)的输入端口必须在实体中具有默认值,输出端口可以简单地保持未映射状态。
如果实体声明如下:
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;
然后模块可以在不同的配置中使用,如下所示,其中端口的使用可以根据配置而有所不同:
-- 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);
所有信号和端口都是std_logic
。
我正在编写一个 IP 核,根据用户选择的通用参数,并非所有 OUT/IN 端口都是必需的。是否可以有可选端口?我知道类似的事情应该是可能的,因为当我使用 Xilinx IP-Cores 时,根据参数,并非所有端口都包括在内。
端口不能是可选的,但端口的使用是可以的,这对设计者来说就好像它们不存在一样。
未映射(使用)的输入端口必须在实体中具有默认值,输出端口可以简单地保持未映射状态。
如果实体声明如下:
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;
然后模块可以在不同的配置中使用,如下所示,其中端口的使用可以根据配置而有所不同:
-- 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);
所有信号和端口都是std_logic
。