首页 > 编程知识 正文

DSP音频实验,dsp的q值怎么调

时间:2023-05-04 10:45:53 阅读:110954 作者:2162

DSP测试实验

一.参考资料:

探险家STM32F4开发板

《STM32F4开发指南-库函数版本》 -第52章DSP测试实验

2.DSP功能介绍

1.DSP功能描述STM32F4,除了32单精度硬件FPU,在数字信号处理方面增加了DSP指令集。

支持单周期乘法指令(MAC )、优化的单指令多数据指令(SIMD )、饱和运算数等多种数字信号处理指令集。

M4可以在一个周期内执行所有的DSP指令集,但M3必须在多个指令和多个周期内执行。

Cortex-M4支持SIMD指令集。 -M3/M0系列无法使用。

上表中的某些命令属于SIMD命令。 它与硬件乘法器(MAC )配合使用,使所有这些指令都能在一个周期内执行。

在SIMD指令的支持下,Cortex-M4处理器可以在一个周期内执行最多3232 6464的运算,从而为其他任务释放处理器带宽,而不是乘法和加法消耗运算资源。 例如,更复杂的运算。 如图所示,将2个1616的乘法加上32位加法。

上面给出的运算(即sum=sum(AC ) ) BD可以被编译为在STM32F4上用单周期指令来完成。

三. DSP源代码库介绍

1 .软件包目录:

磁盘- 8,STM32参考STM32F4xx固件库- STM 32 f4xx _ DSP _ stdperiph _ lib _ v 1.4.0-libraries-CMS is-DSP

Source文件夹是所有DSP库的源代码,Examples文件夹是相应的测试实例。 所有测试实例都带有主函数。 这意味着你可以把它拿到工程里直接使用。

2.DSP库介绍BasicMathFunctions

基本函数:提供浮点数的各种基本运算函数,如向量的加减乘除。

公用表

arm_common_tables.c文件提供位反转或相关的参数表。

ComplexMathFunctions

要求向量处理等复杂的数学功能、模运算的东西。

控制器功能

控制功能函数。 包括余弦、PID电机控制、矢量Clarke变换、矢量Clarke逆变换等。

FastMathFunctions

高速数学功能函数。 给出了快速近似正弦、余弦和平方根等快于CMSIS计算库的数学函数。

过滤器功能

滤波函数功能主要是FIR和LMS (最小均方)等滤波函数。 矩阵函数

矩阵处理函数。 包括矩阵加法、矩阵初始化、矩阵反演、矩阵乘法、矩阵规模、矩阵减法、矩阵转置等函数。 静态函数

统计函数。 例如求出平均值、最大值、最小值,计算均方根RMS,计算方差/标准偏差等。

支持函数

支持数据复制、q格式和浮点格式的相互转换、无q格式的相互转换等功能函数。

变换函数

转换功能。 复FFT(CFFT ) /复FFT逆运算(CIFFT )、实数FFT、实数FFT逆运算)、以及DCT )离散馀弦变换)和集合的初始化函数。

对于DSP库的源代码,由于代码量大,ST提出了. lib格式的文件,所以使用起来很方便。 这些. lib文件是根据Source文件夹下的源代码编译生成的。 如果想看某个函数的源代码,请在Source文件夹下搜索。

. lib格式的文件路径: STM 32 F4 xx _ DSP _ stdperiph _ lib _ v1.4. 0librariesCMS islibarm

共有8个. lib文件。 如下。 arm _ cortexm0b _ math.lib (cortex-m0大端模式) )。

arm _ cortexm0l _ math.lib (cortex-m0小端模式) ) ) ) ) ) ) ) )。

arm _ cortex m3b _ math.lib (cortex-m3大端模式) ) ) ) ) ) ) ) ) )。

arm _ cortex m3l _ math.lib (cortex-m3小端模式) ) ) ) ) ) ) ) ) )。

arm _ cortexm 4b _ math.lib (cortex-m 4大端模式) ) )。

arm _ cortex m4bf _ math.lib (cortex-M4小端模式) ) ) ) ) ) ) ) ) )。

arm_cortexM4l_math.lib (浮点Cortex-M4大端模式) ) ) ) ) ) ) ) ) ) ) )浮点cortex m4l _ M4大端模式) ) ) ) ) ) ) 652

arm_cortexM4lf_math.lib (浮点Cortex-M4小端序) ) ) ) )。

根据要使用的MCU核心类型和最终模式,必须选择满足要求的. lib文件。 本章使用的STM32F4为CortexM4F内核、小端序模式,必须选择arm_cortexM4lf_math.lib (浮点Cortex-M4小端序模式)。

4 .构建DSP库的运行环境

1.DSP库执行环境构建步骤

(1)添加文件

Include文件夹位于STM 32 F4 xx _ DSP _ stdperiph _ lib _ v1.4. 0librariesCMS isinclude

)2)将arm_cortexM4lf_math.lib文件添加到项目中,并将包含文件夹包含在路径中。

2 .添加全局宏观定义

必须添加一些全局宏定义才能使用DSP库的所有功能。 1.__FPU_USED :这个只要在MDK中打开,就不需要再填写了

2.__FPU_PRESENT :这在stm32f4xx.h中缺省打开,可以不填充

3.ARM_MATH_CM4

4.__CC_ARM

5.ARM_MATH_MATRIX_CHECK

6.ARM_MATH_ROUNDING

在Define中输入的所有宏都是STM32F40_41xxx、USE_STDPERIPH_DRIVER、ARM_MATH_CM4、__CC_ARM、arm _ math _ mmmath

5.DSP库测试

1.DSP库测试示例介绍

$$

sin(x )2cos )2=1

$$

MDK的标准库(math.h )提供了四个函数: sin、cos、sinf和cosf。 f表示单精度浮点运算或浮点型,f表示双精度浮点型或双精度浮点型。

STM32F4的DSP库提供了另外两个函数: arm_sin_f32和arm_cos_f32。 (注意:必须添加arm_math.h头文件。 那么,这两个函数也是单精度浮点型的,用法和sinf和cosf一模一样。

测试此例程:

arm_sin_f32 arm_cos_f32和sinfcosf之间的速度差。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。