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.

[参考译文] TMS320F28377S:C28x 结果和 CLA 结果之间的比较计算错误。

Guru**** 2473260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1132641/tms320f28377s-error-in-computations-when-compared-between-c28x-results-and-cla-results

器件型号:TMS320F28377S

我刚刚开始在 CLA 系统上工作。 为了验证我是否为 CLA 正确设置了所有内容、我使用测试向量进行了一些计算。 计算是在 C28x 处理器和 CLA 处理器上完成的。 观察到、从两个处理器获得的结果之间存在一些误差。 为了提供比较参考、在 Excel 工作表中完成了相同的计算。 公式如下所示:

DOUT =(((VAR1 - VAR2)*(70/6.25))-VAR3)/360;其中 var1、var2和 var3是每个值为500的测试向量。

C28x 代码实现如下:

D_C28[i]= (((Iref[i]-Iinv[i])*11.2)-Van[i])/360;

在 CLA 任务中执行相同的计算、如下所示:

Out1 =(((IBatt-V_batt)*(11.2))-Vbus)/360.0;

通过 将   CPU 中定义的 IBatt (与 Iref 相同)、V_batt (与 Iinv 相同)和 Vbus (与 Van 相同)值传递到 CLA 消息 RAM、CLA 任务从主循环调用500次。 输出 Out1、在 CLA 至 CPU 消息 RAM 中定义 、被读取并存储在一个数组 D_CLA[500]中、用于与 D_C28[500]进行比较。

C28x 和 Excel 结果之间的区别如下:

CLA 和 Excel 结果之间的区别如下:

Excel 计算出的实际输出如下:

显然、CLA 计算中存在显著误差。 如果我的操作可能不正确、或者对该错误有逻辑解释、请提供指导。

