是的,在同时使用 Quartus® II 软件中的math_real VHDL 封装进行日志和平面功能时,存在近似问题。在某些情况下,舍入错误可能会导致计算不正确的楼层值。
例如,使用math_real包功能计算日志 2 (8.0) 时,正确的答案应该是 3.0,但 Quartus II 软件中的实际计算值是 2.999999999999996。如果结果被楼层,结果是 2.0 而不是 3.0。
例子
floor(log2(real(8))) = 2.0
要解决 Quartus® II 软件中的这一问题,使用以下选项之一
- 如果应用平面功能进行日志计算,请添加一个误码余量
- 例子:
floor(0.000001 log2(real(8))) = 3.0 - 使用整数转换功能而不是车间功能
- 例子:
integer (log2(real(8))) = 3.0
此问题计划在 Quartus II 软件的未来版本中解决。