2012-05-31 117 views
0

我得到我的代码以下错误:** Failure: (vsim-3808) Incompatible modes for port "d_out".不兼容模式

我指定一个新的组件,定义了它的实体,连接它的端口,一切seemd OK,甚至编译,但是当我跑了结核病它写道,出现在标题

这部分代码的错误:

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; 

任何帮助吗?

+0

你得到什么样的错误? – simon

+0

**失败:(vsim-3808)端口“d_out”的模式不兼容。 – boaz

+0

我想这个错误是因为你使用输入/输出端口作为输出/输入。你确定这个错误发生在你的'jal_nor'实体吗?你的'Mux_2to1_xN'实体中有一个同名的端口。你能显示那个代码吗? – simon

回答

1

听起来像编译器认为你已经告诉了它关于端口的两个不同的东西。你有没有使用任何component声明?

调试建议:

做一个小的测试用例 - 保持斩波代码,直到你有这将导致错误代码的最小的子集。取出不重要的端口,未使用的信号以及其他所有信息。在这个过程中,你会发现一个非常小的代码子集导致了这个问题,并且可能能够自己修复它。如果没有,您可以在这里张贴一小段自成一体的代码供我们看看。只是最小的代码,并没有大量的注释。并确保你发布编译到相同的错误...

+0

组件声明错误! 我忘了告诉它,该端口是输出类型 – boaz