ZHCAEQ3 November 2024 F29H850TU , F29H859TU-Q1
空間矢量生成 (SVGEN) 是電機控制系統中的常用功能,主要將矢量 (α, β) 映射到 6 段空間矢量,從而生成 3 個 PWM 信號。在普通實現中(如 圖 3-5 中所示),使用了 if..else 語句(圖左側),編譯器生成包含分支的代碼(圖右側)。
圖 3-5 普通實現. 在 SVGEN 的優化實現中(如圖 3-6 所示),利用了 C29 的 QUADF 指令(通過內嵌函數 __builtin_c29_quadf32 實現)。該指令將二維空間分成 16 個段。通過 switch() 語句將 16 段空間映射到 6 段空間。C 語言代碼如圖左側所示,編譯器生成的匯編語言如圖右側所示。生成的匯編代碼為直線代碼,不含分支,并實現了并行化(每個周期并行執行四條指令)。
無論輸入如何,在 C29 上,優化實現均需要 24 個周期,而普通實現需要 26-43 個周期,具體取決于輸入。在 C28 上,普通實現需要 70-100 個周期。在 Cortex-M7 上,普通實現需要 58-73 個周期,具體取決于輸入。
圖 3-6 在 C29 上的 SVGEN 優化實現. TI 提供涵蓋實時控制和 DSP 的庫。在某些情況下,庫的優化實現可提升性能,相較于普通實現效果更佳。