FPGA中实现对数运算主要有三种方法:
(1)在外部直接算好对数值,按照数值范围做个表,存在ram里,到时候查表。为了减少表深度,提高资源利用率,可以考虑去掉部分低位数值,损失一定的精度。
(2)使用cordic算法求解对数。
(3)log10(x)=ln(x) * log10(e) , log10(e)是常数可以手动先计算好,用IP Core的话多个乘法器。
下面介绍使用IP核floating-point来计算对数,该IP计算对数时,计算的是Ln(A)(A是输入),如下图所示:

输入是浮点数,所以如果我们在FPGA内使用的定点数,则需要先将定点数转化为浮点数:

实现对数运算时,可以使用DSP核心,也可以不用,IP配置中提供了三个等级:

对于Flow Control可以选择带缓存的Blocking模式,也可以选择没有缓存的NonBlocking模式,延时也可以选择从0到23:

上面也提到,计算LOG的输入是浮点数,如果需要,可以继续使用floating-point来实现定点数转浮点数,对于转换IP的输入可以自主设定如下图所示,这里设为int16+fra16,输出为单精度浮点数,可以直接给计算LOG的IP核:

我们要计算以任意数为底的对数时,可以通过来计算,由此完成一次计算,需要两个定点转浮点的IP(fixtofloat),两个LOG的IP(log不使用DSP),以及一个除法IP(divide),最后再将浮点数转为定点数输出,综合实现后的资源占用情况为:

一次简单的RTL仿真为:

原文标题:FPGA中实现对数运算
文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
-
dsp
+关注
关注
559文章
8216浏览量
364003 -
FPGA
+关注
关注
1655文章
22287浏览量
630315 -
乘法器
+关注
关注
9文章
221浏览量
38526
原文标题:FPGA中实现对数运算
文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
详解FPGA定点数计算方法
如何使用FPGA实现SRIO通信协议
浮点数是如何实现开平方运算的
如何利用Verilog HDL在FPGA上实现SRAM的读写测试
使用Simulink自动生成浮点运算HDL代码(Part 1)
FPGA测试DDR带宽跑不满的常见原因及分析方法
无位置传感器无刷直流电机的+FPGA+控制实现
基于FPGA的压缩算法加速实现
进群免费领FPGA学习资料!数字信号处理、傅里叶变换与FPGA开发等
AN-643:数字可变光衰减器中ADuC832 MicroConverter IC和对数转换器AD8305的闭环控制电路实现
FPGA在AI方面有哪些应用
基于FPGA实现图像直方图设计

FPGA中实现对数运算的方法
评论