0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

瑞萨MCU小百科 来源:瑞萨MCU小百科 2023-12-04 12:25 次阅读

硬件加速器三角函数单元(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所示。

93de1758-925a-11ee-939d-92fbcf53809c.png

图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中代码所示。

9404d686-925a-11ee-939d-92fbcf53809c.png

图2 使用TFU的代码示例

9412f1a8-925a-11ee-939d-92fbcf53809c.png

图3 TFU同时计算代码示例

2. TFUv2的使用说明

三角函数单元TFUv1已经通过进一步的改进升级到TFUv2。TFUv2与TFUv1相比有以下改进:

1单精度浮点数计算速度的进一步提升,如图4所示

94302d22-925a-11ee-939d-92fbcf53809c.png

图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寄存器的设定来修改输入/输出的单位和格式。

944741d8-925a-11ee-939d-92fbcf53809c.png

图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所示。

9458ed7a-925a-11ee-939d-92fbcf53809c.png

图6 TFU取消重入设置

在图6设置下,如果仅对某个特定中断允许重入,可以在中断函数的申明中写"tfu"

#pragma interrupt func(tfu)

结合以上内容,对于内部配备硬件加速单元TFU的芯片,建议在电机矢量控制的运算中使用TFU,从而提高芯片在电机控制方面的性能。

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

    关注

    3540

    文章

    1896

    浏览量

    269222
  • 加速器
    +关注

    关注

    2

    文章

    806

    浏览量

    38056
  • 编译器
    +关注

    关注

    1

    文章

    1642

    浏览量

    49265
  • 三角函数
    +关注

    关注

    0

    文章

    14

    浏览量

    6765

原文标题:RX系列三角函数单元(TFU)的使用介绍

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MATLAB三角函数命令

    MATLAB三角函数命令Sin 正弦 Sinh 双曲正弦 Asin 反正弦 Asinh 反双曲正弦 Cos 余弦 Cosh 双曲余弦 Acos 反余弦 Acosh 反双曲余弦 Tan 正切&
    发表于 09-22 16:04

    ARM7如何实现三角函数

    ARM7中如何编程实现三角函数sin,cos,软件用的是TKStudio,求大神
    发表于 11-12 16:31

    labview的三角函数pi在哪

    labview的三角函数pi在哪
    发表于 03-23 09:29

    请问一下,28035的cla支持三角函数运算吗

    请问一下,28035的cla支持三角函数运算吗,为什么使用sin函数时,编译有错,那该怎么使用三角函数
    发表于 05-14 00:58

    电磁波为什么要用三角函数表示?

    怎样形象的理解傅里叶变换?电磁波为什么要用三角函数表示?什么是三角函数中的相位?
    发表于 10-25 08:57

    labview中的三角函数问题

    我想使用三角函数中的余弦函数(输入是角度的那种)我试了一下,发现cos90°算出来不是0,为什么呀,算别的角度是对的,就是算值等于0的度数会有问题。用了弧度角度换算、公式节点、直接输入π/2,这种方法出来都不是0
    发表于 04-09 14:18

    MounRiver Studio环境下math头文件如何进行三角函数计算?

    需要用到atan2和asin函数,include了math.h后报错函数不存在;和keil下的math文件内容对比了一下发现确实少了三角函数的申明,为什么会存在这种差异?该如何进行三角函数
    发表于 06-01 06:18

    基于DSP的三角函数快速计算

    基于DSP的三角函数快速计算
    发表于 04-07 14:33 53次下载
    基于DSP的<b class='flag-5'>三角函数</b>快速计算

    三角函数arcranx运算电路

    三角函数arcranx运算电路
    发表于 04-09 10:16 2803次阅读
    反<b class='flag-5'>三角函数</b>arcranx运算电路

    基于三角函数搜索因子的混合蛙跳算法

    针对传统混合蛙跳算法存在收敛速度慢、容易陷入局部最优和搜索精度不高的缺陷,提出了基于三角函数搜索因子的混合蛙跳算法。该算法将基于三角函数搜索因子的局部进化策略和产生新个体策略引入到混合蛙跳算法中
    发表于 11-24 15:56 0次下载

    欧拉公式与三角函数_欧拉公式推导三角函数

    欧拉公式是指以欧拉命名的诸多公式。其中最著名的有,复变函数中的欧拉幅公式,即将复数、指数函数三角函数联系起来。拓扑学中的欧拉多面体公式。初等数论中的欧拉
    发表于 11-28 20:44 21.5w次阅读

    如何使用Cordic算法C语言实现三角函数的计算

    三角函数的计算是个复杂的主题,有计算机之前,人们通常通过查找三角函数表来计算任意角度的三角函数的值。这种表格在人们刚刚产生三角函数的概念的时候就已经有了,它们通常是通过从已知值(比如s
    发表于 04-25 18:27 9次下载
    如何使用Cordic算法C语言实现<b class='flag-5'>三角函数</b>的计算

    如何使用DSP汇编语言实现高精度的三角函数

    在现今DSP 软件工程设计中,广泛采用高级语言(如C 语言)直接调用三角函数进行计算。然而,汇编语言的稳定性、可读性和执行效率均优于高级语言,因缺少可供直接调用的三角函数库,其开发周期长,且计算精度难以保证,在工程中推广较少。本文就基于DSP 汇编语言,提出一种高精度
    发表于 08-28 09:36 7次下载
    如何使用DSP汇编语言实现高精度的<b class='flag-5'>三角函数</b>

    AD639:通用三角函数转换器废弃数据表

    AD639:通用三角函数转换器废弃数据表
    发表于 05-17 17:29 8次下载
    AD639:通用<b class='flag-5'>三角函数</b>转换器废弃数据表

    TI Arm内核三角函数的优化

    电子发烧友网站提供《TI Arm内核三角函数的优化.pdf》资料免费下载
    发表于 09-11 09:19 0次下载
    TI Arm内核<b class='flag-5'>三角函数</b>的优化