首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DSP视频教程第13期:汇编浮点库qfplib性能媲美TI的IQmath和硬件FPU,强于C库的math和ARM DSP库,适用于M0和M3(2024-10-12)

DSP视频教程第13期:汇编浮点库qfplib性能媲美TI的IQmath和硬件FPU,强于C库的math和ARM DSP库,适用于M0和M3(2024-10-12)

作者头像
Simon223
发布2025-10-16 08:53:44
发布2025-10-16 08:53:44
890
举报

视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519


本期专题视频给大家分享一个qfplib浮点库,这个库早期周报给大家分享过,后来部分网友测试非常给力,所以我们DSP视频教程也给大家分享一期 【视频】

https://www.bilibili.com/video/BV1Te2DY1Edx/

【简介】

代码采用汇编实现,qflib的性能媲美TI的IQmath和硬件FPU,强于C库的math和ARM DSP库。并且易于使用,不需要用户手动做浮点转定点,定点转浮点之类的操作。

1、ARM DSP库的三角函数浮点是直接调用的C库实现,所以性能一般,并没有加速作用。 2、M3的qfplib和MDK的C库,IAR的C库以及GoFast库的比较,可以看到速度优势比较明显。单位时钟周期数

3、M0的qflib库和TI IQmath的浮点运算比较

如果是单纯的qflib浮点和IQmath定点比较,IQmath有优势,如果是直接操作浮点数值,IQmath就没有优势了(甚至强于IQmath,后面专门实测下),因为要做浮点转定点,定点转浮点处理函数,时间就比较长了。

而且从应用的角度来说,使用浮点库qflib操作更加便捷,不需要额外调用API做定点转浮点和浮点转定点,用户全程浮点数据操作即可

代码语言:javascript
复制
X = _IQ24(1.0f);
Y = _IQ24(1.0f);
Z = _IQ24atan2(Y, X);
 
W = _IQ24toF(Z);

4、从时钟周期上来看,媲美硬件FPU浮点计算

5、同时还提供了一个M0 tiny版的库,适合Flash容量比较小的M0内核芯片使用

【移植】

1、这个库只有一个.h头文件和一个.s汇编文件。所以移植比较简单,添加工程工程即可。 2、有问题的地方是汇编库的兼容问题,这个汇编库在GCC上使用直接添加就可以正常编译,如果是MDK上使用,请使用AC6,并在汇编Option的ASM汇编选项里面设置选择ARMCLANG AUTO

【参考资料】

1、参考案例下载 注:这里提供的例子是采用我们H7板子关闭硬件FPU使用,这种情况可以使用M3的库测试,否则运算不正确 V7-Qfplib template.7z (1.31MB) 2、源代码库下载 M0 tiny版 qfplib-m0-tiny-20200617.7z (18.04KB) M0 全功能版 qfplib-m0-full-20240105.7z (27.49KB) M3版 qfplib-m3-20160408.7z (23.49KB) 3、官方地址 https://www.quinapalus.com/qfplib.html 4、DSP视频教程第12期:TI开源分享IQmath DSP源码,适用于所有Cortex-M内核,本期教程做个手把手移植 https://www.armbbs.cn/forum.php?mod=viewthread&tid=119296 5、DSP视频教程第8期:DSP库三角函数,C库三角函数和硬件三角函数的性能比较,以及与Matlab的精度比较 https://www.armbbs.cn/forum.php?mod=viewthread&tid=112675

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档