工具/软件:Code Composer Studio
尊敬的团队:
在此 文档中、我们使用 Q15_ATAN。 现在客户希望将其更改为 Q10。 如何做到这一点?
请帮助。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
尊敬的团队:
在此 文档中、我们使用 Q15_ATAN。 现在客户希望将其更改为 Q10。 如何做到这一点?
请帮助。
您好 Susan、
感谢您关注 应用报告 SPRA496。
我只为 Q15小数编写了汇编代码。 函数"int q15p_atan (int)"返回由 PI 在0至 PI/4范围内缩放的角度。 因此返回值0x000 = 0.0 (Q15)等于0度、 0x2000 = 0.25 (Q15)等于 PI/4 (45度)。 Q15可提供尽可能高的分辨率、输入参数也可通过 Q15从0缩放到0x7FFF (0.999)。
遗憾的是、我无法再将 TMS320F240汇编代码重写为 Q10格式。
但是、您可以自行更改。 则可以考虑乘积移位模式 SPM。
我使用的代码是针对 SPM=1 (请见汇编指令)编写的、以处理 Q15xQ15=Q30。 在自动乘积移位模式(SPM 1)下、乘积被自动左移1位= Q31、因此得到的 Q15数字位于32位 ACC 的高16位(存储 ACCH)中。
当您选择 Q10时、乘法器产品会为您提供 Q10xQ10=Q20。 要在 ACC 的高16位中获得 Q10等效结果、您需要乘积移位模式11。 我认为 SPM 11不受 F240 DSP 内核支持、但请检查。 另一个获得 Q10结果的选项:您可以将32位中间结果右移10、以便 Q10缩放的乘积位于 ACC 的低16位。 在这种情况下、SPM 需要为0。 但请注意、由于 Q10xQ10可能超过+/-32.0的 Q10范围、您可能会溢出。
此致、
Martin Staebler
您好 Susan、
atan (x)(其中 x 可以从0到1.0)是一个非线性函数、因此查找表也是非线性的。 查找表基本上是 atan (x)函数的8位近似值。 参数 x 右移、以获得指向查找表中相应近似角度值的8位等效指针。
示例:
atan (0):0被转换为0并指向查找表中的第一个元素:0
atan (1.0):1.0被转换为128并指向 查找表中的最后一个(129)元素:8192=0.25 Q15 (等于 pi*0.25=45deg)
atan (0.5):0.5被转换为64并指向查找表中的65个元素:4836=0.149 Q15 (等于 P*0.1475=26.56deg)
atan (0.25):0.25被转换为32并指向查找表中的33个元素:2555=0.077 Q15 (等于 P*0.077=14.03deg)
等等。
这是否能回答您的问题?
此致、
Martin Staebler