Mips 端口vhdl的不兼容模式

Mips 端口vhdl的不兼容模式,mips,vhdl,Mips,Vhdl,我的代码出现以下错误:**失败:(vsim-3808)端口“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_n

我的代码出现以下错误:
**失败:(vsim-3808)端口“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;

有什么帮助吗?

听起来好像编译器认为您告诉了它关于端口的两件不同的事情。您是否使用过任何
组件
声明

调试建议:


制作一个较小的测试用例——不断地删减代码,直到您得到导致错误的代码的最小子集。去掉不重要的端口、未使用的信号以及其他所有内容。在执行此操作的过程中,您会发现一个非常小的代码子集导致了问题,并且可能能够自己修复它。如果没有,您可以在这里发布一段独立的代码供我们查看。只是最微小的代码,没有太多的行被注释掉。并确保您发布的内容编译为相同的错误…

您遇到了什么类型的错误?**失败:(vsim-3808)端口“d_out”的模式不兼容。我猜发生错误的原因是您使用了输入/输出端口作为输出/输入。您确定错误发生在您的
jal\u或
实体中吗?您的
Mux_2to1_xN
实体中有一个同名端口。你能给我看一下那个的密码吗?thanx!我确信这是因为这条线正在做这个问题,这条日航也不是我的创作,Mux 2to1 xN是给我的。不管怎样,我都会添加并显示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;