VHDL双向总线不匹配

时间:2016-10-07 14:37:25

标签: vhdl

我有一个16位输入总线的模块。在我的顶级实体中,我只想连接其中的4个(也是双向的)。直接连接会导致错误导致

port map( IO16bit => IO4bit )

所以我通过内部信号连接m

signal temp : std_logic_vector (15 downto 0);
port map(IO16bit => temp);
IO4bit <= temp(3 downto 0);

但现在我收到错误: 三态节点不直接驱动顶级引脚 并将扇出转换为OR门

我在这里失去了双向性。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用port map中的范围,然后将其余内容连接到dummy,如:

signal dummy : std_logic_vector(15 downto 4) := (others => 'Z');
...
port map(
  IO16bit( 3 downto 0) => IO4bit,
  IO16bit(15 downto 4) => dummy,
...

这将编译为模拟,但您必须检查您选择的综合工具是否也可以接受构造,并正确处理它。在可综合设计中使用内部inout端口通常是一个问题。