专栏名称: 安富莱电子
由武汉安富莱电子有限公司负责维护。每周发布嵌入式周报,嵌入式领域最新消息和技术分享。内容原创。
目录
相关文章推荐
深圳特区报  ·  “为了写好这份建议,我们调研了好几个月。”4 ... ·  19 小时前  
读特新闻  ·  深圳最新发布:来深找工作,15天免费住 ·  2 天前  
深圳大件事  ·  连续3天!深圳这场活动太吸睛 ·  3 天前  
深圳特区报  ·  @深圳企业,有需要?请按1号键! ·  3 天前  
51好读  ›  专栏  ›  安富莱电子

DSP视频教程第13期:汇编浮点库qfplib性能媲美IQmath和硬件浮点,强于C库math和ARM DSP库,适用M0和M3

安富莱电子  · 公众号  ·  · 2024-10-12 01:02

正文

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

【视频】
B站地址:
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做定点转浮点和浮点转定点,用户全程浮点数据操作即可
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


【参考资料】







请到「今天看啥」查看全文