首页 > 编程语言 >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)

时间:2024-10-14 17:01:48浏览次数:5  
标签:13 DSP 浮点 M0 qfplib IQmath 视频教程

视频教程汇总帖: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做定点转浮点和浮点转定点,用户全程浮点数据操作即可

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

标签:13,DSP,浮点,M0,qfplib,IQmath,视频教程
From: https://www.cnblogs.com/armfly/p/18464555

相关文章

  • 10.7~10.13 总结
    联考的题解还是在这里。做题:ARC125F这就是\(\deg\)做背包。把所有\(\deg\)减一。现在限制是和为\(n-2\),每个数是自然数。有性质:选取和为\(y\)的数的个数连续。设\(L_y\)为最少选的数,\(R_y\)为最多。设有\(z\)个\(0\)。只需证明:\[R_x-L_x\le2z+1\]对于任意方案......
  • 24/10/13 ABC375补题笔记
    A典,属于显而易见的水题,这数据范围直接暴力做就行了。#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn; cin>>n; strings; cin>>s; intcnt=0; if(n<2)returncout<<0<<endl,0; for(inti=0;i<s.size()-2;i++)......
  • ChatGPT官网中文版镜像网站整理(2024/10/13)
    一、什么是ChatGPT?ChatGPT是由OpenAI开发的一种基于GPT(GenerativePretrainedTransformer)模型的人工智能对话系统。它使用了深度学习技术中的一种叫做Transformer的架构,通过对大量文本数据进行预训练和微调,能够理解并生成自然语言。二、GPT工具跟国内AI大模型整理(一......
  • 024-2025 20241323第三周总结
    这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03• 门电路• 组合电路,逻辑电路• 冯诺依曼结构• CPU,内存,IO管理• 嵌入式系统,并行结构• 物理安全作业正文https://www.cnblogs.com......
  • 2024-2025-1 202421310 《计算机基础与程序设计》第3周学习总结
    学期(如2024-2025-1)学号(如:20241300)《计算机基础与程序设计》第X周学习总结作业信息|这个作业属于哪个课程|https://www.cnblogs.com/rocedu/p/9577842.html|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03|这个作业的目标|数字分类与计数法位......
  • 2024-2025-1 20241329 《计算机基础与程序设计》第三周学习总结
    作业信息作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03作业目标:数字分类与计数法、位置计数法、进制转换、模拟数据与数字数据、压缩与解压、数字化、信息安全作业正文:https://www.cnblo......
  • 10.13
    S组1题水平。「KDOI-10」商店砍价容易发现\([1,6\times10^6]\)之间的数才会用第二种操作,枚举就好。「KDOI-10」水杯降温会补的「KDOI-10」反回文串会补的「KDOI-10」超级演出会补的arc185_a只有最后那一步有用,判断\(n(n+1)\bmodm\)的值。arc185_b。arc185_c......
  • 24.10.13
    P3648P3648[APIO2014]序列分割李超树用多了已经不会单调队列维护斜率优化了...首先切的顺序不影响答案。\((x+y)z+xy=x(y+z)+yz\)。更多份同理。\(sum\)表示前缀和,\(suf\)表示后缀和。设\(f_{i,j}\)表示前\(i\)个数切成\(j\)份的最大值。\(f_{i,j}\ge......
  • 2024.10.13 速度奇慢
    我就知道不能睡觉,以后要求自己,天天趴着入睡,那可是完全不能入睡的节奏。几乎只有浅睡眠。 这就是我对自己的要求,天天坐着睡觉,我觉得对健康很不利,但是,你醒着不能干活,那再不健康也得执行。 要求自己必须每天早上6点,无论缘由。 最后,我说一下相关性要不要考虑。类似于【近朱......
  • 2024-2025 20241313刘鸣宇《计算机基础与程序设计》第三周学习总结
    1.阅读《C语言程序设计》,对有疑问的地方寻找AI进行解答2.3.《计算机科学概论》学习总结(1)第二章学习了不同进制(二进制,十进制,八进制,十六进制)之间的转换学习了其他技术系统中的运算规则(2)第三章1.信息与数据的区别:信息是数据的一种2.为何进行数据压缩:网络具有固定的带宽限制,压......