TI论坛
直播中

刘丽艳

7年用户 225经验值
私信 关注
[问答]

关于TMS320C54X的dsplib中ldiv16函数的问题

TMS320C54X的dsplib中ldiv16函数,有时候计算结果是正确的,有时候相差挺大,一般会相差2倍的关系,分析所给的数据不存在溢出问题,例如被除数为65536000,除数为1000,实际计算结果为0.504,理论计算结果为1.并且这个DSP库没有该函数的说明。

回帖(4)

余少虹

2018-7-31 06:20:43
你好,
根据short ldiv16(LDATA *x, DATA *y, DATA *r, DATA *exp, ushort nx), 请检查一下x是否是Q.31格式, y, r是否是Q.15格式.  
举报

刘丽艳

2018-7-31 06:29:21
引用: vuywsdfwf 发表于 2018-7-31 06:20
你好,
根据short ldiv16(LDATA *x, DATA *y, DATA *r, DATA *exp, ushort nx), 请检查一下x是否是Q.31格式, y, r是否是Q.15格式.  

你好,谢谢你的回复,已经确定x是Q31,y是Q15,r是Q15格式,exp是short类型,我发现如果y小于100的时候算的结果比较精确,我试过125,250,500,1000,2000都发现结果似乎是理论计算的0.5倍,而分析所给的测试程序中的数据,结果是不会出现该问题的。
举报

余少虹

2018-7-31 06:40:18
引用: ctx1129 发表于 2018-7-31 06:29
你好,谢谢你的回复,已经确定x是Q31,y是Q15,r是Q15格式,exp是short类型,我发现如果y小于100的时候算的结果比较精确,我试过125,250,500,1000,2000都发现结果似乎是理论计算的0.5倍,而分析所给的测试程序中的数据,结果是不会出现该问题的。 ...

这可能是ldiv16的bug, c55x ldiv16也有类似的问题, 因为C54x是老器件, dsplib已经很久没有更新了. 你可以参考附件c55x ldiv16修改过的代码看是否有帮助.
举报

刘丽艳

2018-7-31 06:48:42
引用: vuywsdfwf 发表于 2018-7-31 06:40
这可能是ldiv16的bug, c55x ldiv16也有类似的问题, 因为C54x是老器件, dsplib已经很久没有更新了. 你可以参考附件c55x ldiv16修改过的代码看是否有帮助.

嗯,好的,谢谢了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分