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
关键字仅适用于整个输出端口,包括所有位,不能用于单个位。如果您使用输出端口中的任何位,那么它们都必须去某个地方。
我实例化了一个具有 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
关键字仅适用于整个输出端口,包括所有位,不能用于单个位。如果您使用输出端口中的任何位,那么它们都必须去某个地方。