------------------------------------------------------------------------------------------------
1有限冲激响应滤波器FIR算法硬件实现
有限冲激响应滤波器FIR算法硬件实现
一,摘要:通过掌握A/D转换的基本过程和程序处理过程,有限冲激响应数字滤波器的基础理论,模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器),数字滤波器系数的确定方法,设计低通FIR滤波器熟悉FIR滤波器及其参数的调整,通过对采样值进行计算产生混频波形,滤波器参数确定之后便可编写程序,利用CCS软件进行仿真。
二,引言:有限冲击响应滤波器FIR算法窗函数法设计FIR数字滤波器的原理及方法, 设计低通FIR滤波器 。通过掌握A/D转换程序处理,对采样值进行计算产生混频波形,对FIR滤波器参数调整。用Code Composer Studio 2.21进行仿真。
三,原理:1.对单位冲激的输入信号的响应为有限长序列的数字滤波器。它的主要特点是具有精确线性相位特性。有限冲激响应数字滤波器一般实现为非递归型结构,因此,又称为非递归型数字滤波器。非递归型滤波器具有绝对稳定的特性,而且,运算有限字长所产生的输出噪声也较小。按所处理信号的类型可分为一维有限冲激响应数字滤波器和二维或多维有限冲激响应数字滤波器。一维有限冲激响应数字滤波器 又称一维非递归型数字滤波器,处理单变量信号序列。)。设计一维有限冲激响应数字滤波器常用的方法有:窗函数法、频率采样法和等波纹机助优化设计法。
——————————————————————————————————————
------------------------------------------------------------------------------------------------
设计有限冲激响应数字滤波器最直接的方法就是把无限冲激响应序列截短,得到有限长度的冲激响应。设所要求的理想频率响应为Hd(),其单位冲激响应Hd(n)为Hd()的傅里叶反变换。Hd(n)是非因果无限长序列。为使得所设计的数字滤波器的有限冲激响应h(n)逼近hd(n), 采用对hd(n)加窗的方法,即令 h(n)=hd(n)w(n)
式中w(n)为有限长度窗序列。由褶积定理可求得所设计的滤波器的频率响应。
根据要求设计低通FIR滤波器
要求:通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75dB,采样频率50kHz。 设计:
-过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz -采样频率:
f1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16kHz Ω1=2πf1/fs=0.64π
-理想低通滤波器脉冲响应: h1[n]=sin(nΩ1)/n/π=sin(0.64πn)/n/π
-根据要求,选择布莱克曼窗,窗函数长度为: N=5.98fs/过渡带宽度=5.98*50/12=24.9 -选择N=25,窗函数为:
w[n]=0.42+0.5cos(2πn/24)+0.8cos(4πn/24) -滤波器脉冲响应为:
——————————————————————————————————————
------------------------------------------------------------------------------------------------
h[n]=h1[n]w[n] |n|≤12 h[n]=0 |n|>12
-根据上面计算,各式计算出h[n],然后将脉冲响应值移位为因果序列。
-完成的滤波器的差分方程为:
y[n]=-0.001x[n-2]-0.002x[n-3]-0.002x[n-4]+0.01x[n-5] -0.009x[n-6]-0.018x[n-7]-0.049x[n-8]-0.02x[n-9] +0.11x[n-10]+0.28x[n-11]+0.64x[n-12] +0.28x[n-13]-0.11x[n-14]-0.02x[n-15]
+0.049x[n-16]-0.018x[n-17]-0.009x[n-18]+0.01x [n-19]
-0.002x[n-20]-0.002x[n-21]+0.001x[n-22] 程序流程图
2.模数转换工作过程
-模数转换模块接到启动转换信号后,按照设置进行相应通道的数据采样转换。
-经过一个采样时间的延迟后,将采样结果放入AD数据寄存器中保存。
-等待下一个启动信号。 3.模数转换的程序控制
模数转换相对于计算机来说是一个较为缓慢的过程。一般采用 中断方式启动转换或保存结果,这样在CPU忙于其他工作时可
——————————————————————————————————————
------------------------------------------------------------------------------------------------
以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。 4.混频波形产生
将接收到的两路AD采集信号进行相加,并对结果的幅度进行限制,从而产生混合后的输出波形。实验中采用了同相位混频方法,也可修改程序完成异相混频法。 5. FIR滤波器工作原理
在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,使之成为8bit的数字信号,一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。 1. 程序设计
Fir滤波器工作原理及参数计算:
通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75kHz,采样频率50kHz。 设计:
——————————————————————————————————————
------------------------------------------------------------------------------------------------
-过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12 kHz -采样频率:
F1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16 kHz Ω1=2Πf1/fs=0.64Π
--理想低通滤波器脉冲响应: h1[n]=sin(nΩ1)/n/Π=sin(0.64Πn)/n/Π
--根据要求,选择布莱克曼窗,窗函数长度为: N=5.98fs/过渡带宽度=5.98*50/12=24.9 --选择N=25,窗函数为:
W[n]=0.42+0.5cos(2лn/24)+0.8cos(4лn/24) --滤波器脉冲响应为: h[n]=h1[n]W[n] |n|≤12 h[n]=0 |n|>12
--根据上面计算,各式计算出h[n],然后将脉冲响应值移位为因果序列。
--完成滤波器的差分方程为:
Y[n]=0.001x[n-2]-0.002x[n-3]-0.002x[n-4]+0.01x[n-5]-
0.009x[n-6]-0.018x[n-7]-0.049x[n-8]-0.02x[n-9]+0.11x[n-10]+ 0.28x[n-11]+0.64x[n-12]+0.28x[n-13]-0.11x[n-14]-0.02x[n-15]+0.049x[n-16]-0.018x[n-17]-0.009x[n-18]+0.01x[n-19]- 0.002x[n-20]-0.002x[n-21]+0.001x[n-22] 6.源程序及注释
——————————————————————————————————————