RX系列三角函数单元(TFU)的使用介绍

描述

硬件加速器三角函数单元(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,从而提高芯片在电机控制方面的性能。

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分