FPGA(五):实现数学函数

本文详细探讨了在FPGA中实现数学函数的方法,包括硬件除法的三种策略:乘法和移位、迭代除法以及Goldschmidt方法。Goldschmidt方法提供了一种高效的流水线除法方案。此外,还介绍了泰勒和Mactaurin级数展开以及CORDIC算法在计算三角函数时的优势。这些方法在硬件实现中各有优劣,适用于不同的计算需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、硬件除法

    硬件除法运算与乘法和加法不同,没有简单的逻辑操作,所以需要用其它的办法来解决。

1.1 乘法和移位

    利用乘法和移位操作。除法可以等效为乘以一个数,再除以一个数,这两个数都是2的幂,所以可以采用移位来代替。

1.2 迭代除法

    对于定点数的除法可以用一个比较器和一个减法单元来构造。

1.3 Goldschmidt方法

    Goldschmidt方法比拆开迭代环路方法更加有效的方式提供流水线处理除法的方法。

    Goldschmidt算法背后的概念时用近似1/D的数值与N相乘来计算Q=N/D,再通过逐步的逼近来获得真正的商。具体的步骤如下:

(1)对N和D移动定点到使得N≥1和D≤2的位置。在浮点操作的意义上,这个称为归一化分子和分母。

(2)从查找表找一个初始的1/D近似值开始,并命名它为L1,取决于应用,8到16位的精度常常是足够的。

(3)计算第一个近似值q1=L1*N和误差项e1=L1D(当迭代接近无限时它将接近1)

(4)假设L2=-e1(2的补码)开始迭代。

(5)e2=e1*L2和q2=q1*L2

(6)类似步骤4,L2=-e1,继续逐步的迭代。

2、泰勒和Mactaurin级数展开

    泰勒和Mactaurin级数可以利用分解诸如指数、三角函数和对数称为简单的乘和加的操作,更好的适合硬件。

    泰勒展开式:

    

   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值