第6章 FIR数字滤波器设计

上传人:飞*** 文档编号:3962758 上传时间:2017-08-05 格式:PPT 页数:92 大小:712.50KB
返回 下载 相关 举报
第6章 FIR数字滤波器设计_第1页
第1页 / 共92页
第6章 FIR数字滤波器设计_第2页
第2页 / 共92页
第6章 FIR数字滤波器设计_第3页
第3页 / 共92页
第6章 FIR数字滤波器设计_第4页
第4页 / 共92页
第6章 FIR数字滤波器设计_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《第6章 FIR数字滤波器设计》由会员分享,可在线阅读,更多相关《第6章 FIR数字滤波器设计(92页珍藏版)》请在金锄头文库上搜索。

1、第6章 FIR数字滤波器设计,6.1 FIR数字滤波器原理 6.2 使用DSP Builder设计FIR数字滤波器 6.3 使用FIR IP Core设计FIR滤波器,6.1 FIR数字滤波器原理,对于一个FIR滤波器系统而言,它的冲激响应总是有限长的,其系统函数可以记为,其中M是FIR滤波器的零点数,即延时节数,为叙述简便,在本章中M被称为FIR滤器的阶数。最基本的FIR滤波器可用下式表示:,其中x(n)是输入采样序列,h(i)是滤波器系数,L是滤波器的系数长度,y(n)表示滤波器的输出序列。也可以用卷积来表示输出序列y(n)与x(n)、h(n)的关系。,图6-1中显示了一个典型的直接I型4

2、阶FIR滤波器,其输出序列y(n)满足下列等式:,图6-1 4阶FIR滤波器结构,在这个FIR滤波器中,总共存在3个延时节,4个乘法单元,一个4输入的加法器。如果采用普通的数字信号处理器(DSP Processor)来实现,只能用串行的方式顺序地执行延时、乘加操作,这不可能在一个DSP(指数字信号处理器)指令周期内完成,必须用多个指令周期来完成。 但是,如果采用FPGA来实现,就可以采用并行结构,在一个时钟周期内得到一个FIR滤波器的输出。,6.2 使用DSP Builder设计FIR数字滤波器,使用DSP Builder可以方便地在图形化环境中设计FIR数字滤波器,而且滤波器系数的计算可以借

3、助Matlab强大的计算能力和现成的滤波器设计工具来完成。 6.2.1 3阶常系数FIR滤波器的设计 在此用以下示例来说明整个设计过程。 假定一个3阶的FIR滤波器,其可以表示为,其中:h(0)=63,h(1)=127,h(2)=127,h(3)=63,是量化时附加的因子。 这里采用直接I型来实现该FIR滤波器。设计好的3阶直接I型FIR滤波器模型图可以参见图6-2。具体的新模型建立、模块调用过程可以参见第3章。,图6-2 3阶FIR滤波器,图中模块的参数作如下设置:xin模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”

4、设为“signed Integer”参数“Node Type”设为“Input port”参数“number of bits”设为“8”,yout模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Output port”参数“number of bits”设为“8”Parallel Adder Subtractor模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库“Add(+)Sub

5、(-)”设为“+”,Delay1、Delay2、Delay3模块:(Delay)库:Altera DSP Builder中Storage库参数“Depth”设为“1”参数“Clock Phase Selection”设为“1” h0模块:(Gain)库:Altera DSP Builder中Arithemtic库参数“Gain Value”设为“63”参数“Map Gain Value to Bus Type”设为“Signed Integer”参数“Gate Value number of bits”设为“8”参数“Number of Pipeline Levels”设为“0”,h1模块:(

6、Gain)参数“Gain Value”设为“127”其余同h0模块h2模块:(Gain)参数“Gain Value”设为“127”其余同h0模块h3模块:(Gain)参数“Gain Value”设为“63”其余同h0模块,由于FIR滤波器的系数已经给定,是一个常数,从图中看到,在DSP Builder中可以用Gain(增益)模块来实现的运算,用延时Delay模块来实现输入信号序列的延时。 设计完3阶FIR滤波器模型后,就可以添加Simulink模块进行仿真了,如图6-3所示。,图6-3 带仿真模块的3阶滤波器模型,新增的仿真模块的参数作如下设置:Chirp Signal模块:(Chirp Si

7、gnal)库:Simulink中Sources库参数“Initial Frequency(Hz)”设为“0.1”参数“Target time”设为“10”参数“Frequency at target time(Hz)”设为“1”参数“Interpret vectors parameters as 1-D”选中,Gain模块:(Gain)库:Simulink中Math Operations库参数“Gain”设为“127”参数“Multiplication”设为“Element wise(K.*u)”Scope模块:(Scope)库:Simulink中sinks库参数“Number of Axes

