您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 实验六__16阶FIR滤波器
数字信号处理实验报告实验六实验题目:16阶FIR滤波器姓名:学号:班级:指导老师:实验六16阶FIR滤波器1实验六16阶FIR滤波器一、实验仪器:PC机一台,JQ-NIOS-2C35实验箱一台及辅助软件(DSPBuilder、Matlab/Simulink、QuartusII、Modelsim)。二、实验目的:1、初步了解JQ-NIOS-2C35实验箱的基本结构;2、学习和熟悉基于DSPBuilder开发数字信号处理实验的流程。3、学习和熟悉DSPBuilder层次化的设计方法。三、实验原理:1.FIR滤波器基础FIR滤波器具有直接型、级联型和频率抽样型三种基本结构[14]。由于在DSPBuilder模型设计中采用了直接型结构,我们只对直接型结构进行讨论。这种结构也被称为抽头延迟线结构,或横向滤波器结构[15][16]。图1显示的是直接型结构的示意图,从图中可以看出,每个抽头上的加权值Mrrb,.......,2,1,0),(,分别等于滤波器的单位冲击响应Mrrh,......,2,1,0),(。输入与抽头加权值的乘积的和就是输出)(ny。图1FIR滤波器直接型结构示意图转置定理定义为,如果将上图中的所有支路倒转,并将输入x(n)和输出y(n)的位置调换,则其冲击响应不变。将转置定理应用于上图,则得到FIR滤波器的转置结构,如图2所示。图2转置型FIR滤波器结构示意图2.具有线性相位的FIR滤波器结构若一个FIR滤波器具有线性相位,且其单位冲击响应h(n)全为实数,则h(n)具有如下特性:当N为偶数时,h(n)=h(M-n);当N为奇数时,h(n)=-h(M-n)。所谓线性相位特性是指滤波器对不同频率的正弦波产生的相移和正弦波的频率成直线关系。在本次试验设计中采用的是N为偶数的结构,图3显示的是N为实验六16阶FIR滤波器2偶数时线性相位滤波器的结构。图3线性相位滤波器结构示意图(N为偶数)3.FIR滤波器的设计方法FIR滤波器的设计方法主要有窗函数法、频率抽样法和切比雪夫逼近法三种。其中窗函数法是设计FIR滤波器最基本的方法。在本次实验设计中,采用的方法也是窗函数法,接下来我们主要讨论用窗函数法设计FIR滤波器。窗函数设计的基本思想是要选择一种合适的理想频率选择性滤波器,然后将它的冲击响应截短以获得一个具有线性相位和因果的FIR滤波器。因此这种方法的关键是选取某种好的窗函数和一种理想滤波器,在滤波器性能参数给定的情况下,应尽量选择主瓣尽可能窄,边瓣峰值进可能小的窗函数。在了解了FIR滤波器的原理及设计方法后,基于DSPBuilder设计FIR滤波器的第一项工作就是滤波器参数的选取。这一工作是借助于Matlab提供的设计滤波器专用的工具箱——FDAtool来完成的。在启动FDAtool前先确定所要设计的FIR滤波器的要求,在这里,我们将用凯撒窗设计一个16阶的低通滤波器,截止频率为10800Hz,采样频率sf为50000HZ。四、实验步骤:(1)在Matlab的命令窗口中输入fdatool命令,启动fdatool。并将参数设置为图6-1所示。图6-1fdatool界面及参数设置实验六16阶FIR滤波器3(2)点击界面下方DesignFilter按钮,点击菜单栏中的Analysis-FilterCoefficients。点击,在界面中的Filterarithmetic选项中选择Fixed-point,在弹出的界面中将filterprecision设为specify。将Numeratorwordlength设为9,取消勾选Best-precisionfractionlengths,Numeratorfrac.length为8;点击Input/Output,设置Inputwordlength为9,Inputfractionlength为8,Outputwordlength为17,Outputfractionlength为16。点击Apply,再点击菜单File-Export将系数导出到Workspace空间,在matlab命令窗口输入命令Num*(2^8),导出的优化后系数如下:-7713-3-23-84810110148-8-23-3137-7(3)关闭Matlab。将桌面的FIR.mdl拷贝到“D:\ProgramFiles\MATLAB71\work”(MATLAB安装目录下的work文件夹)处,并双击打开。图6-216阶FIR系统图图6-316阶FIR子系统——Input1_Subsystem实验六16阶FIR滤波器4图6-416阶FIR子系统——Input1_Subsystem1图6-416阶FIR子系统——Fir_SubSystem(4)点击工具栏即可开始系统级simulink仿真,(5)点击TestBenchOn模块,打开模块参数界面,在Advanced选项卡中,点选LauchGUI,并依次点击GenerateHDL,RunSimulink和RunModelsim,启动RTL级仿真。(6)随后显示的界面即为ModelsimRTL级仿真的波形图。选中tb_fir/dut/output信号,点击鼠标右键,选中Propertyties选项,选择Format为analog,将Height设为100,Scale设为0.1,点击【OK】确认。同样的方法,选中tb_fir/dut/output1信号,点击鼠标右键,选中Propertyties选项,选择Format为analog,将Height设为100,Scale设为0.2;选中tb_fir/dut/output2信号,点击鼠标右键,选中Propertyties选项,选择Format为analog,将Height设为100,Scale设为0.3;选中tb_fir/dut/output3信号,点击鼠标右键,选中Propertyties选项,选择Format为analog,将Height设为100,Scale设为0.4;最后,在波形界面单击鼠标右键,选择ZoomFull,即可观察到RTL级仿真波形。(7)点击SignalCompiler模块,打开参数设置页面,点击compile,结束后,关闭该页面。(8)执行Assignmets-AssignmentEditor,将Category设为Pin,按照实验箱中的用户指南28页中的图4-5所示将aclr、Input1_SubSystem_Input、Input2_SubSystem_Input分配给开关,按照37页图4-8将Clock分配为PIN_N2管脚,按照52页图4-10将Output总管脚及其如Output[0]……Output[8]的分管脚进行分配,同样的方法对Output1总管脚及其如Output1[0]……Output1[8]的分管脚、Output2总管脚及其如Output2[0]……Output2[8]的分管脚和Output3总管脚及其如Output3[0]……Output3[8]的分管脚进行分配,并保存。实验六16阶FIR滤波器5(9)执行Tools-SignalTapⅡLogicAnalyzer,在Data窗口中的空白处双击,在弹出的对话框中将Fiter设为all®isters:postfittings,点击List,将Output、Output1、Output2和Output3添加至右边的窗口中,点击【OK】确认。(10)在右边的对话框中将Clock设为Clock信号,Sampledepth设为2K,点选Triggerin,Source设为Clock信号,Pattern设为Risingedge。保存,若弹出对话框询问是否将文件添加至工程,选择Yes。点击菜单栏中的,重新对工程进行编译。(11)打开实验箱,接入电源,用USBBlaster线将电脑和实验箱连接起来,选择菜单栏中的图标。(12)点击HardwareSetup,选择USB-0,点击【OK】确认。选中fir.sof文件,点击Start,将文件下载到实验板上。在SignaltapII界面点击Hardware右边的Setup,将其设为USB-Blaster[USB-0]。(13)将实验箱上的事先分配的aclr、Input1_Subsystem_Input、Input2_Subsystem_Input开关拨至高电平,点击工具栏的图标,启动数据采集,一段时间后点击图标停止数据采集,点击SignalTap中的data窗口,即可看到硬件实现的波形。如图12所示:五、实验结果:(1)Simulink仿真波形:ans=-7713-3-23-84810110148-8-23-3137-7实验六16阶FIR滤波器6(2)RTL级仿真波形(3)硬件实现波形实验六16阶FIR滤波器7六、讨论分析:(1)实验中遇到的问题和解决方法。问题:仿真波形一直不符合要求;通过改变参数最终获得理想波形
本文标题:实验六__16阶FIR滤波器
链接地址:https://www.777doc.com/doc-2459277 .html