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;

inoutポートを使用しないように全体の設計を変更することは可能ですか?

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 ポートに変換できると思います。しかし、問題は次のとおりです。これは常に可能ですか? 2 つの設計が意味的に同等になるように、常に入出力ポートを設計で置き換えることはできますか?

4

1 に答える 1

0

あなたの「s」信号が何であるかはよくわかりません。しかし、これはあなたが望むものであり、有効にするために = 1dのトライステート可能な出力であると仮定しますs

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 に答える