首页 > 解决方案 > 如何在 verliog 中进行更准确的计算 ln(1+x)

问题描述

我想在verilog A中计算ln(1+x)。我知道代码是

y = ln(1+x);

但是如果 x 值变得非常小(ex x=3.52e-18),则 y 值变为零。在 MATLAB 中,我可以计算如下

y=log1p(x);

我想像那个代码一样计算。如何计算更准确?

标签: verilog

解决方案


添加不属于 IEEE 标准的数学函数的唯一方法是使用 C 接口。

在 SystemVerilog 中,您可以添加此行而不必编写任何 C 代码

import "DPI-C" function real log1p(real arg);

但是在 Verilog 中,您必须调用一个 VPI 包装函数,该函数log1p从您必须用 C 编写的代码中调用。


推荐阅读