JAJZ034E October   2022  – July 2025 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137

 

  1.   1
  2.   TMS320F28003x Real-Time MCUs Silicon Errata シリコン リビジョン 0
  3. 1使用上の注意およびアドバイザリ マトリックス
    1. 1.1 使用上の注意マトリックス
    2. 1.2 アドバイザリ マトリックス
  4. 2命名法、パッケージのマーキングとリビジョンの識別
    1. 2.1 デバイスおよび開発ツールの命名規則
    2. 2.2 サポート対象デバイス
    3. 2.3 パッケージの記号表記およびリビジョンの識別
  5. 3シリコン リビジョン C の使用上の注意とアドバイザリ
    1. 3.1 シリコン リビジョン C の使用上の注記
      1. 3.1.1 PIE:双方向 PIEACK 書き込みと手動 CPU 割り込みマスク クリア後のスプリアス ネスト割り込み
      2. 3.1.2 繰り返しブロックでネストされた割り込みを使用する際の注意
      3. 3.1.3 セキュリティ:プライマリ防御層はチップの境界を保護します。これは、JTAGLOCK およびフラッシュからのゼロ ピン ブート機能を有効化することから始まります
    2. 3.2 シリコン リビジョン C のアドバイザリ
      1.      アドバイザリ
      2.      アドバイザリ
      3.      アドバイザリ
      4.      アドバイザリ
      5.      アドバイザリ
      6.      アドバイザリ
      7.      アドバイザリ
      8. 3.2.1 アドバイザリ
      9.      アドバイザリ
      10. 3.2.2 アドバイザリ
      11. 3.2.3 アドバイザリ
      12.      アドバイザリ
      13.      アドバイザリ
      14.      アドバイザリ
      15.      アドバイザリ
      16. 3.2.4 アドバイザリ
      17.      アドバイザリ
      18. 3.2.5 アドバイザリ
      19.      アドバイザリ
  6. 4シリコン リビジョン B の使用上の注意とアドバイザリ
    1. 4.1 シリコン リビジョン B の使用上の注記
    2. 4.2 シリコン リビジョン B のアドバイザリ
  7. 5シリコン リビジョン A の使用上の注意とアドバイザリ
    1. 5.1 シリコン リビジョン A の使用上の注記
    2. 5.2 シリコン リビジョン A のアドバイザリ
  8. 6シリコン リビジョン 0 の使用上の注意とアドバイザリ
    1. 6.1 シリコン リビジョン 0 の使用上の注記
    2. 6.2 シリコン リビジョン 0 のアドバイザリ
  9. 7ドキュメントのサポート
  10. 8商標
  11. 9改訂履歴

アドバイザリ

FPU: FPU から CPU へのレジスタ移動操作の前にする FPU 2p 操作

影響を受けるリビジョン

0、A、B、C

詳細

このアドバイザリは、マルチサイクル (2p) FPU 命令の後に FPU から CPU へのレジスタ転送が行われる場合に適用されます。FPU-to-CPU READ 命令ソースレジスタが 2p 命令宛先と同じである場合、2p 命令が完了する前に、読み出しは FPUレ ジスタの値となる可能性があります。これは、2p 命令がパイプラインの E3 フェーズ中に結果のデータ転送に依存するために発生します。E3フェーズでパイプライン ストールが発生した場合、結果は読み取り命令の時間内に転送されません。

このアドバイザリの影響を受ける 2p 命令は、MPYF32、ADDF32、SUBF32、および MACF32 です。FPU レジスタの読み出しの宛先は、CPU レジスタ (ACC、P、T、XAR0 ~ XAR7) で無ければいけません。レジスタの読み出しが FPU-to-FPU レジスタ転送である場合、このアドバイザリは適用されません。

次の例では、2p 命令 MPYF32 は R6H を宛先として使用します。FPU レジスタ READ 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に、パイプラインにストールがない場合の問題のパイプライン図を示します。

TMS320F2800137 TMS320F2800135 TMS320F2800133 TMS320F2800132 パイプラインにストールがない場合の問題のパイプライン図図 3-4 パイプラインにストールがない場合の問題のパイプライン図

図 3-5に、命令 I1の E3 スロットにストールがある場合の問題のパイプライン図を示します。

TMS320F2800137 TMS320F2800135 TMS320F2800133 TMS320F2800132 命令 I1 の E3 スロットにストールがある場合の問題のパイプライン図図 3-5 命令 I1 の E3 スロットにストールがある場合の問題のパイプライン図

回避方法

このシナリオでは、MPYF32、ADDF32、SUBF32、および MACF32 を 3p サイクル命令として扱います。命令のディレイ スロットには、3 つの 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に、回避方法が適用されたパイプライン図を示します。

TMS320F2800137 TMS320F2800135 TMS320F2800133 TMS320F2800132 回避方法が適用されたパイプライン図図 3-6 回避方法が適用されたパイプライン図