将 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,
  ...
);