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;

这是多路复用器代码

    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

听起来编译器认为你已经告诉它关于端口的两件不同的事情。您是否使用过任何component声明?

调试建议:

制作一个较小的测试用例 - 不断删除代码,直到您拥有导致错误的代码的最小子集。取出无关紧要的端口,未使用的信号,以及其他所有内容。在执行此操作的过程中,您会发现一个非常小的代码子集导致了问题,并且可能能够自己修复它。如果没有,您可以在此处发布一小段独立的代码供我们查看。只是最小的代码,没有注释掉很多行。并确保您发布的内容编译为相同的错误...

于 2012-06-01T12:08:17.050 回答