我的代码出现以下错误:** 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;
任何帮助?
答案 0 :(得分:1)
听起来好像编译器认为你告诉它有关端口的两个不同的东西。您是否使用过任何component
声明?
调试建议:
制作一个较小的测试用例 - 保持斩断代码,直到你有最小的代码子集导致错误。取出无关紧要的端口,未使用的信号,以及其他所有信号。在执行此操作的过程中,您会发现一个非常小的代码子集导致问题,并且可能能够自己修复它。如果没有,您可以在此处发布一小段自包含的代码供我们查看。只是最细微的代码,而不是很多行注释掉。并确保你发布的内容编译成同样的错误...