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.

[参考译文] TMS320F280039C:如何缩短 F2800039C 中复杂逻辑操作代码的执行时间?

Guru**** 2589280 points
Other Parts Discussed in Thread: TMS320F280039

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1424633/tms320f280039c-how-to-reduce-the-execution-time-of-complex-logic-operation-code-in-f2800039c

器件型号:TMS320F280039C
主题中讨论的其他器件:TMS320F280039

工具与软件:

  您好、 请注意这个问题。 非常感谢!

  在 DSP TMS320F280039 C28x 工程中、如何缩短有关多个表达式的逻辑操作代码的执行时间?  例如:

   PFC_ctrl_DW。 Delay3_DSTATE_f =((((VePFC_V_PLLVltQ <= KePFC_V_QValDwnLim)||(VePFC_V_PLLVltQ >= KePFC_V_QValUpLim))&& RTB_LogicalOperator_I)|| PFC_Ctrl_DW。 Delay3_DSTATE_f);

   PFC_ctrl_DW。 Delay1_DSTATE_l =((RTB_LogicalOperator_I &&((VePFC_Hz_PLLFreq <= VePFC_Hz_PLLFreqErrDwn)||(VePFC_Hz_PLLFreq >= VePFC_Hz_PLLFreqErrUp))|| PFC_Ctrl_DW。 Delay1_DSTATE_l);

  尽管改进了编译级别并启用了 FPU 和 TMU、 但与 Infineon TC233相比、280039C 执行上述代码的速度要慢得多。  

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

    您好!

    您能否提供一些其他详细信息?

    代码是否从闪存中执行?

    -结构和变量都是全局变量吗? 您是否可以尝试创建局部变量来查看是否可提高性能?

    -您能共享生成的装配体吗?

    谢谢!

    SIRA

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

    您好!

    -无论是280039C 还是 TC233、代码都 在闪存中执行。

    -所有结构都是全局 变量,所有其他变量部分是全局变量,部分是局部变量。  为全局变量交换局部变量时、性能没有改善。

    - DSP 和 TC233执行的代码是相同的、但经过了微调以适应它们各自的环境。 我们发现 280039C 中这些复杂逻辑操作代码的执行时间比 TC233中的时间长。 但 DSP 在其他方面的性能更好。 复杂的逻辑代码执行可降低 280039C 的整体执行效率。  

    -期待您的回复。 谢谢你。

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

    天泽

    您能否为此代码共享生成的汇编代码?

    另外、在 C28与 TC233上、它需要多少个周期?

    谢谢!

    SIRA

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

    您好!

    -此代码生成的汇编代码如下所示:

      (1)  PFC_ctrl_DW。 Delay3_DSTATE_f =((((VePFC_V_PLLVltQ <= KePFC_V_QValDwnLim)||(VePFC_V_PLLVltQ >= KePFC_V_QValUpLim))&& RTB_LogicalOperator_I)|| PFC_Ctrl_DW。 Delay3_DSTATE_f);

    1008   PFC_ctrl_DW。 Delay3_DSTATE_f =((((VePFC_V_PLLVltQ <= KePFC_V_QValDwnLim)||
    082de2:E6940011 CMPF32 R1H、R2H
    082de4:AD14 MOVST0 NF、ZF
    082de5:6509 SB $C$L78、Leq
    082de6:761F02A4 MOVW DP、#0x2a4
    082de8:E2AF021E MOV32 R2H、@0x1E、UNCH
    082dea:E6940011 CMPF32 R1H、R2H
    082dec:AD14 MOVST0 NF、ZF
    082ded:6403 SB $C$L79、LT
           $C$L78:
    082dee:5200 CMPB AL、#0x0
    082def:6006 SB $C$L80、NEQ
           $C$L79:
    082df0:761F02A1 MOVW DP、#0x2a1
    082df2:932D MOV AH、@0x2D
    082df3:56B100A6 MOVB @AR6、#0x00、EQ
           $C$L80:
    082df5:761F02A1 MOVW DP、#0x2a1

      (2)  PFC_ctrl_DW。 Delay1_DSTATE_l =((RTB_LogicalOperator_I &&((VePFC_Hz_PLLFreq <= VePFC_Hz_PLLFreqErrDwn)||(VePFC_Hz_PLLFreq >= VePFC_Hz_PLLFreqErrUp))|| PFC_Ctrl_DW。 Delay1_DSTATE_l);

    1022   PFC_ctrl_DW。 Delay1_DSTATE_l =((RTB_LogicalOperator_I &&(VePFC_Hz_PLLFreq <=
    082df7:5200 CMPB AL、#0x0
    082df8:B601 MOVB XAR7、#0x01
    1008   PFC_ctrl_DW。 Delay3_DSTATE_f =((((VePFC_V_PLLVltQ <= KePFC_V_QValDwnLim)||
    082df9:7E2D MOV @0x2D、AR6
    1022   PFC_ctrl_DW。 Delay1_DSTATE_l =((RTB_LogicalOperator_I &&(VePFC_Hz_PLLFreq <=
    082dfa:6113 SB $C$L81、EQ
    082dfb:761F02A0 MOVW DP、#0x2a0
    082dfd:E2AF0124 MOV32 R1H、@0x24、UNCH
    082dff: 761F02A4 MOVW DP、#0x2a4
    082e01:E2AF0232 MOV32 R2H、@0x32、UNCH
    082e03:E6940011 CMPF32 R1H、R2H
    082e05:AD14 MOVST0 NF、ZF
    082e06:650C SB $C$L82、Leq
    082e07:E2AF0234 MOV32 R2H、@0x34、UNCH
    082e09:E6940011 CMPF32 R1H、R2H
    082e0b:AD14 MOVST0 NF、ZF
    082e0c:6306 SB $C$L82、GEQ
           $C$L81:
    082e0d:761F02A1 MOVW DP、#0x2a1
    082e0f:932E MOV AH、@0x2e
    082e10:56B100A7 MOVB @AR7、#0x00、EQ

    -由于系统时钟不同(280039C -120MHz 与 TC233 -200MHz)、转换后、这两行代码  在280039C 中依次执行240ns 和214ns、 而在 TC233中、这两行代码依次执行90ns 和26ns。

    期待您的回复。  谢谢!

    Tianze

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

    -问题中提到的基于 TC233的汇编代码是在部门批准后获得的,如图所示:

    期待您的回复。  谢谢!

    Tianze

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

    天泽

    C28的测量结果看起来与您发布的生成的组装一致。

    240ns x 120MHz = 28个周期

    214ns x 120MHz = 25个周期

    对于 TC23x、

    90ns x 200MHz = 18个周期

    26ns x 200MHz = 5个周期(对于我来说、这毫无意义、因为该操作与上面的操作非常相似;此图也不表明这是在5个周期内完成的)

    因此、对于 C28、我认为没有太多进一步改进的空间。