STM32
直播中

挽你何用

9年用户 805经验值
擅长:电源/新能源 MEMS/传感技术
私信 关注
[问答]

如何利用stm32去完成FIR滤波器的设计呢

FIR数字滤波器的基本特性有哪些?
如何利用STM32去完成FIR滤波器的设计呢?有哪些步骤?

回帖(1)

陈小红

2021-11-18 11:54:53
  数字滤波器的类型有FIR(有限长冲击与IIR(无限长。
  离散数字系统中,滤波器的表述为差分方程。
  FIR
  FIR基本特性:
  FIR 滤波器永远是稳定的(系统只有零点);
  FIR 滤波器的冲激响应是有限长序列;
  FIR 滤波器的系统函数为多项式;
  FIR 滤波器具有线性相位。
  实现同样参数的滤波器,FIR比IIR需要的阶数高,因此计算量大。
  目前,FIR 数字滤波器的设计方法主要是建立在对理想滤波器频率特性做某种近似的基础上。设计方法有窗函数法,等波纹设计法(Equiripple)和最小二乘法 (Least-Squares)等。其中窗函数设计法在学校课堂中是重点讲解的,提到FIR滤波器肯定会想到hamming、kaiser窗,但是实际应用中却很少使用,因为如果采用窗函数设计法,达到所期望的频率响应,与其它方法相比往往阶数会更多;而且窗函数设计法一般只参照通频带wp、抑制频带ws 和理想增益来设计滤波器,但是实际应用中通频带和抑制带的波纹也是需要考虑的,那在这种情况下,采用等波纹设计法就非常适用了。
  ARM 官方提供的 FIR 库支持 Q7,Q15,Q31 和浮点四种数据类型。采用的直接型结构。
  stm32中FIR滤波器的设计步骤
  1、使用matlab的fdatool设计滤波器,然后生成滤波器系数到h文件中
  2、调用arm的dsp滤波函数
  IIR
  IIR 滤波器的最大优点是可取得非常好的通带与阻带衰减,还可得到准确的通带与阻带的边缘频率,而且滤波时需要的计算量较少。缺点是不具有线性相位,且存在稳定性问题。
  IIR的类型有巴特沃斯、切比雪夫一型与二型、椭圆
  FIR与IIR的区别
  IIR 滤波器的最大优点是可取得非常好的通带与阻带衰减,还可得到准确的通带与阻带的边缘频率,而且滤波时需要的计算量较少。缺点是不具有线性相位,且存在稳定性问题。
  目前 IIR 滤波器设计的最通用的方法是借用模拟滤波器的设计方法。其中,巴特沃思滤波器可取得最平的通带特性,但要取得高的阻带衰减则需要较高的阶次;切比雪夫 I 型滤波器的通带取等纹波形状,因此在同样的阻带衰减的条件下,其阶次要低于巴特沃思滤波器。如果我们强调的是最大限度地去除噪声而没有别的限制,那么最佳的选择是 IIR 滤波器。
  FIR 滤波器的最大优点是可取得线性相位且不存在稳定性问题,如果滤波时不要求实时实现,我们还可以实现零相位滤波(即令h(n) = h(−n),n=0,1,…,N⁄2)。为了获得好的通带与阻带衰减,滤波器的阶次N 往往较大(N》30),因此 FIR 滤波器的缺点是滤波时的计算量较大,不易实时实现。
  FIR 滤波器的设计方法很多,如前面章节介绍的窗函数法,频率抽样法及切比雪夫最佳一致逼近法。
  前两种方法给出的滤波器性能不够理想,但第三种可用来设计出既有好的衰减特性又有好的边缘频率的滤波器,是一个公认的 FIR 滤波器设计的好方法。此外,人们还提出了最小平方逼近、带约束的最小平方逼近等设计方法,MATLAB 中也有相关的 m 文件,但就其性能来说,并没有超出切比雪夫最佳一致逼近法。所以,如果特别强调要不产生相位失真且计算速度允许,那么最好的选择是 FIR 滤波器。
  从性能上来说,IIR滤波器传递函数包括零点和极点两组可调因素,对极点的惟一限制是在单位圆内。因此可用较低的阶数获得高的选择性,所用的存储单元少,计算量小,效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。FIR滤波器传递函数的极点固定在原点,是不能动的,它只能靠改变零点位置来改变它的性能。所以要达到高的选择性,必须用较高的阶数;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可能比IIR滤波器高5-10倍,结果,成本较高,信号延时也较大;如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样要大大增加滤波器的阶数和复杂性。而FIR滤波器却可以得到严格的线性相位。
  从结构上看,IIR滤波器必须采用递归结构来配置极点,并保证极点位置在单位圆内。由于有限字长效应,运算过程中将对系数进行舍入处理,引起极点的偏移。这种情况有时会造成稳定性问题,甚至产生寄生振荡。相反,FIR滤波器只要采用非递归结构,不论在理论上还是在实际的有限精度运算中都不存在稳定性问题,因此造成的频率特性误差也较小。此外FIR滤波器可以采用快速傅里叶变换算法,在相同阶数的条件下,运算速度可以快得多。
  另外,也应看到,IIR滤波器虽然设计简单,但主要是用于设计具有分段常数特性的滤波器,如低通、高通、带通及带阻等,往往脱离不了模拟滤波器的格局。而FIR滤波器则要灵活得多,尤其是他易于适应某些特殊应用,如构成数字微分器或希尔波特变换器等,因而有更大的适应性和广阔的应用领域。
  从上面的简单比较可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。从使用要求上来看,在对相位要求不敏感的场合,如语言通信等,选用IIR较为合适,这样可以充分发挥其经济高效的特点;对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高。如果有条件,采用FIR滤波器较好。当然,在实际应用中可能还要考虑更多方面的因素。
  不论IIR和FIR,阶数越高,信号延迟越大;同时在IIR滤波器中,阶数越高,系数的精度要求越高,否则很容易造成有限字长的误差使极点移到单位园外。因此在阶数选择上是综合考虑的。
  如果对滤波器的性能要求不是很高,但特别强调滤波器的实时性且具有线性相位,则简单形式的平均滤波器、平滑滤波器以及简单整系数滤波器可供选择。
  梳状滤波器是针对信号中含有周期性的噪声,或在噪声中含有周期性的信号而应用的一类滤波器。
  故,相同滤波效果,IIR的计算量比FIR小。
  FIR有线性相位而IIR不具有。
  FIR一直稳定,而IIR不具备。
  数字滤波和模拟滤波的区别
  数字滤波有着模拟滤波难以达到的性能,但是速度慢,而且模拟滤波的幅度以及频率的动态范围更大。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分