设计要求
利用matlab设计一个线性相位FIR带通滤波器,并在FPGA上实现。
1、滤波器指标:过渡带带宽分别为100~300HZ,500~700HZ,阻带允许误差为0.02,通带允许误差为0.01,采样频率为2000HZ,量化位数为12bit
2、设计方法,要求利用kaiserord函数获取滤波器参数,并设计成等波纹最优滤波器
3、要求对叠加信号进行滤波,叠加信号是由频率分别为100 ,400,800HZ的正弦波叠加而成,要求将信号通过FPGA滤波后的用modelsim仿真,并在matlab中验证滤波器的正确性
很多朋友一看,这是嘛呀?即使当时数字信号处理学的还算可以,但是真正到工程中就傻了眼了,好吧,半个月前我也是这种状态,下面我就记录一下这段时间学这部分知识的过程吧
1、嘛叫滤波器?
我们所说的当然就是数字滤波器了,官方解释就是输入输出都是数字信号,通过数值运算处理改变输入信号所含频率成分相对比例,或者滤除某些频率成分的数字器件或者程序。对于经典滤波器而言,就是利用了当信号有用成分的频带与想要滤除的信号的频带是不叠加的,占据不同频率带的这一特点,利用经典滤波器,包括低通,高通,带通,带阻滤波器,设计制定的通带,滤除不需要的信号成分,得到我们想要频带信号的过程。但是对于信号的频带相互叠加的情况,经典滤波器就无能为力了,就需要用到现代滤波器,当然也就更高大上了,我水平有限,也不知道他是嘛了~
而我们常用的滤波器就是选频滤波器了,就像上面那个我给大家出的题目就是一个选频滤波器。学过数字信号处理的同学应该知道,我们要观察信号的频域,需要将其进行傅里叶变换,得到信号的频率响应,这个响应我们用H(e^jw)表示,频率响应又可以分为幅频响应与相频响应,幅频响应表示的是信号经过滤波器滤波后频率成分幅度的衰减情况,相频响应表示的是信号经滤波器滤波后的延时情况,因此我们往往通过这两个特性来观察我们的滤波器是否符合我们的设计要求。
下面先看一个带通滤波器的设计指标图
经典滤波器的指标主要就分为4个,即通带截止频率,阻带截止频率,通带最大衰减,阻带最小衰减。关于这4个参数的意思想必大家都已经很熟了,要不然信号处理这门课**的是白学了,这里就不再多说,我们直接看之前的题目,题目要求我们的过渡带频率分别为100~300HZ,500~700HZ,对应带通滤波器的参数我们可以很清楚的知道我们要设计的滤波器的截止频率,即
通带截止频率为300HZ,500HZ,阻带截止频率为100HZ,700HZ。即我们的通带是300~500HZ,而我要求的的信号,是由100,400,800HZ频率的三个信号叠加而成,因此,若这个信号通过滤波器之后,应该是阻带内的信号滤除,只保留通带内的信号才对,所以最后我们要验证的就是,通过滤波器滤波后的信号的波形,要跟信号频率为400HZ的信号波形一致,才证明我们的滤波器设计正确。好了,好像我们根据这个图只知道这点东西,想真正设计出来还是差的远呢,下面的知识将涉及到滤波器原理部分。
2、浅谈FIR滤波器原理
FIR滤波器呢,就是我们所学的有限脉冲响应滤波器。他的特点就是他的单位脉冲响应是有限长的。其实我们设计FIR滤波器就是设计他的单位脉冲响应,因为一个信号经过滤波器输出,得到的输出信号就是输入信号与滤波器单位脉冲响应的线性卷积,输入信号通过与单位脉冲响应信号之间的乘积累加运算得到输出信号,因此我们设计各式各样的单位脉冲响应信号,就可以根据我们的要求滤除和保留信号,从而达到滤波的目的。
所谓系统函数,即对单位脉冲响应进行Z变换,从Z变换的表达式我们知道,FIR滤波器就是单位脉冲响应与输入信号的乘积累加,每一个乘法器系数就是一个FIR系数。
3、关于线性相位
线性相位是FIR滤波器的一大特点,这里的线性相位,指的是我们的滤波器具有线性相位,而前面说了,我们的FIR滤波器,其实就是指单位脉冲响应,因此我们要设计成具有线性相位的FIR滤波器,其实就是让我们的单位脉冲响应满足线性特点?那怎么满足呢?因为一个序列,我们对其求频率响应之后得到的是他的幅频响应与相频响应,因此,我们需要从相频响应入手
即让斜率保证是一个常数的情况下进行讨论,这个讨论的过程相信大家书本上都有,因此这里就不必多讲,希望大家自己好好看一下,还是那句话,只有强大的理论支持,你才