【教学课件】第7章IIR数字滤波器设计.ppt

上传人:小飞机 文档编号:5659294 上传时间:2023-08-06 格式:PPT 页数:69 大小:491KB
返回 下载 相关 举报
【教学课件】第7章IIR数字滤波器设计.ppt_第1页
第1页 / 共69页
【教学课件】第7章IIR数字滤波器设计.ppt_第2页
第2页 / 共69页
【教学课件】第7章IIR数字滤波器设计.ppt_第3页
第3页 / 共69页
【教学课件】第7章IIR数字滤波器设计.ppt_第4页
第4页 / 共69页
【教学课件】第7章IIR数字滤波器设计.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《【教学课件】第7章IIR数字滤波器设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章IIR数字滤波器设计.ppt(69页珍藏版)》请在三一办公上搜索。

1、第7章 IIR数字滤波器设计,7.1 IIR滤波器原理 7.2 使用DSP Builder设计IIR滤波器 7.3 在Quartus II中使用IIR滤波器IP核,7.1 IIR滤波器原理,IIR滤波器一般采用递归方式来实现。也就是说,滤波器当前输出是输入序列和以前各输出值、的函数,这可以用下列差分方程来表示:,(7-1),其中MN,N是IIR滤波器的阶数。相应地,IIR滤波器的系统函数可以表示为,(7-2),在上一章已经提及到,FIR滤波器的系统函数只有零点。而IIR滤波器除了具有极点以外,一般还存在零点。由于极点的存在,IIR滤波器用递归结构来实现较为简单。实现IIR滤波器的基本结构共有三

2、中:直接型、级联型和并联型。下面简单介绍前两种IIR滤波器的结构。,1.直接型 利用公式(7-2),可以直接导出直接I型的IIR滤波器结构,可用下式来表示:,(7-3),可以看出,和反馈环节 中的延时单元不能共用,需要个延 时单元。为了减少延时单元,对于线性系统,公式(7-3)也可以写成:,由此可以导出直接型的滤波器结构。图7-1表示了一个直接型IIR滤波器的结构,该滤波器的阶数是2阶,共存在两个反馈环节。,图7-1 直接型IIR滤波器结构,2.级联型 对式(7-2)的分子、分母进行因式分解,由于中的系数都为实数,的极、零点只可能是实数或者复共轭对,对于复共轭对因子,可以复合成二阶因子:,式中

3、系数都为实数。如果把实数因子(一阶因子)看成是二次项系数为0的二阶因子,则上式可以写成:,其中,由此可见,是一个2阶的IIR滤波器,N阶IIR滤波器可以看成是由多个2阶IIR滤波器级联而成的,即IIR滤波器可以采用下列结构来表示,也就是级联型结构(见图7-2):,图7-2 级联型IIR滤波器结构,7.2 使用DSP Builder设计IIR滤波器,7.2.1 4阶直接型IIR滤波器设计 在此需要设计一个4阶IIR滤波器。给定滤波器的系统函数如下:,即滤波器系数为 a0=1b0=0.05 a1=-1.95b1=0.20 a2=1.74 b2=0.31 a3=-0.72b3=0.20 a4=0.1

4、2 b4=0.05 可以看出,这是一个4阶IIR滤波器,我们采用直接型结构来实现该滤波器,其具体结构可由信号流图(见图7-3)来表示。,图7-3 直接型4阶IIR滤波器信号流图,在DSP Builder中,建立一个新模型,按照图7-3调用DSP Builder模块进行设计。设计完的4阶IIR滤波器模型如图7-4所示。,图7-4 4阶IIR滤波器模型,该模型中各个模块的参数设置如下:X模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Fractional”(有符号小数)参数“Node Type”设为“In

5、put port”参数“number of bits.”设为“2”参数“.number of bits”设为“8”,Y模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Fractional”参数“Node Type”设为“Output port”参数“number of bits.”设为“4”参数“.number of bits”设为“23”BusConversion模块:(BusConversion)库:Altera DSP Builder中Bus Manipulation库,参数“Input Bus

6、 Type”设为“signed Fractional”参数“Input number of bits.”设为“4”参数“Input.number of bits”设为“23”参数“Output Bus Type”设为“signed Fractional”参数“Output number of bits.”设为“2”参数“Output.number of bits”设为“8”FeedBack Adder模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“2”参数“Add(+)Su

7、b(-)”设为“+-”,FeedBack Adder1模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“4”参数“Add(+)Sub(-)”设为“+”FeedForward Adder模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“5”参数“Add(+)Sub(-)”设为“+”,Delay、Delay1、Delay2、Delay3模块:(Delay)库:A

8、ltera DSP Builder中Storage库参数“Depth”设为“1”参数“Clock Phase Selection”设为“1”A1、A2、A3、A4、B0、B1、B2、B3、B4模块:(Gain)库:Altera DSP Builder中Arithemtic库参数“Gain Value”按照设计要求中指定的系数设置(直接输入)参数“Map Gain Value to Bus Type”设为“Signed Fraction”参数“Gain value number of bits.”设为“2”参数“.Gain value number of bits”设为“12”参数“Number

9、 of Pipeline Levels”设为“0”,另外,用于Simulink仿真的模块的参数设置如下:Pulse Generator模块:(Pulse Generator)库:Simulink中Sources库参数“Pulse type”设为“Sample based”参数“Amplitude”设为“1”参数“Period(number of samples)”设为“1000”参数“Pulse width(number of samples”设为“1”参数“Phase delay(number of samples)”设为“10”参数“Sample time”设为“1”“Interpret

10、vector parameters as 1-D”设为“”,Scope模块:(Scope)库:Simulink中sinks库 参数“Number of Axes”为“2”在这个实现中,使用了增益(Gain)模块来完成常数系数的乘法。这里使用了有符号小数(Signed Fractional)来简化IIR滤波器系数的代入过程。值得注意的是,参数“number of bits.”设置的是整数部分的位宽,其中最高位为符号位;参数“.number of bits”设置了小数部分的位宽。假如把参数“number of bits.”设置为“2”,那就意味着该小数的整数部分只能是0、1、-1、-2(分别对应0

11、0、01、10或10、10),而且整数部分要为-2,必须是小数部分为全零。,建立IIR滤波器模型后就可以进行仿真了。Simulink仿真模块“Pulse Generator”(脉冲发生器)模拟了一个单位冲激函数。通过“Scope”模块来观察该直接型IIR滤波器的冲激响应。修改Simulink的仿真参数设置,设置“Stop time”仿真停止时间为“50”,“Solver options”中“Type”为“Fixed-Step”。启动仿真。仿真结果见图7-5。,图7-5 IIR滤波器仿真结果,7.2.2 4阶级联型IIR滤波器设计 1.建立模型 参照图7-2,建立一个4阶的级联型IIR滤波器模型

12、,该模型共由两节2阶直接型IIR滤波器构成,见图7-6。,图7-6 4阶级联型IIR滤波器,模型中各个模块的参数设置如下:X模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed Fractional”(有符号小数)参数“Node Type”设为“Input port”参数“number of bits.”设为“2”参数“.number of bits”设为“8”,Y模块:(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“signed F

13、ractional”参数“Node Type”设为“Output port”参数“number of bits.”设为“4”参数“.number of bits”设为“23”BusConv模块:(BusConversion)库:Altera DSP Builder中Bus Manipulation库参数“Input Bus Type”设为“signed Fractional”参数“Input number of bits.”设为“4”,参数“Input.number of bits”设为“18”参数“Output Bus Type”设为“signed Fractional”参数“Output

14、number of bits.”设为“2”参数“Output.number of bits”设为“15”,BusConv1、BusConv4模块:(BusConversion)库:Altera DSP Builder中Bus Manipulation库参数“Input Bus Type”设为“signed Fractional”参数“Input number of bits.”设为“3”参数“Input.number of bits”设为“15”参数“Output Bus Type”设为“signed Fractional”参数“Output number of bits.”设为“2”参数“O

15、utput.number of bits”设为“15”,BusConv2、BusConv3、BusConv5模块:(BusConversion)库:Altera DSP Builder中Bus Manipulation库参数“Input Bus Type”设为“signed Fractional”参数“Input number of bits.”设为“4”参数“Input.number of bits”设为“25”参数“Output Bus Type”设为“signed Fractional”参数“Output number of bits.”设为“2”参数“Output.number of

16、bits”设为“15”,FeedBackAdder、FeedBackAdder2模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“2”参数“Add(+)Sub(-)”设为“+-”FeedBackAdder1、FeedBackAdder3模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“2”参数“Add(+)Sub(-)”设为“+”,FeedForwardAd

17、der、FeedForwardAdder1模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“3”参数“Add(+)Sub(-)”设为“+”Delay、Delay1、Delay2、Delay3模块:(Delay)库:Altera DSP Builder中Storage库参数“Depth”设为“1”参数“Clock Phase Selection”设为“1”,G、A11、A12、A21、A21、B10、B11、B12、B20、B21、B22模块:(Gain)库:Altera DS

18、P Builder中Arithemtic库参数“Map Gain Value to Bus Type”设为“Signed Fraction”参数“Gain value number of bits.”设为“2”参数“.Gain value number of bits”设为“10”参数“Number of Pipeline Levels”设为“0”,2.IIR滤波器系数的计算假设4阶IIR滤波器的设计指标如下:采样频率Fs为50MHz;滤波器类型为高通(HighPass);滤波器Fc为5MHz;滤波器设计类型为Butterworth。打开MATLAB中的FDATool进行滤波器系数计算,见图7

19、-7。,图7-7 计算IIR滤波器系数,设置阶数为4,输入相关参数指标,点击“Design Filter”按钮完成IIR滤波器设计,接着打开相关分析。图7-8显示的是IIR滤波器的相频特性,图7-9显示了IIR滤波器的阶跃响应。,图7-8 相频特性,图7-9 阶跃响应,3.设置系数 选择FDATool的“File”菜单中的“Export”,导出IIR滤波器系数。对于级联型IIR滤波器,导出的系数分成两个部分:SOS矩阵和G增益,其中对于多个级联的IIR滤波器,SOS矩阵为一个二维矩阵。在此先把SOS矩阵和G导出到Matlab的工作区(Workspace),设置上面级联型IIR滤波器中的各个增益

20、模块的“Gain Value(增益值)”。,G模块的“Gain Value”是G;B10模块为SOS(1,1),B11模块为SOS(1,2),B12模块为SOS(1,3);A11模块为SOS(1,5),A12模块为SOS(1,6);B20模块为SOS(2,1),B21模块为SOS(2,2),B22模块为SOS(2,3);A21模块为SOS(2,5),A22模块为SOS(2,6)。设置完增益值后更新一下模型,IIR滤波器模型的系数就全部设置完成了,见图7-6。,4.Simulink仿真 设置Simulink仿真参数“Stop time(停止时间)”为1e-6,类型为“Fixed-step”。模型

21、中的Simulink仿真模块的参数设置如下:,Step模块:(Step)库:Simulink中Sources库参数“Step time”设为“1e-7”参数“Initial value”设为“0”参数“Final value”设为“1”参数“Sample time”设为“2e-8”“Interpret vector parameters as 1-D”设为“”,Scope模块:(Scope)库:Simulink中sinks库参数“Number of Axes”为“2”启动仿真。由于Step模块生成了一个阶跃函数,故仿真结果为IIR滤波器的阶跃响应,见图7-10。5.由Simulink模型转成V

22、HDL 打开SingalCompiler,选定对应器件,把模型转成VHDL文件,并在SignalCompiler中选择QuartusII进行综合。,图7-10 Simulink仿真结果一阶跃响应,6.适配下载 在QuartusII中打开SignalCompiler建立的Quartus项目文件,选择具体器件,锁定管脚,完成适配后下载至FPGA DSP开发板中。在FPGA DSP开发板上加入高频信号源,验证IIR滤波器的高通滤波效果。,7.3 在QuartusII中使用IIR滤波器IP核,从上面的流程来看,虽然借助DSP Builder中丰富的DSP功能模块和MATLAB强大的计算环境,不再需要关

23、心DSP模块的具体实现过程,也就不会陷入复杂的滤波器设计算法,从而大大简化了IIR滤波器的设计过程。但是,以上述设计方法得到的IIR滤波器,在资源利用上和性能上往往不是最优的。,同FIR Filter Core一样,Altera以及其它FPGA厂商也提供了IIR Filter Core。IIR Filter Core同FIR Filter Core一样,与DSP Builer相结合,可以在Simulink环境中使用(图7-11)。IIR滤波器核在DSP Builder中的使用,与FIR滤波器核大致是相同的,因此本节就不再一一详述了。IIR滤波器核除了与DSP Builder可以衔接开发之外,也

24、可以在QuartusII中直接使用。由于在前文中没有详细提及在QuartusII中使用IP Core,因而在这里加以介绍。,图7-11 IIR Core模块,7.3.1 配置QuartusII以便使用IIR滤波器核 首先,必须确认IIR滤波器核(IIR Compiler)和QuartusII是否安装。打开QuartusII集成环境,新建一个项目。选择菜单“Assignments”“Settings”,打开QuartusII的设置对话框,在对话框的左侧选择“User Libraries(用户库)”,见图7-12。,图7-12 设置用户库,7.3.2 使用IIR滤波器核 首先完成IIR滤波器核的安

25、装配置,然后按照第2章给出的相类似的方法,定制使用IIR滤波器核。具体步骤如下:1.打开MegaWizard Plug-In Manager 选择菜单“Tools”“MegaWizard Plug-In Manager”,接着打开MegaCore向导。在窗口的左侧选中“IIR Compiler”,在右侧选择实现时的HDL类型,并输入生成IIR滤波器核的名字(见图7-13)。,图7-13 选择IIR Core,2.选择IIR滤波器结构 在前文中已经提到,常用的IIR滤波器结构共有三种:直接型(Direct Form),级联型(Cascaded)和并联型(Parallel)。Altera的IIR滤

26、波器核对这三种IIR结构都是支持的。图7-14是IIR滤波器结构设置对话框,在这里我们选择了级联型进行实现,滤波器阶数设为8。图7-15、图7-16分别表示了另外两种滤波器结构的计算公式和结构。,图7-14 IIR滤波器结构,图7-15 直接型IIR结构,图7-16 并联型IIR结构,3.导入滤波器系数 由于IIR滤波器系数的计算要比FIR滤波器复杂得多,对于Altera的IIR滤波器核,其系数计算需要通过其它工具进行,比如可以使用MATLAB的FDATool来完成,再通过图7-17的对话框导入(通过文件)。系数导入后,IIR Compiler可以显示当前系数的IIR滤波器的幅频响应。,图7-

27、17 确定IIR系数,对于IIR滤波器而言,还可以通过导入零极点值来确定IIR滤波器的系数。IIR Compiler也提供了导入零极点来确定IIR系数的方式。图7-18显示了导入后IIR滤波器的零极点图。,图7-18 IIR滤波器的零极点,4.IIR滤波器系数的量化 同FIR滤波器一样,在FPGA上实现,IIR系数必须进行量化处理,见图7-19。我们在这里设置了输入信号的位宽为8位,系数位宽为16位。采用自动方式让IIR Compiler具体决定系数的归一化问题。,图7-19 量化IIR滤波器系数,5.IIR滤波器的具体实现 为了提高IIR滤波器的性能,同时减少IIR滤波器使用的资源,需要对IIR滤波器实现时的某些细节进行调整,如图7-20所示。然后点击“Finish”完成IIR滤波器核的设置。,图7-20 IIR滤波器实现的调整,6.调用设计好的IIR滤波器核 设计好的IIR滤波器核可以通过多种方式调用。图7-21显示了在QuartusII的原理图方式设计中,对设计好的IIR滤波器核作为一个元件(Symbol)进行调用。当然,采用VHDL调用设计好的IIR滤波器核也是相当方便的。IIR Compiler在设计时提供了调用模板文件供设计者参考。另外,IIR Compiler也能生成一些仿真测试文件来简化对核的测试过程。,图7-21 调用设计好的IIR滤波器核,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号