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';