VHDL:仅使用部分输出端口

VHDL: using only portion of outport

我实例化了一个具有 32 位输出端口的实体。我只需要第 4 位到第 15 位,它们将进入某个信号 s_a。我以为我可以用这种方式实例化它,但 Vivado 不喜欢它:

WHATEVER: entity work.example_entity
  port map(
    o_port( 15 downto 4 ) => s_a
  );

我知道您可以在端口中做一些类似的事情,只要我将所有位都设置为如下所示,Vivado 似乎就可以了:

WHATEVER2: entity work.other_entity
  port map(
    i_port( 7 downto 4 ) => ( others => '0' ),
    i_port( 3 downto 0 ) => s_b
  );

其中 i_port 是一个输入端口,s_b 是一些适当大小和类型的信号。

有没有什么方法可以只从输出端口提取比特的子集,而无需将整个端口连接到全宽信号并从中提取比特?

正如 user16145658 所说,答案是否定的。 open 关键字仅适用于整个输出端口,包括所有位,不能用于单个位。如果您使用输出端口中的任何位,那么它们都必须去某个地方。