SPRADD8 November   2024 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction to Real-Time Control
  5. 2C29 CPU and Key Features
    1. 2.1 Parallel Architecture and Compiler Entitlement
  6. 3C29 Performance Benchmarks
    1. 3.1 Signal Chain Benchmark with ACI Motor Control
    2. 3.2 Real-time Control and DSP Performance
      1. 3.2.1 Examples and Factors Contributing to Results
        1. 3.2.1.1 Saturation (or Limiting) Example
        2. 3.2.1.2 Dead Zone Example
        3. 3.2.1.3 Space Vector Generation (SVGEN) Example
        4. 3.2.1.4 Software Pipelining
      2. 3.2.2 Customer Control and Math Benchmarks
    3. 3.3 General Purpose Processing (GPP) Performance
      1. 3.3.1 Examples and Factors Contributing to Results
        1. 3.3.1.1 Discontinuity Management
        2. 3.3.1.2 Switch() Example
    4. 3.4 Model-Based Design Benchmarks
    5. 3.5 Application Benchmarks
      1. 3.5.1 Single Phase 7kW OBC Description
      2. 3.5.2 Vienna Rectifier-Based Three Phase Power Factor Correction
      3. 3.5.3 Single-Phase Inverter
      4. 3.5.4 Machine Learning
    6. 3.6 Flash Memory Efficiency
    7. 3.7 Code-size Efficiency
  7. 4Summary
  8. 5References

Customer Control and Math Benchmarks

Figure 3-9 shows C29 performance compared to the C28 CPU (in cycles) on select benchmarks that were received directly from customers (denoted A through E). These represent actual customer representative code varying in functionality from Math to Motor Control to Interpolation. C_Motor represents a dual motor benchmark, where two motor instances are run. The parallel C29 architecture is used in this benchmark, resulting in more than five times better performance (in cycles) than the C28 CPU.

 Customer Control and Math
                    Benchmarks Figure 3-9 Customer Control and Math Benchmarks
Attention:

Parallel architecture is not used effectively in the D_Math benchmark, which contains only volatile variables. With volatile variables, the compiler performs a load from or a store to memory every time a variable is used. This removes the ability to store the variable in a register and minimize memory accesses until absolutely necessary. Therefore, carefully consider using volatile variables in code.