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.

[参考译文] CCS:将 Q15更改为 Q10

Guru**** 2952510 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/954680/ccs-change-q15-to-q10

工具/软件:Code Composer Studio

尊敬的团队:

在此 文档中、我们使用 Q15_ATAN。 现在客户希望将其更改为 Q10。 如何做到这一点?

请帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正在使用哪款 TI 器件?

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复!

    客户使用 TMS320F240。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Susan、

                 我们在2012年宣布了该器件的停产。 该器件的整个工具链已停产多年。 因此、我们为该器件提供任何类型的支持的能力非常有限。 我们已联系 app.note 的作者、探讨是否可以提供任何支持。 感谢您的耐心等待。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答、
    1 >。
    我不知道这是不是对的
    0-0.99 Q15格式对应于0-32768
    0-0.25 Q15格式对应于0-PI /4->0-8192 45度细分为128个部分
    45/128 = 0.3515625度
    表度[129]=
    {
    0、
    0.3515625、
    。
    。
    。
    。
    44.6484375、
    45.
    }
    2 >。
    以下是 SPRA496文档 Q15_ATAN
    表[129]={
    0
    81,163,244,326,407,489,570,651
    732,813 894,975,1056,1136,1217,1297,
    1377,1457,1537,1617,1696,1775,1854,1933
    2012、2090、2168、2246、2324、2401、2478、2555、
    262、2708、2784、2860、2935、3010、3085、3159、
    3233、3307、3380、3453、3526、3599、3670、3742、
    3813、3884、3955、4025、4095、4164、4233、4302、
    4370、4438、4505、4572、4639、4705、4771、4836、
    4901,4966,5030,509,5157,5220,5282,5344,
    5406、5467、5528、5589、5649、5708、5768、5826、
    5885、5943、6、000、6058、6114、6171、6227、6282、
    6337、6392、6446、650065、54、6607、6660、6712、
    6764、6815、6867、6917、69868、7018、7068、7117、
    7166、722、7262、7310、7358、7405、7451、7498、
    7544,7589,7635,7679,7724,7768,7812,7856,
    7899,7942,7984,8026,8068,8110,8151,192,
    }
    我不理解表[1]= 81?表[1]= 163?
    表[127]= 8151?
    上表元素的生成模式是什么?
    该部分值是如何生成的

    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 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

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢! 这解决了我的问题。