从xilinx ISE 14.2运行时,modelsim错误vsim-3421

时间:2013-12-17 07:12:46

标签: modelsim

我设计并测试了我的VHDL代码。我使用ISIM(xilinx模拟器)来测试代码。 ISIM是越野车所以我改用了modelsim SE 10c。 当我通过xilinx运行modelsim时,我在modelsim中得到以下错误

致命:( vsim-3421)值-14超出范围-7到7.

我的相关VHDL代码是

library IEEE;

使用IEEE.STD_LOGIC_1164.ALL;

使用IEEE.NUMERIC_STD.ALL;

图书馆UNISIM;

使用UNISIM.VComponents.all;

信号img_int:整数范围-7到7;

信号add1:整数范围-7到7;

信号add2:整数范围-7到7;

进程(clk)

开始

if rising_edge(clk) then

    add1 <= to_integer( signed(e(0)) ) + to_integer( signed(e(1)) ) + 

            to_integer( signed(e(2)) ) + to_integer( signed(e(3)) );


    add2 <= to_integer( signed(e(4)) ) + to_integer( signed(e(5)) ) +

            to_integer( signed(e(6)) ) + to_integer( signed(e(7)) );

end if;

结束过程;

img_int&lt; = add1 + add2;

问题在于

img_int&lt; = add1 + add2;

可以说明为什么modelsim会出现此错误吗?

1 个答案:

答案 0 :(得分:0)

因为&#39; add1&#39;的最小可能值是-7。同样适用于&#39; add2&#39;。 添加&#39; add1&#39;与&#39; add2&#39;给出最小值-14。 该值(-14)不能保存在您的&#39; img_int&#39;信号。

你可以扩展&#39; img_int&#39;的范围。例如整数范围-14到14或截断结果。

无论如何:尝试使用&#39;签名&#39;并且&#39;未签名&#39; liberary的类型&ieee.numeric_std&#39; I.S.O.类型&#39;整数&#39;。