Input 在VHDL中是否可以将一个输入输出信号转换为两个信号(输入和输出)?

Input 在VHDL中是否可以将一个输入输出信号转换为两个信号(输入和输出)?,input,port,converter,vhdl,output,Input,Port,Converter,Vhdl,Output,当我有这样一个实体时: 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_

当我有这样一个实体时:

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端口转换为in和out端口。但问题是:这总是可能的吗?inout端口是否可以在设计中始终被替换,以便两种设计在语义上是等效的?

我不太确定您的“s”信号是什么。但这就是您想要的,假设
d
是一个三态输出,要启用
s
=1

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

如果d='1'代码执行什么操作?当
s
为1时,它只是一个振荡器。你发对代码了吗?您当前的输入代码需要方向控制和某种方式来禁用
d
的驱动。这是写入
d
信号的全部代码吗?如果是这样,您就没有机会从外部发送任何不同的“输入”,因为您从未在“Z”或其他“弱”信号被覆盖的情况下驾驶。你能说一下你的代码吗?你为什么要删除inout?他想从
inout
,而不是
inout
d_in <= to_X01(d);
d <= '0' when d_out = '0' else 'Z';