硬件加速器三角函數單元(Trigonometric Function Unit)能夠高速處理三角函數sin、cos、arctan和sqrt(x2+y2)函數的運算,可顯著減少CPU負荷,在電機的矢量控制運算中非常有用。
本文介紹如何使用帶有CC-RX編譯器的三角函數單元。TFU現有兩個版本TFUv1和TFUv2,配備TFU的芯片型號如下表所示。
三角函數單元TFU版本
配備TFU的芯片
TFUv1
RX72T/RX72M/RX72N
TFUv2
RX26T
1. TFUv1的使用說明
在工程中選擇[Project] → [C/C++ Project Settings] → [Tool Settings] → [Compiler] → [Optimization] → [Advanced],如果器件有TFU,則會有選項"Execution method of library function that can use trigonometric function unit",如需使用TFU,選擇"Use trigonometric function unit ",如圖1所示。
圖1 TFU選擇設置
如上設置后,標準數學庫函數sinf()、cosf()、atan2f()和hypotf()的計算將由TFU執行,如圖2中代碼所示。由于TFU可以同時計算sin和cos、arctan和sqrt(x2+y2),所以CC-RX編譯器對相同輸入值的sin和cos、arctan和sqrt(x2+y2)可使用同時計算功能,以進一步提高運算速度。可以使用函數__sincosf()和__atan2hypotf()來同時計算,如圖3中代碼所示。
圖2 使用TFU的代碼示例
圖3 TFU同時計算代碼示例
2. TFUv2的使用說明
三角函數單元TFUv1已經通過進一步的改進升級到TFUv2。TFUv2與TFUv1相比有以下改進:
1單精度浮點數計算速度的進一步提升,如圖4所示
圖4 計算速度對比
2支持定點類型的計算
在TFUv2中,單精度浮點數的操作與TFUv1中相同;對于定點數據類型,使用內部函數:
__sinfx((int32_t)(x)) / __cosfx((int32_t)(x))
__atan2fx((int32_t)(x), (int32_t)(y)) / __hypotfx((int32_t)(x), (int32_t)(y))
或者同時計算的函數:
__sincosfx((int32_t)(x), (int32_t *)(y), (int32_t *)(z))
__atan2hypotfx((int32_t)(w), (int32_t)(x), (int32_t *)(y), (int32_t *)(z))
對于定點數據,可以更改輸入/輸出的單位和格式。如果使用Smart Configurator,選擇scfg文件,在[Components]→[r_bsp]中選擇"Enable initilize function for TFU (fixed-point numbers)"為"Enabled",下面有三個選項可以修改,如圖5所示。如果沒有使用Smart Configurator,可以在硬件初始化的時候加入TFU的FXSCIOC和FXATIOC寄存器的設定來修改輸入/輸出的單位和格式。
圖5 定點數據的單位和格式修改
3支持重入
TFUv2支持重入(TFUv1不支持),會在每個中斷函數的入口和出口生成保存和恢復代碼,但是會減慢處理速度。因此,如果不需要重入,可以禁止保存和恢復代碼的生成。如果只是一個特定的中斷禁止重入,可以在中斷函數的申明中寫"no_tfu"
#pragma interrupt func(no_tfu)
也可以使用選項禁止所有中斷功能的保存和恢復,選擇[Project] → [C/C++ Project Settings] → [Common] → [CPU],取消選中[Saves and restores the output by trigonometric function unit in interrupt functions],如圖6所示。
圖6 TFU取消重入設置
在圖6設置下,如果僅對某個特定中斷允許重入,可以在中斷函數的申明中寫"tfu"
#pragma interrupt func(tfu)
結合以上內容,對于內部配備硬件加速單元TFU的芯片,建議在電機矢量控制的運算中使用TFU,從而提高芯片在電機控制方面的性能。
-
電機控制
+關注
關注
3540文章
1897瀏覽量
269259 -
加速器
+關注
關注
2文章
807瀏覽量
38088 -
編譯器
+關注
關注
1文章
1642瀏覽量
49286 -
三角函數
+關注
關注
0文章
14瀏覽量
6769
原文標題:RX系列三角函數單元(TFU)的使用介紹
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論