17

我经常在 VHDL 中注意到某个组件有多个输出端口。即在我们的一个示例中,我们得到了以下组件:

COMPONENT eight_bitadder
  PORT ( a, b: in std_logic_vector(7 downto 0); 
        f: in std_logic; 
        C: out std_logic_vector(7 downto 0); 
        o, z: out std_logic);
END COMPONENT;

其中 z 确定结果是否为 0,而 o 在溢出时触发。

现在就我而言,我希望使用这个加法器,但是实际结果并不重要,我只想检查结果是否为“0”。我当然可以添加一个虚拟信号并将端口存储到该信号,但这似乎不必要地复杂,并且可能在合成过程中添加额外的组件?

4

2 回答 2

22

当您实例化组件时,您可以将您不关心的输出端口保持打开状态。您在下面唯一关心的信号是“溢出”。

编辑:请注意,综合工具将优化掉任何未使用的输出。

EIGHT_BITADDER_INST : eight_bitadder
  port map (
    a => a,
    b => b, 
    f => f, 
    c => open, 
    o => overflow,
    z => open
    );
于 2013-10-16T19:49:10.607 回答
3

您也可以选择不将输出与以下任何内容绑定:

EIGHT_BITADDER_INST : eight_bitadder
    port map (
    a => a,
    b => b, 
    f => f, 
    o => overflow
);

请注意,我只是没有在端口映射中包含输出 c 和 z。有些人可能会争论这个的清晰度(因为可能不清楚输出 c 和 z 是否存在),但它也将代码减少到只有必要的部分。

于 2013-10-18T08:13:58.960 回答