8、”为“2”,其中,Chirp Signal模块为线性调频信号发生模块,生成一个线性调频信号0.1 Hz1 Hz。 在该模型仿真中,使用默认的仿真参数。 仿真结果如图6-4所示。显然,一个线性调频信号通过3阶FIR滤波器后幅度发生了变化,频率较高部分的幅度被衰减了。,图6-4 FIR滤波器仿真结果,6.2.2 4阶FIR滤波器节的设计 上节介绍的是常系数FIR滤波器的示例。本节将设计一个系数可变的FIR滤波器节。对于直接I型的FIR滤波器(结构见图6-5),是可以级联的。也就是说,在滤波器系数可变的情况下,可以预先设计好一个FIR滤波器节,在实际应用中通过不断地调用FIR滤波器节,将其级联起来,

9、用来完成多阶FIR滤波器的设计。当然,对于线性相位的FIR滤波器,我们可以采用改进后的滤波器结构,可以节省一半的乘法器。在这里,为了叙述方便,没有采用改进后的FIR结构。,图6-5 直接I型FIR滤波器结构,图6-6是一个直接I型的4阶FIR滤波器节的结构。为了使该滤波器节的调用更为方便,在xin输入后插入了一个延时单元,由3阶滤波器演变成4阶的,不过常系数项(系数项) 恒为0。由于在通信应用中,FIR滤波器处理的往往是信号流,因而增加一个延时单元不会影响FIR滤波器处理的结果,只是系统延时增加了一个时钟周期。,图6-6 直接I型4阶FIR滤波器节,对于该FIR滤波器节,其系统函数可以用下式来

10、表示: 由于浮点小数在FPGA中实现比较困难,实现的代价太大,因而在DSP Builder中不妨使用整数运算来实现,最后用位数舍取的方式得到结果。为了使参数可变,FIR滤波器系数、也作为输入端口。在本设计中输入序列的位宽设为9位。 图6-7显示的就是一个设计好的4阶FIR滤波器节,与图6-2的常数FIR滤波器相比,这里用Product(乘法)模块代替了Gain(增益)模块。,图6-7 直接I型4阶FIR滤波器节,图6-7中相关模块的参数设置如下:xin、hn1、hn2、hn3、hn4模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus

11、Type”设为“signed Integer”参数“Node Type”设为“Input port”参数“number of bits”设为“9”,yn模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Output port”参数“number of bits”设为“20”xn4模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Integer”参数“Node Typ

12、e”设为“Output port”参数“number of bits”设为“9”,Parallel Adder Subtractor模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Add(+)Sub(-)”设为“+”使用“Pipeline”参数“Clock Phaese Selectioon”设为“1”Delay、Delay1、Delay2、Delay3模块:(Delay)库:Altera DSP Builder中Storage库参数“Depth”设为“1”参数“Clock Phase Selection”设为“

13、1”,Product模块:(Product)库:Altera DSP Builder中Arithemtic库参数“Pipeline”设为“2”参数“Clock Phase Selection”设为“1”不选择“Use LPM”,6.2.3 16阶FIR滤波器模型设计 利用以上设计的4阶FIR滤波器节可以方便地搭成阶直接I型FIR滤波器(注意: )。比如要实现一个16阶的低通滤波器,可以调用4个4阶FIR滤波器节来实现。 1. 设计4阶FIR滤波器节子系统 建立一个新的DSP Builder模型,复制上节的FIR4tap模型到新模型。按照第4章所示的方法由FIR4tap模型建立子系统(SubSy

14、stem),并对端口信号进行修改,把子系统更名为fir4tap,如图6-8所示。fir4tap的内部结构如图6-9所示。,图6-8 fir4tap子系统,图6-9 fir4tap子系统内部原理图,2. 组成16阶FIR滤波器模型 复制4个fir4tap,并将它们衔接起来。前一级的输出端口x4接后一级的x输入端口,并附加上16个常数端口,作为FIR滤波器系数的输入。把4个子系统fir4tap的输出端口y连接起来,接入一个4输入端口的加法器,得到FIR滤波器的输出yout。 注意:在作好子系统后,要按照第4章中所述的方式,修改其Mask参数Mask Type为“SubSystem AlteraBl

15、ockSet”。设计好的16阶FIR滤波器如图6-10所示。,图6-10 16阶直接I型FIR滤波器模型,16阶直接I型FIR滤波器模型中,对新增加的模块作如下设置:xin模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Input port”参数“number of bits”设为“9”,yout模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Output port”参数“number of bits”设为“20”x16模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Output port”参数“number of bits”设为“9”,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号