共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 |