将 std_logic 分配给大小为 1 的 std_logic_vector 实体端口
Assign std_logic to a std_logic_vector entity port of size 1
如果我有一个实体,其数据端口 sig_i
指定如下
ENTITY input_sync IS
GENERIC(
signal_width : INTEGER := 1;
synch_depth : integer := 1
);
PORT(
clk_i : IN STD_LOGIC;
rst_i : IN STD_LOGIC;
sig_i : IN STD_LOGIC_VECTOR(signal_width - 1 DOWNTO 0);
sig_o : OUT STD_LOGIC_VECTOR(signal_width - 1 DOWNTO 0)
);
END input_sync;
并且我将此实例的通用 signal_width
指定为 1
我最终得到 sig_i
是
sig_i : in std_logic_vector(0 downto 0);
是否有可能为这个端口分配一个正常的 std_logic
,或者我是否总是需要额外的一轮引入一个中间 std_logic_vector
来分配?
signal temp : std_logic_vector(0 downto 0);
signal data : std_logic;
temp(0) <= data;
u1 : input_sync
generic map(
signal_width := 1
)
port map(
...
sig_i => temp,
...
);
阵列端口可以逐个元素或逐片映射,只要您开始映射就连续映射所有元素(尽管不一定按顺序)。
u1 : input_sync
generic map(
signal_width := 1
)
port map(
...
sig_i(0) => data,
...
);
如果我有一个实体,其数据端口 sig_i
指定如下
ENTITY input_sync IS
GENERIC(
signal_width : INTEGER := 1;
synch_depth : integer := 1
);
PORT(
clk_i : IN STD_LOGIC;
rst_i : IN STD_LOGIC;
sig_i : IN STD_LOGIC_VECTOR(signal_width - 1 DOWNTO 0);
sig_o : OUT STD_LOGIC_VECTOR(signal_width - 1 DOWNTO 0)
);
END input_sync;
并且我将此实例的通用 signal_width
指定为 1
我最终得到 sig_i
是
sig_i : in std_logic_vector(0 downto 0);
是否有可能为这个端口分配一个正常的 std_logic
,或者我是否总是需要额外的一轮引入一个中间 std_logic_vector
来分配?
signal temp : std_logic_vector(0 downto 0);
signal data : std_logic;
temp(0) <= data;
u1 : input_sync
generic map(
signal_width := 1
)
port map(
...
sig_i => temp,
...
);
阵列端口可以逐个元素或逐片映射,只要您开始映射就连续映射所有元素(尽管不一定按顺序)。
u1 : input_sync
generic map(
signal_width := 1
)
port map(
...
sig_i(0) => data,
...
);