Можно ли преобразовать входной сигнал в два сигнала (вход и выход) в VHDL?
Когда у меня есть такой объект:
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;
Я предполагаю, что в некоторых особых случаях возможно преобразовать входной порт в входной и выходной порт. Но вопрос в том, всегда ли это возможно? Можно ли всегда заменить входной порт в проекте, чтобы эти два проекта были семантически эквивалентны?
1 ответ
Я не совсем уверен, какой у тебя сигнал. Но это то, что вы хотите, если d
это сложный выход с s
= 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';