本期专题视频给大家分享一个qfplib浮点库,这个库早期周报给大家分享过,后来部分网友测试非常给力,所以我们DSP视频教程也给大家分享一期。
【视频】
B站地址:
【简介】
代码采用汇编实现,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
【参考资料】
1、参考案例下载(见论坛)
2、官方地址
领取专属 10元无门槛券
私享最新 技术干货