0

コードで次のエラーが発生します。** Failure: (vsim-3808) Incompatible modes for port "d_out".

新しいコンポーネントを指定し、そのエンティティを定義し、ポートを接続しました。すべて問題ないように見え、コンパイルさえしましたが、tb を実行すると、見出しに表示されるエラーが書き込まれました。

これはコードの一部です:

signal jal_nor_out: std_logic;
 jal_unit: jal_nor
port map(
data_in(5 downto 0) => instruction(31 downto 26),
d_out => jal_nor_out
);
jal_writedata_mux : Mux_2to1_xN
port map(
    sel => jal_nor_out,
    d_in1 => WriteData,
    d_in2 => pc_inc,
    d_out => data_mux_out
    );

そして私が持っている別のファイルで:

    entity jal_nor is
    port(
    data_in : in std_logic_vector(5 downto 0);
    d_out : out std_logic
    );
end jal_nor;
architecture bhv of jal_nor is
    begin
        process (data_in) 
          begin
            if data_in="000011" then
                d_out <= '1';
            else
                d_out <= '0';
            end if;
        end process;
    end bhv;

これはMuxコードです

    entity Mux_2to1_xN is
  generic(
           WIDTH :     integer := 32);
  port(
        sel   : in  std_logic;
        d_in1 : in  std_logic_vector((WIDTH - 1) downto 0);
        d_in2 : in  std_logic_vector((WIDTH - 1) downto 0);
        d_out : out std_logic_vector((WIDTH - 1) downto 0));
end Mux_2to1_xN;

助けはありますか?

4

1 に答える 1

1

コンパイラは、ポートについて2つの異なることを伝えたと考えているようです。component宣言を使用しましたか?

デバッグのアドバイス:

小さなテストケースを作成します-エラーの原因となるコードのサブセットが最も小さくなるまで、コードを切り刻み続けます。関係のないポート、未使用の信号、その他すべてを取り出します。これを行う過程で、非常に小さなコードサブセットが問題を引き起こしていることがわかり、おそらく自分で修正できるでしょう。そうでない場合は、ここに投稿して確認できる小さな自己完結型のコードがあります。たくさんの行がコメントアウトされていない、最も小さなコードだけです。そして、投稿したものが同じエラーにコンパイルされることを確認してください...

于 2012-06-01T12:08:17.050 に答える