教你如何在STM32中使用DSP指令! |
您所在的位置:网站首页 › dsp处理指令 › 教你如何在STM32中使用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的使用 Arm Cortex-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接下来,让我们来看看性能。 IAR Embedded Workbench中的CYCLECOUNTER寄存器可用于检查正在运行的代码所消耗的周期数。在检查上次执行的C/ C ++源代码或汇编程序步骤期间的循环次数时,CCSTEP寄存器非常方便有用。 设置断点并记下sqrt函数的CCSTEP值: 在这种情况下,CMSIS-DSPsqrt功能比标准数学函数快10倍以上。 arm_sqrt_f32 : 52 cycles sqrt : 752 cycles从这个简单的例子中,我们可以看到CMSIS-DSP非常易于使用,并且显着提高了性能。 1.深度:规范的嵌入式项目要在设计时考虑缺陷 2.“技术男”升为“管理者”,角色一定要转变 3.让自己爱上写文档,这很重要! 4.使用STM32实现一个离线语音控制器! 5.一种无OS的MCU实用软件框架~ 6.如何识别垃圾公司? 免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |