8

VHDLコンポーネントをテストしようとしていますが、この 1 つの inout ポートで動作を確認できません。ポートを '1' から '-' までのすべてに設定しようとしましたが、シミュレーションではまだ 'U' として表示されます。何が間違っているのでしょうか?

4

4 に答える 4

19

Inout ポートの場合 (RAM など):

....
port(
    data    :inout std_logic_vector (DATA_WIDTH-1 downto 0);
....
-- Memory Write Block
-- Write Operation : When we = 1, cs = 1
  MEM_WRITE: process (address, cs, we, data, address_1, cs_1, we_1, data_1) begin
    if (cs = '1' and we = '1') then
       mem(conv_integer(address)) <= data;
    end if;
  end process;

 -- Tri-State Buffer control
  data <= data_out when (cs = '1' and oe = '1' and we = '0') else (others=>'Z');

 -- Memory Read Block
  MEM_READ: process (address, cs, we, oe, mem) begin
    if (cs = '1' and we = '0' and oe = '1') then
      data_out <= mem(conv_integer(address));
    else
      data_out <= (others=>'0');
    end if;
  end process;

条件付きの inout にデータの読み取りと書き込みを割り当てます。データが読み取られると、別のモジュールによって駆動されます。書き込み時は内部で駆動されます。

  • 別のモジュールによって (信号のように) 駆動されると、データはすべて「Z」とベクトル「0101010」の間で解決されます。データは「0101010」として駆動されます。
  • 他の場合: 他のモジュールはすべて「Z」でデータをドライブする必要があり、内部信号はその値をデータに入れることができます。
于 2012-07-04T04:44:04.323 に答える
7

「Z」への明示的なドライバーが必要です。

于 2009-10-02T17:30:14.110 に答える