ZHCZ036B April   2024  – February 2025 TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1

 

  1.   1
  2.   TMS320F28003x 实时 MCU 器件勘误表器件修订版本 0
  3. 1使用说明和公告模型
    1. 1.1 使用说明汇总表
    2. 1.2 公告汇总表
  4. 2命名规则、封装编号法和修订版本标识
    1. 2.1 器件和开发支持工具命名规则
    2. 2.2 支持的器件
    3. 2.3 封装编号法和修订版本标识
  5. 3器件修订版本 A 使用说明和公告
    1. 3.1 器修订版本 A 使用说明
      1. 3.1.1 PIE:背对背 PIEACK 写入和手动 CPU 中断屏蔽清除之后的伪波嵌套中断
      2. 3.1.2 使用嵌套中断时要小心
      3. 3.1.3 安全性:主要的防御层是构建芯片安全边界,从启用 JTAGLOCK 和零引脚引导至闪存功能开始
    2. 3.2 器件修订版本 A 公告
      1.      公告
      2.      公告
      3.      公告
      4.      公告
      5.      公告
      6. 3.2.1 公告
      7.      公告
      8. 3.2.2 公告
      9.      公告
      10. 3.2.3 公告
      11.      公告
      12.      公告
      13. 3.2.4 公告
      14.      公告
      15.      公告
      16.      公告
      17.      公告
      18.      公告
  6. 4器件修订版本 0 使用说明和公告
    1. 4.1 器件修订版本 0 使用说明
    2. 4.2 器件修订版本 0 公告
      1.      公告
      2.      公告
      3.      公告
      4.      公告
      5. 4.2.1 公告
  7. 5文档支持
  8. 6商标
  9. 7修订历史记录

公告

FPU:FPU 至 CPU 寄存器移动操作之前是任何 FPU 2p 操作

受影响版本

0、A

详细信息

当多周期 (2p) FPU 指令后跟 FPU 到 CPU 寄存器转移时,此公告适用。如果 FPU 到 CPU 读取指令源寄存器与 2p 指令目标相同,则在 2p 指令完成之前读取的可能是 FPU 寄存器的值。这是因为 2p 指令依赖于流水线 E3 阶段期间结果的数据转发。如果在 E3 阶段碰巧发生流水线停滞,则读取指令不会及时转发结果。

受此公告影响的 2p 指令是 MPYF32、ADDF32、SUBF32 和 MACF32。FPU 寄存器读取的目标必须是一个 CPU 寄存器(ACC、P、T、XAR0...XAR7)。如果寄存器读取是 FPU 到 FPU 寄存器转移,则此公告不适用。

在下面的示例中,2p 指令 MPYF32 使用 R6H 作为其目标。FPU 寄存器读取 MOV32 使用同一个寄存器 R6H 作为其源,并使用 CPU 寄存器作为目标。如果在 E3 流水线阶段发生停滞,则 MOV32 将在 MPYF32 指令完成之前读取 R6H 的值。

问题示例:


   MPYF32 R6H, R5H, R0H  ; 2p FPU instruction that writes to R6H
|| MOV32 *XAR7++, R4H
   F32TOUI16R R3H, R4H   ; delay slot
   ADDF32 R2H, R2H, R0H
|| MOV32 *--SP, R2H      ; alignment cycle
   MOV32 @XAR3, R6H      ; FPU register read of R6H

图 3-4 展示了流水线中没有停滞时的问题流水线图。

TMS320F28P550SJ TMS320F28P559SJ-Q1 TMS320F28P550SG 流水线中没有停滞时的问题流水线图图 3-4 流水线中没有停滞时的问题流水线图

图 3-5 展示了指令 I1 的 E3 时隙中存在停滞时的问题流水线图。

TMS320F28P550SJ TMS320F28P559SJ-Q1 TMS320F28P550SG 指令 I1 的 E3 时隙中存在停滞时的问题流水线图图 3-5 指令 I1 的 E3 时隙中存在停滞时的问题流水线图

权变措施

在本例中,应将 MPYF32、ADDF32、SUBF32 和 MACF32 视为 3p 周期指令。必须将三个 NOP 或非冲突指令放置在指令的延迟时隙中。

C28x 代码生成工具 v.6.2.0 及更高版本都将生成正确的指令序列并检测汇编代码中的错误。在以前的版本 v6.0.5(适用于 6.0.x 分支)和 v.6.1.2(适用于 6.1.x 分支)中,编译器将生成正确的指令序列,但汇编器不会检测汇编代码中的错误。

解决方法示例:


   MPYF32 R6H, R5H, R0H
|| MOV32 *XAR7++, R4H     ; 3p FPU instruction that writes to R6H
   F32TOUI16R R3H, R4H    ; delay slot
   ADDF32 R2H, R2H, R0H
|| MOV32 *--SP, R2H       ; delay slot
   NOP                    ; alignment cycle
   MOV32 @XAR3, R6H       ; FPU register read of R6H

图 3-6 展示了带解决方法的流水线图。

TMS320F28P550SJ TMS320F28P559SJ-Q1 TMS320F28P550SG 带解决方法的流水线图图 3-6 带解决方法的流水线图