基于DSP TMS320LF2407A的浮点数开方算法研究探析
2015-06-15 01:06
导读:计算机论文论文,基于DSP TMS320LF2407A的浮点数开方算法研究探析在线阅读,教你怎么写,格式什么样,科教论文网提供各种参考范例:毕业
摘 要: 研究DSP TMS320LF2407A浮点数开平方的
毕业
摘 要: 研究DSP TMS320LF2407A浮点数开平方的理论方法,采用改进Newton下山算法为Newton迭代法提供了更为精确的初值,从而使得收敛速度加快,精度更高。在DSP TMS320LF2407A上编写了1套算法,计算结果与理论分析基本吻合。该算法思路新颖,精度高,速度快,可移植到其它浮点数运算的单片机上。
关键词: 浮点数开平方;改进Newton下山算法;TMS320LF2407A;
A Research of Float Square Root Algorithm Based on DSP TMS320LF2407A
WANG Zhen1, CHENG Wen-feng1, ZHOU Wen-hui2
(1。Electric Power College, South China University of Technology, Guangzhou, 510640,China;
2。 PLA 76321army, Guangzhou, 5110560,China)
Abstract: It presents a new theoretical method of float square root algorithm based on TMS320LF2407A。 Using the advanced Newton descent method, the more precise starting value is given to improve Newton iteration of extracting square root, which would be faster in convergent speed and more accurate。 The arithmetic on TMS320LF2407A was programmed and the result of experiment basically accords with the theory。 The conclusion shows its features of simplicity, high precision and rapid speed。 This method may be used in other float calculation of single chipped-microprocessor。
Keywords: float square root; advanced Newton descent method; TMS320LF2407A
0引言
在较为复杂的单片机、数字信号处理器(DSP)系统中,为扩大取值范围,实现复杂的计算和控制,1般都要涉及浮点数的运算。而在1般单片机、部分定点数字信号处理器(DSP)中,没有浮点数运算指令,只能利用多位定点2进制数实现高精度浮点数运算。在单片机、DSP进行开方运算时,实现方法有多种,如牛顿迭代法、查表法、直线逼近法(线性化方法)和减奇数法等。对于查表法,当被开方数变化范围较大时,提高运算精度和减少内存占用量是相矛盾的。直线逼近法需要存贮各段线性逼近函数的斜率和截距值,当要求的运算精度增加时,线性段的划分越密,运算处理时间就越长。减奇数法的缺点是运算时间与被开方数的大小有关,被开方数很大时,运算执行时间将很长。牛顿迭代法是1种1致收敛的开平方算法,若初始值选取得合适,则只需很少的次数甚至是1次迭代运算,即可得到满足给定精度要求的运算结果,其唯1的缺点就是若初始值选取不合适的话,会影响收敛速度,甚至会导致算法发散。针对牛顿迭代法的初始值选取问题,本文用改进Newton下山算法予以解决。该方法充分利用TI公司TMS320LF2407A的强大功能,可以很方便的实现浮点数的开方。TMS320LF2407A具有较强的控制能力,但无浮点数逻辑结构,如果开发出良好的浮点数算法程序,它将能实现更强大的功能。
本文来自中国科教评价网
1。 TMS320LF2407A基本特点概述[1]
TMS320LF2407A是TI公司推出的1款定点DSP控制器,它采用了高性能静态CMOS技术,使得供电电压降为3.3V,减小了控制器的功耗。其40MIPS的执行速度使得指令周期缩短到25ns(40MHz),从而提高了控制器的实时控制能力。它集成了32k字的闪存(可加密)、2.5k的RAM和500ns转换时间的A/D转换器,片上事件管理器提供了可以满足各种电机的PWM接口和I/O功能。此外,它还提供了适用于工业控制领域的1些特殊功能,如看门狗电路、SPI、SCI和CAN控制器等,从而可被广泛应用于工业控制领域。
2。 2进制浮点数表示方法[2]
浮点数由阶码和尾数组成。IEEE的浮点数标准规定了单精度(4 b)、双精度(8 b)和扩展精度(10 b)三种浮点数的格式。最常用的是单精度浮点数,如图1所示。但这种格式的阶码不在同1个字节单元内,不易寻址,从而会影响运算速度。通常在DSP上采用的是1种变形格式的浮点数[3],前三个字节表示尾数,后1个字节表示阶码,尾数小数点在高字节左端,且最高位表示符号位,当尾数为正时,最高位为“0”(对规格化数隐含了最高位的“1”),如图2所示。
图1 常用单精度浮点数
图2 变形格式的浮点数
浮点数均按规格化方式存放,即尾数的最高位总是1,这样,对于尾数为M的规格化浮点数有 。
3。 改进Newton下山算法求解开方问题的算法原理
利用改进Newton下山算法求解平方根问题,如求 。令 ,则 ,得方程: ⑴
其正根 即 。按改进Newton下山算法公式有:
⑵
其中 。
由 和⑴式代入⑵式中,得方程:
⑶
当 时,就是1般情况的Newton迭代公式[4]。Newton迭代法已经证明当初始值 时,迭代法公式总能收敛到精确值 ,其证明如下:
(转载自http://zw.NSEaC.com科教作文网)
由⑵式可得:
⑷
由⑷式配方得:
⑸
⑹
由⑸式得:
故对任意 ,均有 。而由⑷式又有:
所以迭代序列 是下有界的单调递减序列,从而有极限 。这说明只要 ,⑷式总能收敛于 。
另外,由⑸和⑹式可以确定相对误差:
⑸和⑹式相比得:
递推得:
令 ,则
相对误差为:
因此,由 的取值就可以确定相对误差的大小。类似的,如果确定了具体的相对误差精度,也就可以求得 的取值,而初值 的选择决定了收敛速度的快慢。
正因为当初始值取为正数时,Newton迭代法总是能收敛,所以在微机、单片机等构成的实时控制系统和测量仪器中计算开平方时,1般都简单地取 。但是如果 很大,或很小时,即 偏离1很远时,收敛的步数就会很多,收敛所需要的时间就相对比较长。用改进Newton下山算法的优势在于收敛速度快,虽然只有1阶收敛(Newton迭代法有平方收敛),但可以用它来快速收敛到真实值的邻域内,获得初值,再用Newton迭代法得出精确解。
在这里由于函数的特殊性,从理论上确定 和c的关系,才是解决问题的关键。为了求出这个关系,这里首先确定三个条件:
1) 改进Newton下山算法的初值 ;
2) 约束条件 ,其中 为1个很小的正数;
3) 收敛结果 在 的邻域内,即: 。
由这三个条件构造出1函数 : ,实验检验,只需要1-2步就可以得到 。最后用Newton迭代法的初值 ,实验检验,只需要2-3步就可以得到精确值。
4。 改进Newton下山算法的软件实现
本软件编程是用C语言编写,其算法流程如下:
1) 输入初始条件 以及迭代公式;
2) 由构造函数 迭代1次,得到 ;
3) 将 代入约束条件 检验,如果符合条件则 ,相反则转到2)再迭代1次;
4) 初始值 ,代入Newton迭代法公式进行迭代;
5) 判断约束条件 ,满足则终止迭代, 即为所求的平方根值,否则转到4)继续迭代。
6) 输出平方根值 。
在编程时,在DSP TMS320LF2407A的RAM数据空间B1块的1AH-2FH进行,相邻的两个字表示1个2进制浮点数,把这个16位数送到32 bit累加器时,最低8位数屏蔽为0,另把阶码送到寄存器保存,不影响计算精度。整个算法每次循环需要进行1次浮点数加法、减法和除法运算,迭代收敛速度越快,计算循环次数越少。从上述算法可以看出,本算法编程思路清晰、简单。Newton迭代法第1次x0取下山算法的终值,以后进行迭代计算,直到最后两次近似根的差小于控制精度。
5. 结论 毕业 网
用DSP TMS320LF2407A 的C语言编写了以改进Newton下山算法求平方根的程序,并同标准值进行了比较,发现下山算法只需要1-2步。因为有了比较好的初值,所以Newton迭代公式只需要迭代2-3步,收敛速度很快,而且其精度非常高,可达到10e-6以上。随着数据变大,收敛速度也变快。如果改变控制精度,其精度还可以提高,收敛速度也可随之改变。
参考文献
[1] 张芳兰,TMS320C2xx用户指南[M]。北京:电子工业出版社,1999,79-200
[2] TI。TMS320F/C24x DSP Controller Reference Guide。
[3] 曹海欧,微机保护开平方计算中牛顿迭代的改进[J]。江苏电机工程,2006。9
[4] 郑咸义,计算方法[M]。广州:
华南理工大学出版社,2002。9