Можно ли преобразовать входной сигнал в два сигнала (вход и выход) в 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';
Другие вопросы по тегам