0

当我有这样的实体时:

entity outer_inout is
  Port(
    clk       : in  std_logic;
    rst       : in  std_logic;
    s         : in  std_logic;
    d         : inout std_logic;
    ...       -- some ports
  );
end entity;

是否可以更改整个设计以不使用输入端口?

entity outer_inout2 is
  Port(
    clk       : in  std_logic;
    rst       : in  std_logic;
    s         : in  std_logic;
    d_in      : in  std_logic;
    d_out     : out std_logic;
    ... -- some ports
  );
end entity;

我猜在某些特殊情况下,可以将输入端口转换为输入和输出端口。但问题是:这总是可能的吗?是否可以在设计中始终替换 inout 端口以使两种设计在语义上是等效的?

4

1 回答 1

0

我不太确定你的's'信号是什么。但这就是您想要的,假设ds启用 = 1的三态输出

d_in <= d;
d <= d_out when s = '1' else 'Z';

如果您有一个集电极开路输出-您将在测试台中的某个地方有一个上拉电阻,d以“H”驱动信号,然后您可以执行以下操作:

d_in <= to_X01(d);
d <= '0' when d_out = '0' else 'Z';
于 2013-04-24T10:35:18.380 回答