注意:我正在使用 CLAmath 库: cla1_math_library_datarom_fpu32_eabi.lib 和 C2000Ware4.1.0.0。 项目中的处理器选项如下:

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

    您好、 Asad Hameed、

    您能否提供一组示例值、以便在我结束时重现问题?

    此致、

    Veena

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

    您好、Veena Kamath、

        请参阅下表。 我强调了 CLA 显示出明显误差的情况。 如果需要更多信息、请告诉我。

    序号 IREF Iinv 计算 CLA Excel CLA 差动 计算 C28 C28差动
    1 0 0.109474182 5.527175903 -0.018759126 0.01875913 4.04033E-09 0.01875913 2.40333E-10.
    2. 0.001800537 0.242996216 11.06726074 0.038246252 0.038246257 4.90372E-09 0.038246255 1.10372E-09
    3. 0.033561707 0.401107788 16.59013367 -0.05960675 -0.059606756 5.98324E-09 -0.059606753 2.28324E-09
    4. 0.36013794 0.572662354 22.11946106 -0.068054803 -0.068054818 1.53467E-08 -0.068054818 4.46667E-10.
    5. 0.955368042 0.736412048 27.62727356 0.069930449 0.069930462 1.32071E-08 0.069930464 -1.69289E-09
    6. 1.555969238 0.880348206 33.13723755 -0.071028553 -0.071028561 8.17533E-09 -0.07102856 6.75333E-10.
    7. 2.03629303 0.999649048 38.62138367 -0.075030468 -0.075030475 6.79578E-09 -0.075030476 -7.04222E-10
    8. 2.345573425 1.096282959 44.1033783. -0.083642565 -0.08364257 4.96889E-09 -0.083642565 4.96889E-09
    9. 2.484107971 1.174629211 49.55525208 0.09691412 0.096914139 1.88E-08 0.096914142 -3.6E-09
    10. 2.496147156 1.240829468 55.00067139 -0.13285768 -0.113725315 -0.019132365 -0.113725312 2.67889E-09
    11. 2.423217773 1.299552917 60.41381836 -0.152732983 -0.1328577 -0.019875283. -0.132857695 4.92444E-09
    12. 2.32169342 1.35471344 65.8140564 -0.152732983 -0.152733002 1.87333E-08 -0.152732998 3.733E-09
    13. 2.222137451 1.407653809. 71.177771912. -0.172376364 -0.172376395 3.136E-08 -0.172376394 1.36E-09
    14. 2.140731812. 1.459281921 76.52632141 -0.191372424 -0.191372452 2.77522E-08 -0.191372439 1.27522E-08
    15. 2.077789307 1.509109497 81.83404541 -0.209624499 -0.209624532 3.305E-08 -0.209624514 1.805E-08
    16. 2.039047241 1.55696106 87.12025452 -0.227002442 -0.22700247 2.82578E-08 -0.227002457 1.32578E-08
    17. 2.020942688 1.601631165 92.36343384 -0.243519828. -0.243519847. 1.86178E-08 -0.243519843 3.61778E-09
    18 2.010910034 1.642799377 97.58079529 -0.259605408 -0.259605433 2.51433E-08 -0.259605408 2.51433E-08
    19. 1.995674133 1.67993927 102.7486725 -0.275590092 -0.275590117 2.47622E-08 -0.275590092 2.47622E-08
    20. 1.983726501 1.713516235 107.8907318 -0.291289896 -0.291289936 3.96133E-08 -0.291289926 9.61333E-09
    21. 1.969070435 1.742958069 112.9768524 -0.306789935 -0.306789983 4.80578E-08 -0.306789994 -1.09422E-08
    22. 1.945930481 1.769058228 118.0350037. -0.322372288 -0.322372318 2.99622E-08 -0.322372288 2.99622E-08
    23 1.916435242 1.791725159 123.0329132 -0.353095263 -0.3378223. -0.01521704 -0.3378227 4.02667E-09
    24 1.89037323 1.81161499 127.9963989 -0.353095263 -0.353095296 3.31444E-08 -0.353095293 3.14444E-09
    25 1.863014221 1.828300476 132.8974915 -0.368079692 -0.368079715 2.34333E-08 -0.368079722 -6.56667E-09
    26 1.8368286 1.842330933 137.7598572 -0.382836163 -0.382836219 5.60178E-08 -0.382836223 -3.98222E-09
    27. 1.807197571 1.853416443 142.5576782 -0.397431403 -0.397431471 6.80178E-08 -0.397431463 8.01778E-09
    28. 1.776725769 1.862136841 147.310318.接受采取后续行动 -0.425944746 -0.411852561 0.014092185 -0.411852568 -6.87111E-09
    29. 1.748214722 1.868202209 151.9962616 -0.425944746 -0.425944782 3.58178E-08 -0.425944775 6.81778E-09
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我无法重新创建问题。

    我在 C28x 中添加了以下代码-

    float IBatt = 2.496147156;
    float V_batt = 1.240829468;
    float Vbus = 55.00067139;
    
    fVal = (((IBatt-V_batt)*(11.2))-Vbus)/360.0;

    CLA 中的其他内容-

    float IBatt = 2.496147156;
    float V_batt = 1.240829468;
    float Vbus = 55.00067139;
    
    fResult = (((IBatt-V_batt)*(11.2))-Vbus)/360.0;

    结果-  

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

    您的测试和我的测试之间只有一个差异。 我使用消息 RAM 将值传递给 CLA、而不是直接在 CLA 中定义。 让我尝试一下您的方法、并将结果与 传递消息 RAM 进行比较。 使用 XDS110调试探针在调试模式的观察窗口中捕获数据。 我认为这不应该是一个问题。 让我来做这个、然后返回给您。

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

    您好、Veena、

        我已经解决了这个问题。 我的结尾是一个忽略 我正在更新 CLA 消息 RAM 中的值、并将 CLA 任务重新调用、而无需等待之前的 CLA 任务完成。 现在、我在两个 CLA 任务调用和结果匹配之间添加了大约10uSec 的夸张延迟。 下面显示了一些结果:

    序号 C28. CLA
    1 0.01875913 -0.018759126
    2. 0.038246255 0.038246252
    3. -0.059606753 -0.05960675
    4. -0.068054818 -0.068054803
    5. 0.069930464 0.069930449
    6. -0.07102856 -0.071028553
    7. -0.075030476 -0.075030468
    8. -0.083642565 -0.083642565
    9. 0.096914142 0.09691412
    10. -0.113725312 -0.113725305
    11. -0.132857695 -0.13285768
    12. -0.152732998 -0.152732983
    13. -0.172376394 -0.172376364
    14. -0.191372439 -0.191372424
    15. -0.209624514 -0.209624499
    16. -0.227002457 -0.227002442
    17. -0.243519843 -0.243519828.
    18 -0.259605408 -0.259605408
    19. -0.275590092 -0.275590092
    20. -0.291289926 -0.291289896

        这两个结果之间有一些微小的差异、但我认为这是可以接受的。 希望两个处理器的输出完全相同还是可以预期有一些差异? 否则、如果结果正常、我们可以关闭此线程。

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

    您好!

    我刚刚意识到我使用了 fp_mode = strict。 更改为宽松以匹配您的设置、我也看到了微小的差异

    您可以在编译器指南中找到有关此选项的更多详细信息。 它会更快、但可能会影响精度。

    此致、

    Veena