碧波液压网 欢迎你,游客。 登录 注册

浮点除法运算在TMS320C3XDSP中的实现

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。
液压导航网

  1 引言

  TMS320C3X(以下简称C3X)系列芯片是TI公司推出的32位通用浮点DSP芯片。该系列芯片主要包括C30、C31、C32和VC33四个类型,这些芯片可以将浮点运算与定点运算结合起来,具有运算精度高、运算速度快等特点,因此被广泛应用于电子测量、语音识别、图像处理等领域中[1]。

  然而,在近期的项目开发过程中发现,虽然C3X系列DSP芯片有很强的数据处理能力,但是它也有不足之处――不具有专门的除法指令,而在实际的DSP应用中,需要做浮点除法的情况是非常多的。因此,本文就浮点除法在TMS320C3X中的实现进行详细讨论,并给出子程序,供需做除法运算时调用。

  2 TMS320C3X的浮点数据格式

  C3X所支持的浮点格式有三种:短浮点(16bit)、单精度浮点(32bit)及扩展精度浮点(40bit)。最常用的是单精度及扩展精度浮点格式,它们的结构分别如图1(a)和(b)。

  3 浮点数除法在TMS320C3X中的实现

  浮点数除法实现的一般算法是通过指数相减,尾数用移位减法相除的思想实现 [3]。然而这种思想必须首先将指数和尾数分离,然后分别做运算,最后将各自的运算结果组合成浮点结构,这样实现起来比较繁琐。本文在C3X中实现浮点数除法,是通过被除数与除数的倒数相乘的思想实现的。这种方法思路简捷,容易实现。如:求b/a,先求出1/a,然后a*1/b即得到b/a。由于C3X的指令集中有现成的浮点乘法指令,所以这里的关键在于求除数的倒数。本文通过牛顿迭代法求除数的倒数。

  3.1 牛顿迭代法求除数的倒数

  牛顿迭代法是将非线性方程线性化,从而得到迭代序列的一种方法[4]。对于方程f(x)=0,设x0为它的一个近似根,则函数f(x)在x0附近截断高次项可用一阶泰勒多项式展开为:

  牛顿迭代法求浮点数的倒数,每次迭代需要一次减法、两次乘法,所用的迭代次数决定最终的计算速度和精度。迭代次数越多,则精度越高,这在表1的实验数据中可以看出。对于单精度浮点数来说,最大精度可达到。但迭代次数越多速度也会越慢,因此实际运用时应综合考虑速度和精度两方面的因素,选择合适的迭代次数。

  3.2 浮点除法运算的具体实现

  具体实现牛顿迭代法求浮点数的倒数时应考虑符号问题。因此可先对除数的绝对值求倒数,然后判断除数的符号,如果为负,则对除数绝对值的倒数取负。对于除数为零的情况,这里无需特别处理。因为当a=0时,对应的指数e=-128,那么x0的指数为-(-128)-1=127,经过迭代后,超出C3X系列所能表示的最大浮点数,即溢出,此时C3X自动返回所支持浮点数的最大值,为3.402823e+38。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码: 看不清?点击更换

最新评论