c程序开发与优化
AI Audio
专注嵌入式AI,VR Audio,语音和音频编码器,语音质量增强技术。qq:122268312
展开
-
定点c程序之一:定标
<br />定点DSP把所有数据都当作整数来处理ü在定点DSP芯片中,数字运算都是基于整形数的运算,也即所有操作数都用整形数表示。运算精度取决于整形数的字长,一般定点DSP的字长为16、24、或32。ü定点数用2的补码表示,16比特定点数表示的数值范围-32768~32767ü如1111111111111100b = -4ü定点DSP如何处理小数/分数?ü数的定标:设定小数点在16位整形数的适当位置,小数点前面部分表示数的整数部分;小数点后面部分表示小数部分。<br />当小数点处于不同位置时,所能表示的数原创 2010-08-19 00:31:00 · 1324 阅读 · 0 评论 -
定点c程序之二:定点加减法
1. 定点数表示的基础:Q值。Q值就是小数点的位置。<br />16位整形数表示小数<br /><br /> <br />32位整形数表示小数<br /><br />2. 将浮点加减法转化为定点加减法最重要的是必须保持两个操作数的Q值一致。如果两者不一致,一般地,为了保证数的精度,在运算前将Q值小的数调整为与Q值大的数的Q值,同时必须注意是否溢出。<br />设x的Q值为QX,y的Q值为Qy,加法/减法结果z的定标值为Qz,则 <br />z=x+y <br />zq*2^(- Qz) = xq*2^(原创 2010-08-19 22:26:00 · 982 阅读 · 0 评论 -
定点c程序之三:乘法
两个有符号定点数相乘结果将导致两个符号位,为此DSP处理器一般都设计了硬件控制逻辑,可以直接将乘积结果左移移位,去掉符号位以后再存储。两个16比特定点数相乘得到的是32位定点数,一种处理方法是直接保留32比特乘积,进行后续处理;另一种处理方法是舍弃低16比特,降低精度。<br />设浮点乘法运算的表达式为:<br />float x,y,z;<br />z=xy ;<br />假设经过统计后x的Q值为Qx,y的Q值为Qy,乘积z的Q值为Qz,则<br />zq*2^(- Qz) = xq* yq*2^(原创 2010-08-21 23:44:00 · 992 阅读 · 0 评论 -
定点c程序之四:除法
<br />设浮点除法运算的表达式为:<br />float x,y,z;<br />z=x/y ;<br />假设经过统计后被除数x的Q值为Qx,除数y的Q值为Qy,商z的Q值为Qz,则<br />zq*2^(- Qz) = xq*2^(-Qx)/ yq*2^(- Qy) <br />zq=(xq)*2^( Qz -Qx +Qy)/yq<br /> <br />但是在通用的DSP中,一般不提供单周期的除法指令,必须用除法子程序来完成定点数除法。除法是乘法的逆运算,乘法包括一系列的移位和加法;除法可分解原创 2010-08-22 21:44:00 · 1572 阅读 · 0 评论 -
定点c程序之六(完):Q值的选取和动态Q值
<br />by c6000@sina.com<br />在定点算法实现中,由于数的定标直接影响到运算的精度,因此,确定各个变量的Q值非常重要.当Q值选得过大时,可能导致变量取值超出其所能表示得范围而导致失真;当Q值选得过小时,又会因为其所能表示的精度太低达不到较好的算法性能。<br />确定Q值的问题实际上就是要确定变量的动态范围。<br /> <br />设变量的最大绝对值为|max|,取一个整数n,使其满足<br /> 2^(n-1)< |max|<2^(n)<br /> 则有<br /> 2原创 2010-08-24 22:57:00 · 2706 阅读 · 0 评论