weizhongc 发表于 2013-6-7 17:57:43

关于STM32 DSP库系数的获取

              很多人对DSP库的系数获取很迷惑,大家知道通过matlab获取  滤波器的权系数,可是获取到的是浮点型的系数。要怎样转换才能在stm32 的DSP库上使用呢。??

longwei111_ 发表于 2013-6-8 09:48:48

回复:关于STM32 DSP库系数的获取

第一:采用MATLAB设计出你所需要的IIR滤波器,通过=tf2sos(B,A)将直接型转换到级联型
第二:由于CMSIS-DSP要就系数在[+1 -1)之间,且分母a系数a1k和a2k,与matlab不同,需要把两系数
变号,而为了使系数b0k、b1k、b2k、a1k、a2k在[+1 -1)之间,需要对所以系数除2缩放,每除2一次
滤波器系数PostShift加一,其启始为0。,详细细节请参考"CMSIS-DSP"使用指南。
第三:设计时由于G系数固定为1,而MATLAB得出的不为1,需将G系数分解到若干个二阶子系统函数的
分子向量中。
第四: 根据设计ADC的位数不同需合理选择滤波器的位数 如:
arm_biquad_cascade_df1_f32
arm_biquad_cascade_df1_fast_q15
arm_biquad_cascade_df1_fast_q31
arm_biquad_cascade_df1_q15
arm_biquad_cascade_df1_q31
arm_biquad_cas_df1_32x64_q31
其中arm_biquad_cas_df1_32x64_q31为高精度滤波器,运算耗时较大,不一般不选用
而快速型的速度虽快,但滤波特性不好
对于F4来说
arm_biquad_cascade_df1_f32
是不错的选择

longwei111_ 发表于 2013-6-8 09:52:21

RE:关于STM32 DSP库系数的获取

其中FIR滤波器设计系数得出比较容易,但要实现实时的FIR滤波器,其滤波阶数很难做到很高,100阶算不错了,不像FPGA可做到2000多阶以上
页: [1]
查看完整版本: 关于STM32 DSP库系数的获取