1、DSP 有两层含义,一个是 DSP 芯片也就是 Digital Signal Processor,另一个是 Digital Signal Processing,也就是我们常说的数字信 号处理技术。
2、为了方便用户实现 DSP 功能,ARM 专门做一个 DSP 库 CMSIS-DSP,主要包含以下数字信号处理算 法:
◆ BasicMathFunctions:提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算;
◆ FastMathFunctions 主要提供SIN,COS以及平方根SQRT的运算。
◆ ComplexMathFunctions 复杂数学运算,主要是向量,求模等运算。
◆ FilteringFunctions主要是滤波函数,如IIR,FIR,LMS等;
◆ TransformFunctions 变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运 算;
◆ ControllerFunctions 控制功能,主要是PID控制函数和正余弦函数。
◆ StatisticsFunctions 统计功能函数,如求平均值,最大值,最小值,功率,RMS等
◆ SupportFunctions 支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
◆ CommonTables 文件提供位翻转或相关参数表。
3、CMSIS :(Cortex Microcontroller Software Interface Standard)
4、常用函数讲解:
函数 arm_abs_f32:这个函数用于求 32位浮点数的绝对值。
函数 arm_abs_q31:用于求 32位定点数的绝对值。
函数 arm_abs_q15:用于求 16位定点数的绝对值。
函数 arm_abs_q7:用于求 8位定点数的绝对值。
函数 arm_add_f32:这个函数用于求两个 32位浮点数的和。
函数 arm_add_q31、arm_add_q15、arm_add_q7
函数 arm_mult_f32:这个函数用于求 32位浮点数的乘法;
函数 arm_mult_q31、arm_mult_q15、arm_mult_q7定点数的乘法;
5、三角函数:
函数 arm_cos_f32:这个函数用于求 32位浮点数的 cos值。
函数 arm_cos_q31、arm_cos_q15、arm_cos_q7;
函数 arm_sin_f32:这个函数用于求 32位浮点数的 sin值。
函数 arm_sin_q31、arm_sin_q15、arm_sin_q7;
6、平方根:
函数 arm_sqrt_f32:这个函数用于求 32位定点数的平方根,对于带 FPU的处理器来说,浮点数的平方根求解很简单,只需调用指令__sqrtf,仅需要 14个时钟周期就可以完成。
函数 arm_sqrt_q31、arm_sqrt_q15、arm_sqrt_q7;
7、最大值:
函数 arm_max_f32:这部分函数用于计算数组中的最大值,并返回数组中的最大值和最大值在数组中的位置。
8、最小值:
函数 arm_min_f32:这个函数用于求 32位浮点数的最小值。
9、平均值:
函数 arm_mean_f32:用于求解 32位浮点数的平均值。
10、在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征。尽管传统的 DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理。因此导致DFT被发现以来,在很长的一段时间内都不能被应用到实际工程项目中,直到一种快速的离散傅立叶计算方法——FFT被发现,离散是傅立叶变换才在实际的工程中得到广泛应用。需要强调的是,FFT并不是一种新的频域特征获取方式,而是 DFT的一种快速实现算法。
11、 FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用 FFT变换的原因。
12、一个模拟信号,经过 ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍(要满足奈奎斯特采样定律)。
13、采样得到的数字信号,就可以做 FFT变换了。N个采样点,经过 FFT之后,就可以得到 N个点的 FFT结果。为了方便进行 FFT运算,通常 N取 2的整数次方。
14、FFT包括定点FFT和浮点FFT,浮点FFT又包括复数浮点FFT和实数浮点FFT,咱们程序中用的是实数浮点FFT:
DSP知识扫盲
最新推荐文章于 2025-03-04 10:50:19 发布