2012-05-31 115 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