2020-10-18 FIR滤波器

FIR(Finite Impulse Response)Filter:有限冲激响应滤波器,又称为非递归线性滤波器。

FIR滤波器的冲击响应是一个值为滤波器抽头系数的采样序列,其脉冲响应由有限个采样值构成。长度(抽头数)为N+1、阶数为N的FIR系统的转移函数。

FIR滤波器是如何滤波的?

信号通过一个FIR滤波器其实就是信号与FIR滤波器的系数进行卷积(即移位相乘再累加)的过程。但是很多书上却喜欢用很复杂的文字和公式来描述这个本来很简单的概念,唯恐读者感受不到他们的书的高大上!
简单信号模型
低频信号:即在时域上变化慢的信号,如1 1 1 1 2 2 2 2,还有直流信号1 1 1 1 1 1 1
高频信号:即在时域上变化快的信号,如1 2 1 2 1 2 1 2
简单的滤波器模型
低通滤波器:1 1
高通滤波器:1 -1

用滤波器模型对高频或者低频信号进行卷积可以很明显的看出来滤波器对高低频信号的过滤。数字滤波器是在时间序列中工作的,接受一个离散的,有限长度的自序列,产生一个输出序列。

FIR滤波器可以用下图所示的z域功能模块图来描述,其中有z^-1的方框都代表了有一个时钟周期延时的寄存器单元,一个M阶的FIR滤波器有M+1个抽头,通过移位寄存器用每个时钟边沿n(时间下标)处的数据流采样值乘以抽头系数,并将他们加起来形成输出y fir{n}。

module FIR_gussian_lowpass
#(
	parameter order=8//滤波器阶数N
)
(	input data_in,clock,reset,
	output data_out
);
parameter word_size_in=8,//输入数据位宽
		  word_size_out=2*word_size_in+2,//输出数据位宽
		  b0=8'd7,//滤波器抽头系数N+1个
		  b1=8'd17,
		  b2=8'd32,
		  b3=8'd46,
		  b4=8'd52,
		  b5=8'd46,
		  b6=8'd32,
		  b7=8'd17,
		  b8=8'd7;
reg [word_size_in-1:0] sample [1:order];
integer k;

always@(posedge clk or negedge reset)
begin
	if(reset==1)
	begin
		for(k=1;k<=order;k=k+1)
			sample[k] <= 0;
	end
	else
	begin
		sample[1] <= data_in;
		for(k=2;k<=order;k=k+1)
			sample[k] <= sample[k-1];
	end
end

assign data_out=b0*data_in + b1*sample[1]+b2*sample[2]+b3*sample[3]+b4*sample[4]
				+b5*sample[5]+b6*sample[6]+b7*sample[7]+b8*sample[8];
endmodule

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值