教你如何在STM32中使用DSP指令

简介01、DSP简介 提到DSP,作为电子专业的学生,大部分第一时间想到的是DSP芯片,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以

01、DSP简介

提到DSP,作为电子专业的学生,大部分第一时间想到的是DSP芯片,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。

实际上,DSP的全称是数字信号处理(DigitalSignalProcessing,简称DSP)。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛DSP技术图解的应用。

如下面ARM官方描述的,ARM处理器是支持DSP的。

主要是在cortex-R和Cortex-M内核支持。

Arm的数字信号控制器Cortex-M4、Cortex-M7、Cortex-M33、Cortex-M35P和Cortex-M55处理器满足了对高性能通用代码处理以及数字信号处理应用的需求。

向Thumb指令集添加DSP扩展和可选浮点单元(FPU),旨在提高数值算法的性能。此外,它们提供了直接在Cortex-M处理器上执行信号处理操作的机会,同时保持Cortex-M程序员模型的易用性。

02、IAR中DSP Libary的使用

ArmCortex-M3 /M4处理器提供信号处理指令,例如SIMD(单指令多数据)。特别是Cortex-M4专为DSP应用而设计,它支持高级SIMD,MAC(乘法和累加)指令。此外,Cortex-M4F器件具有FPU(浮点单元),用于处理浮点计算。

有几种方法可以使用这些指令,例如使用汇编程序例程或内部函数,但最实用的方法之一是使用ArmCortex微控制器软件接口标准(CMSIS)DSP库。CMSIS-DSP库专为Cortex-M处理器而设计,它为数字信号处理提供优化的功能,如矩阵函数,统计函数,高级数学函数等。

IAREmbedded Workbench forArm中提供了预构建的CMSIS-DSP库及其源代码,在本文中,我们将了解如何将CMSIS-DSP库与IAREmbedded Workbench for Arm一起使用以及如何改进性能。

Configuringthe CMSIS-DSP library

配置CMSIS-DSP库

让我们看看如何调用CMSIS-DSP功能及其性能。这里我们将使用sqrt(平方根)函数并与标准数学函数进行比较:

//#define DSP_Lib#ifdef DSP_Lib
#include #endif#include #include int main()
{
#ifdef DSP_Lib
  float32_t f_input_cmsis_dsp = 2;
  float32_t f_result_cmsis_dsp;#endif

  float f_input = 2;  float f_result;

#ifdef DSP_Lib  /* Using CMSIS-DSP library */
  arm_sqrt_f32(f_input_cmsis_dsp,&f_result_cmsis_dsp);
  printf("f1: %f\n",f_result_cmsis_dsp);#endif

  /* Standard math function */
  f_result = sqrt(f_input);
  printf("f2: %f\n",f_result);
  return 0;
}

结果如下

f1: 1.414214 f2: 1.414214

接下来,让我们来看看性能。

IAREmbedded Workbench中的CYCLECOUNTER寄存器可用于检查正在运行的代码所消耗的周期数。在检查上次执行的C/ C ++源代码或汇编程序步骤期间的循环次数时,CCSTEP寄存器非常方便有用。

设置断点并记下sqrt函数的CCSTEP值:

在这种情况下,CMSIS-DSPsqrt功能比标准数学函数快10倍以上。

arm_sqrt_f32 :    52 cycles
sqrt :            752 cycles

从这个简单的例子中,我们可以看到CMSIS-DSP非常易于使用,并且显着提高了性能。

点击查看本文所在的专辑,STM32F207教程

Tags:

https://www.somanba.cn/xitong/140639.html

(0)

相关推荐

  • “看不见”的霸主ARM Cortex

    摘要: 今天,ARM正式发布了Cortex-M7处理器,或者确切地说是微型控制器(MCU).虽然只有一个字母的不同,但它和Cortex-A系列完全属于两个世界,确切地说是一个更大的世界.ARM Cor ...

  • SES如何使用数学库arm_math让程序起飞?

    来源:技术让梦想更伟大 作者:李肖遥 最近在使用Nordic的52832开发,这也属于ARM Cortex M4架构,芯片具体不介绍了,主要是M4与M0.M3的最大不同就是具有FPU(浮点运算单元), ...

  • cortex

    cortex三种系列----A系列.R系列.M系列组合在一起就是ARM,也就是设计这些芯片架构的公司名称. cortex就是大脑皮层的意思 一.Cortex-A先进的处理器 1.Cortex-A5 可 ...

  • 教你如何在Excel中快速计算某个日期是星期几

    电子表格是Microsoft为使用Windows和AppleMacintosh系统的电脑上编辑的一款表格软件.我们在使用电子表格企业办公的情况下,经常会必须测算某一时间是星期几,那麼如何使用电子表格来 ...

  • 教你如何在linux中写脚本提高工作效率

    程序IT圈 引入:在工作中,为了在开机前预置一些资源在手机系统中,可能有人会用很多方法去实现这个功能?不过,今天告诉大家一个用shell脚本去拷贝的方法,大家先看看以下代码,看是否能看懂 . #!/b ...

  • 教你怎么用PLC中CMP比较指令

    描述:CMP比较指令是比较2个值,将其结果(大.一致.小)输出软元件(3点). 1.动作和说明 2.K2>D0(数字为0)状态M10被激活同时Y0线圈得电. 3.K2=D0(数字为2)状态M11 ...

  • 一组图教你区分中国古建筑中的:亭、台、楼...

    一组图教你区分中国古建筑中的:亭、台、楼...

  • 高手教你如何避免股市中踩雷

    我们都想股市中赚钱,但是股市有很多的雷,一不小心就会踩雷,一踩到雷可能就会几年的利润化为乌有,甚至连本金都搭上去了,就像最近的仁东控股连续15个跌停,非常可怕,所以今天就来说一下股市中哪些可能存在的雷 ...

  • 如何在Word中新建选项卡和组

    如何在word中新建选项卡和组呢?一起来看看操作方法吧. 1.打开Word我们要在上方的菜单栏中添加一个选项卡和组,如何来制作呢? 2.在上方的快速访问工具栏,点击下拉菜单按钮,选择其他命令. 3.然 ...

  • 如何在word中制作一个分数

    很多人都知道,在使用word软件的过程中一般是没办法直接输入分数的,此时如需要输入分数的话,需要自己动手制作.那么,在word中如何制作一个分数呢?下面就让小编来介绍一下. 1.打开电脑上的word软 ...

  • 10个知识点教你在日常工作中如何选择低压断路器,看完收藏

    10个知识点教你在日常工作中如何选择低压断路器,看完收藏

  • 手把手教你在通达信中添加同花顺F10功能(图解)

    同花顺中的F10比起通达信的F10优势非常明显,有朋友需要在通达信中去看同花顺的F10,因此我做了一个教程,希望对你有帮助. 1.进入通达信软件后,点击左上角的菜单栏中的"工具"→ ...