DSP浮点转定点方法总结

上传人:豆*** 文档编号:201720351 上传时间:2023-04-20 格式:DOC 页数:30 大小:252KB
收藏 版权申诉 举报 下载
DSP浮点转定点方法总结_第1页
第1页 / 共30页
DSP浮点转定点方法总结_第2页
第2页 / 共30页
DSP浮点转定点方法总结_第3页
第3页 / 共30页
资源描述:

《DSP浮点转定点方法总结》由会员分享,可在线阅读,更多相关《DSP浮点转定点方法总结(30页珍藏版)》请在装配图网上搜索。

1、目录定点运算措施31. 数 的定 标.2c语言:从浮点到定点412.加法4122乘法6123除法71.2. 三角函数运算.2.5开方运算1.3 附录0.3. 附录:定点函数库10132附录:正弦和余弦表28定点运算措施1.1 数的定 标对某些解决器而言,参与数值运算的数就是16位的整型数。但在许多状况下,数学运算过程中的数不一定都是整数。那么,如何解决小数的呢?应当说,解决器自身无能为力。那么是不是就不能解决多种小数呢?固然不是。这其中的核心就是由程序员来拟定一种数的小数点处在16位中的哪一位。这就是数的定标。通过设定小数点在6位数中的不同位置,就可以表达不同大小和不同精度的小数了。数的定标用

2、Q表达法。表1.列出了一种16位数的1种Q表达能表达的十进制数值范畴和近似的精度。Q表达精度(近似)十进制数表达范畴Q150.0002-1X.99695Q140.00-X199930Q1300001-X3.9987790.00287.9755Q1.005-1X15.99511Q1000-23.990234Q90.002-64X3.998069Q8005128X127.99603Q7.0122.99215Q60.02-12X.98047550.4024X103.9685Q40.08-2048X20.9730.-409X409.875Q2.2-812915Q.51684X163835Q0-328X

3、3277表1.1 Q表达、S表达及数值范畴从表1可以看出,同样一种16位数,若小数点设定的位置不同,它所示的数也就不同。例如:16进制数H=812,用Q0表达16进制数H0.25,用Q1表达从表.1还可以看出,不同的Q所示的数不仅范畴不同,并且精度也不相似。Q越大,数值范畴越小,但精度越高;相反,Q越小,数值范畴越大,但精度就越低。例如,Q的数值范畴是-32768到+32767,其精度为1,而Q15的数值范畴为-1到0.9999695,精度为 1/276=00051。因此,对定点数而言,数值范畴与精度是一对矛盾,一种变量要想可以表达比较大的数值范畴,必须以牺牲精度为代价;而想提高精度,则数的表

4、达范畴就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充足考虑到这一点。浮点数与定点数的转换关系可表达为:浮点数(x)转换为定点数():定点数()转换为浮点数(x):例如,浮点数 x=.,定标=15,则定点数,式中表达下取整。反之,一种用 Q=15 表达的定点数16384,其浮点数为1638415=1634/268.5。1.2 语言:从浮点到定点下面所描述的几种基本运算是浮点到定点转换中常常遇到的,从中可以体会到某些基本的技巧和措施。1.1加法设浮点加法运算的体现式为:floa x,y,z;z=x+;将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标值同样

