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.

[参考译文] TMS320F280049:CPU 和 CLA 上的结果不同

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/974403/tms320f280049-different-result-on-cpu-and-cla

器件型号:TMS320F280049

您好!
客户有二阶滤波器代码、此代码在 CPU 和 CLA 上生成不同的结果(系数)。 CLA 不正确、结果比较不正确、比如有一些舍入错误或32位或64位计算。

系数   仿真结果   CPU                CLA                  数据类型
C1              0.01241                0.0124099338   0.0125049111    浮点
C2              0         0.0                                 0、0                       float
C3             -0.01241               -0.0124099338   -0.0125049111   浮点
D2            1.975                     1.975                1.98791492       浮点型
D3            -0.9752                 -0.975            -0.988072157    浮点

可能是原因? 我可以通过电子邮件向您发送代码片段

此致、Holger

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

    Holger、  

    这些值是否由 CLA 上运行的代码计算?  如果是、需要检查的一点是 CLA 的舍入模式是 Setif (RNDF32 = 1)  

    组装:  

    MSETFLG RNDF32=1 

    或在 C 语言中使用内在函数(参考编译器指南-http://www.ti.com/lit/spru514)

    _msetflg (无符号短整型标志、无符号短整型值)
    
    示例:此示例将 RNDF32标志(位7)设置为0、
    将 TF 标志(位6)设置为0、并将 NF 标志(位2)设置为1。
    0b 前缀是 GCC 语言扩展、表示
    这些是二进制数。
    
    _msetflg (0b11000100、0b00000100); 

    如果情况并非如此、那么我需要更多信息

    • 测试用例
    • 编译器版本
    • 使用的确切构建选项

    谢谢你

    Lori