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