5、。若两者不同样,则在做加法/减法运算前先进行小数点的调节。为保证运算精度,需使Q值小的数调节为与另一种数的Q值同样大。此外,在做加法/减法运算时,必须注意成果也许会超过16位表达,即数的动态范畴。如果加法/减法的成果超过16位的表达范畴,则必须保存3位成果,以保证运算的精度。1 成果不超过6位表达范畴设的Q值为Qx,的Q值为Qy,且QxQy,加法减法成果z的定标值为Qz,则z = 一般状况,我们取x,y和的定标值相似,即Qx =Qy Q = 。因此定点加法可以描述为: short x, y, z ; /Q z = dd (x,y); /a函数add ( )有防饱和机制,如果可以确信 不会溢出(

6、-215 = = 21-1),可以直接写为 z = x + .定点减法:shorx, y, z ; /Qa = sb (x,y); /Qa函数sub( ) 有防饱和机制,如果可以确信x- y不会溢出(-21 y,加法成果z的定标值为Q,则定点加法为:int ,y;lo temp,z;emp=(Q-Qz),若QxQzz=emp(Qz-x),若QQ一般状况,我们取x,y和z的定标值相似,即Qx = Qy Q = Qa 。因此定点加法可以描述为: i x,y,z ; /Qa z = _d (,); /a函数L_ad( )有防饱和机制,如果可以确信x +y 不会溢出(-231 = z = 231-),

7、可以直接写为 = + y .定点减法: in ,y, z ; /Qa z =L_su (x,y); /a函数Lsub( )有防饱和机制,如果可以确信x - y 不会溢出(23 = z(+Qy+1-);上式中x乘的定标本来应当是Qx + Qy, 但为理解决以便,函数Lmul() 多乘了一次2,因此要再加1。函数L_ml ( )有防饱和机制,如果可以确信z = y 不会溢出(-21 = (Qx+QQz)。2. 成果超过3位表达范畴这种状况下位数超过了原则c语言的数的表达范畴,只能用数组来保存变量。定点乘法可表达为:ine NN_DIGT unsgned int NN_DIIT xdigts; NN

8、_DIIT ydigits; N_DGT z 2* igits; NNul(z,x,y, igs);应注意的是以上32位乘法都是无符号数操作,如果需要做有符号数乘法,则需要根据乘数的符号来判断。例 设 = 8.4,y = 6.8,则浮点运算值为 1.368 = 77.1;设 Qx = 10,Qy =9,z 5,因此int x = 1881;10nt y 1841;9z =Lmul(1841,18841)(0+91-5) = 14 = 216;由于z的定标值为,故定点 z 21666即为浮点的 z 21666/2 = 6.08。例设x 18.4,y 36.8,则浮点运算值为z =18.46.8

9、67.12;#defne N_DIGIT usind nt设Qx = 2, Qy = 2, y 2,因此N_D = 1.4 * (12); /20NNDIITy = 368*(120); /Q2NN_DIGIz2;Q20NN_Mt(z,&x, &y, 1); Q0N_Rshif(,z, 0, 1); /(42)12.除法1.32位除法设浮点除法运算的体现式为:foa,y,;z =y;假设通过记录后被除数x的定标值为Qx,除数y的定标值为Qy,商z的定标值为z,则z/y = 因此定点表达的除法为:intx,y,z;z = _shl(x,(Qz-Q+Qy))/; /z2 32位以上的除法这种状况下

10、位数超过了原则c语言的数的表达范畴,只能用数组来保存变量。#defne NNIGnsigned ntN_DIGIT 2*digits;/xNNDIGIT y igits; /Qy_IGIT z digits; /zNN_Lhf(x, x, (Qz-Qx+Qy), 2);N_Div(z, x, *digits, y, digits); 做以上运算是要保证Q-QxQy 32,否则要多次移位来实现;应注意的是以上除法都是无符号数操作,如果需要做有符号数除法,需要根据被除数和除数的符号来判断。例1: 设x 14,y = 3.,浮点运算值为 x/y = 18.4/6.8 = .5;根据上节,得x = 1

11、0,Qy =9,z 15;因此有in x = 18841, = 1884;z =L_sl(x, (11+)/18841; / L/881 = 134由于商的定标值为15,因此定点z = 1638即为浮点 z= 6384/5= 0。1.2. 三角函数运算 正弦和余弦一般求s、sin用查表法,措施是预先定义正弦和余弦表,表的长度及表中各元素的定标是根据精度规定拟定的,精度规定越高,表的长度及元素的定标都可以增长。余弦表制作环节:1) 计算cos(2*pi*t/N),其中 N,是02i之间的采样点数。2) 将以上成果(浮点数)按精度规定定标,如5, 3) 建立数组tab_osN,将以上成果作为该数组

12、的元素。正弦表的定义措施同上。附录2中给出了余弦表tab_cs36和正弦表tab_sin3,精度是Q。例1求os(*pi*x32), x是定标为x的整数o(2*pi*x/3) = co(*i *(6*x /32) /360);程序如下: int u =(L_mult(360,x)/2)%30; /Qx nresut; reslt = tab_cosu; /Qx例 求cos(x), 是定标为Qx的整数os(x) = cs(2*i*(360/(2*i))/0),程序如下: int _x= 3.415(Q); /Qx t u = (L_mult(36, )/ (2*pi_Qx))%60; / int

13、 rest; esul = tbcos;/Qx 上式中将pi定标为x的定点数。如何进一步提高精度一般可以增长表的长度即采样点数来提高精度,但在既有采样状况下,也有措施来提高精度。措施是求出两采样点之间的斜率,根据目前采样点的位置求出更加精确的值。 例3求cos(x),x是定标为Qx的整数 ti_ 3.141(10.5时可以采用拟合的措施。因此: x bs(x)0.5y= atan(x) (-006)*x.2 .x +.3 05ab(x)5拟合可以调用matlb的命令ployfi来做,例如:star:0.1:top;y=an(x);paplyfit(x,2);上式中的运算都是简朴的乘法运算,较为

14、简朴。1.2.5开方运算浮点开方运算描述为:float , ;y = qt(x);定点求开方有多种措施,多种措施在收敛速度上不尽相似,下面简介几种常用的迭代算法。1.ewon-Raphson-Babylonan 算法:给定整数N, 求sqrt(N)。一方面拟定初值x0, 然后运用一种简朴的迭代公式:xn+1= (xn +N/xn)/2 迭代次数的选择:迭代次数与初值x0的选用很有关系,0越接近sqt(N), 收敛越快。但总的来说,该措施收敛较快。缺陷是收敛时间不拟定。2拟定收敛速度的算法:该措施描述如下: intq(nt x) it test, ep; if (x 0) retur(1); f

15、 (x =0) return(0); step 11; tes = 0; hl (step !=0) reister int ; = (tet+ stp) *(ts + sep); if(h= 1; retun(test);以上例子是32位开放运算,3位以上的开方运算可参照附录 void fisqrt(UINT4* a,UINT4* b,int dgts), 措施同上。求开方还可以运用线性拟合的措施,由于曲线变化较快,必须根据自变量的范畴分段拟合才干达到抱负的精度。1.3 附录1.3.1附录1:定点函数库*_ | FunctonNae : L_add | | | urpose : | | |

16、2 bis additon of h to32 it varibles(L_va1+var2) i | oerflow otrol andsatration;hrslt i se +whn | ovrflowcrs a -we unerlwoccurs. | | | omlexity igh :2 | | | Input : | | | L_var 32 b long signd intger(Wo) hs value fall n th | | rang :0x000 0000 = L_ar 0x7f fff. | | L_va 2bit losignedinte (Word32) hose

17、vlue fls in the | ange :0x8000 000 = Lvar3 = 0x7ffffff. | | | Ouputs : | | | non | | | | RunValue : | L_r_out | | 32bi ongiediteer (od2) wse vlefalls in th | | range : x8000 0 = L_vrou = xff ffff | |_|Word2 L_ad(or2 L_ar1, Wor32 _var)/*_ | | | nco Name: L_su | | Prpse : | | 32 is stracio of he wo3bt

18、 riables (L_v1L_ar2) wh | | erlw contro ad saturion; theresl i et t+ hn overlow occs ort hen unerflow ocurs. | | Compexit weight : 2 | | Inpus : | | var 32 bit lng sgneditege (Word32) hose valuefalin th | | rang : 0x000000 = _var3= ff fff. | | | L_va2 32 btlnigd nter (W3) whose vae fallsin the | ang

19、e : 0x00 00 = r3 =x7ff fff. | | | Oupt: | | | none | | | RetunVle: | | | L_v_out | | 2bilg sied ntege(Wd32) se vaufas i the | ange : 0800 000= L_var_out= x7ff ffff. | |_|od3 L_sb(od32 _var1, Word32_a2)/*_ | Function Nme : add | Prpose: | | | | Performs th aditin (var1r2) wt ovefwcotroland auion; | h

20、e 1 bitreultis st +3267 en rflow ocusor t -3268 | hen rflw ocurs. | | | ompleity wight: 1 | | | puts : | r1 | 1 bi shor signe ieger(W16) hse ale fll n the | | range :0xfff80 vr1 = 0x0000 7ff. | vr2 | 16 bit short iged inger (Word16)hosevle falls in he | age :xfff 800 = r1 = 0x007ff. | | Otpts : | |

21、| nne | | Return Value : | | var_out | | 6 bit shor signedinter (Wrd16) wose alue fall inhe | ange: xfff 8 =va_t 0x0007fff. | |_|*/ord1add(Wrd16 var1,Word16 var2)/*_ | Fuctn Name: saur | | Purpo : | | ii the 3 inptto thnge f a 16 bit wo. | | nput: | | L_ar1 | | 32 biton snedintger (Word2)w vauefl in

22、 te| | range: x800 0000 = L_var1 =0x7ff fff. | | | | utputs: | | | | nne | | | RurVlu : | | | vr_out | 16 bi hort signed intgr (rd16) whs vaufal in te | | ge : 0ffff80=vout = 0x0007ff. | |_|*Wrd1 sature(Wrd32 _va1)/_ | | Functon Nm: sub | | | | Purpose: | Pefos the subtactin (var1+ar2)ith overfow on

23、rolnd stu | ration;the bit rsultis sta +3767 hn ovrlowoccu rt | -378 wheundelo occurs. | | Comlit eit: 1 | | | Inpu : | | var | | 16 hor sgned inegr(Word6) hose vale fls n he| | rane : 0ffff 800 var1=0000fff | | | var2 | | 1 bit hor ineditee (Wor6) ose vaue falls inte | re : 0xffff 000 =v= x000 fff.

24、 | | | utpts : | | | | nne | | | eturn Value : | | | r_ou | 16itshort si nge (Wd16) whose vuefalls in th | rnge : 0xfff800 = arout =0x000 f. |_|*/Wrd6 su(Wor6 vr1,ord16 var2)/*_ | | Fnction ame : L_ml | | | Pupose : | | | L_mults he 2 bit resulto the muplicati ofv1 ties var2 | with one shft left i: | | L_mlt(va1,var) shl(vr1me va2),1) ad | L_mlt(276,-3276) = | Compleity weiht : 1

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!