gpt4 book ai didi

compiler-errors - to_float()和除法错误

转载 作者:行者123 更新时间:2023-12-02 10:42:46 25 4
gpt4 key购买 nike

在注释(compiler errors when compiling *.vhdl into a library - Altera Quartus II)中提出此问题后,我认为最好将它作为一个单独的问题。

这是代码摘录,是过程的主要部分:

    variable denum : integer; 
variable num : integer;
variable dividend : float (4 downto -27);

begin
dividend := to_float(num) / to_float(denum);
...

在指出to_float()函数需要其他参数的错误后,我尝试了建议的改进,但仍然遇到一些错误:
dividend := to_float(num, dividend) / to_float(denum, dividend);

返回:“float_pkg_c.vhdl(3843)的VHDL语法错误:范围的右边界必须为常数”


dividend := to_float(num, 4, -27) / to_float(denum, 4, -27); 

返回:“SM.vhd(93)处的VHDL错误:值“-27”超出目标约束范围(0至2147483647)”

错误消息指出问题源自对to_float的错误调用,但是考虑到它是最新软件包的一部分,因此我看不到该方法中的任何问题。有人可以向我澄清吗?另外我不确定是否可以用这种方式执行除法运算,我的意思是一行,返回从特定int获得的浮点数。

最佳答案

我可以在这里看到一个问题:

dividend := to_float(num, 4, -27) / to_float(denum, 4, -27);

如果您看一下定义:
-- to_float (Integer)
function to_float (
arg : INTEGER;
constant exponent_width : NATURAL := float_exponent_width; -- length of FP output exponent
constant fraction_width : NATURAL := float_fraction_width; -- length of FP output fraction
constant round_style : round_type := float_round_style) -- rounding option
return UNRESOLVED_float is
variable result : UNRESOLVED_float (exponent_width downto -fraction_width);
...

看一看fraction_width:这是自然的。当您提供-27时,这就是您当前遇到的错误。

当您在实现中往下看一点时,结果使用fraction_width的反函数。因此,您应该在调用
to_float(num, 4, 27)

关于compiler-errors - to_float()和除法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22785378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com