verilog - 如何在 verliog 中进行更准确的计算 ln(1+x)
问题描述
我想在verilog A中计算ln(1+x)。我知道代码是
y = ln(1+x);
但是如果 x 值变得非常小(ex x=3.52e-18),则 y 值变为零。在 MATLAB 中,我可以计算如下
y=log1p(x);
我想像那个代码一样计算。如何计算更准确?
解决方案
添加不属于 IEEE 标准的数学函数的唯一方法是使用 C 接口。
在 SystemVerilog 中,您可以添加此行而不必编写任何 C 代码
import "DPI-C" function real log1p(real arg);
但是在 Verilog 中,您必须调用一个 VPI 包装函数,该函数log1p
从您必须用 C 编写的代码中调用。
推荐阅读
- r - 无法上传最新的胶水包1.3.0
- r - 咕噜声,分组和过滤
- c - 在 qsort 中使用 strcmp() 比较字符串
- sql - 在 SQL 查询中使用一系列 excel 值作为条件
- php - 获取与 Woocommerce 订单项目相关的产品自定义字段
- amazon-web-services - 使用 Lambda 和 AWS Cognito 进行身份验证
- cross-compiling - 交叉编译 OpenSSL
- performance - 诊断 AWS Elastic Block Storage 性能
- reactjs - React.js 如何将数据从父组件传递到子组件
- eclipse-hono - Hono 命令和控制 API 未收到消息