共2条
1/1 1 跳转至页
DSP 请教一个关于定点DSP进行浮点运算的问题
问
在用定点DSP进行浮点运算时采用Q值定标,而DSP如何实现Q值的?比如在下边这个程序中
设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1;
Qx=13,Qy=13,Qz=15,则定点减法为:
x=24576;y=25295;
temp=25395;
temp=x-temp=24576-25395=-819;
因为Qx<Qz,故 z=(int)(-819<<2)=-3276。由于z的Q值为15,所以定点值z=-3276即为浮点值z=-3276/32768=-0.1。
在得出运算结果z的时候,DSP如何知道z是Q15的?也就是说,DSP在硬件上如何将3276认为是0.1这个小数值?
我的理解是这样的,是否z这个变量只是在整个运算过程中作一个中间变量的作用,在整个程序的计算的最后才将计算结果根据其定标的Q值转换成小数,以实现小的舍入误差,就像上一个例子一样,z的值-3267也只是一个中间变量,如果这个结果需要最终输出,仍然需要把-3267/32768,计算得到-0.1这个实际的浮点小数。
这个理解是否正确?请各位前辈指教
答 1: re需要输出吗?不需要。所以…… 答 2: re:sourse呵呵,恍然大悟!多谢多谢!
另外有个问题想问问你,这样由程序员进行定标写的浮点运算程序
与用编译器支持的浮点型的运算,在速度上相差多大?
设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1;
Qx=13,Qy=13,Qz=15,则定点减法为:
x=24576;y=25295;
temp=25395;
temp=x-temp=24576-25395=-819;
因为Qx<Qz,故 z=(int)(-819<<2)=-3276。由于z的Q值为15,所以定点值z=-3276即为浮点值z=-3276/32768=-0.1。
在得出运算结果z的时候,DSP如何知道z是Q15的?也就是说,DSP在硬件上如何将3276认为是0.1这个小数值?
我的理解是这样的,是否z这个变量只是在整个运算过程中作一个中间变量的作用,在整个程序的计算的最后才将计算结果根据其定标的Q值转换成小数,以实现小的舍入误差,就像上一个例子一样,z的值-3267也只是一个中间变量,如果这个结果需要最终输出,仍然需要把-3267/32768,计算得到-0.1这个实际的浮点小数。
这个理解是否正确?请各位前辈指教
答 1: re需要输出吗?不需要。所以…… 答 2: re:sourse呵呵,恍然大悟!多谢多谢!
另外有个问题想问问你,这样由程序员进行定标写的浮点运算程序
与用编译器支持的浮点型的运算,在速度上相差多大?
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |