实验六 16阶FIR滤波器1.doc_第1页
实验六 16阶FIR滤波器1.doc_第2页
实验六 16阶FIR滤波器1.doc_第3页
实验六 16阶FIR滤波器1.doc_第4页
实验六 16阶FIR滤波器1.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验六 16阶FIR滤波器一、实验仪器:PC机一台,JQ-NIOS-2C35实验箱一台及辅助软件(DSP Builder、Matlab/Simulink、Quartus II、Modelsim)。二、实验目的:1初步了解JQ-NIOS-2C35实验箱的基本结构;2学习和熟悉基于DSP Builder开发数字信号处理实验的流程。3学习和熟悉DSP Builder层次化的设计方法。三、实验原理:1FIR滤波器基础FIR滤波器具有直接型、级联型和频率抽样型三种基本结构14。由于在DSP Builder模型设计中采用了直接型结构,我们只对直接型结构进行讨论。这种结构也被称为抽头延迟线结构,或横向滤波器结构1516。图1显示的是直接型结构的示意图,从图中可以看出,每个抽头上的加权值,分别等于滤波器的单位冲击响应。输入与抽头加权值的乘积的和就是输出。图1 FIR滤波器直接型结构示意图 转置定理定义为,如果将上图中的所有支路倒转,并将输入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为偶数时线性相位滤波器的结构。图3 线性相位滤波器结构示意图(N为偶数) 3FIR滤波器的设计方法FIR滤波器的设计方法主要有窗函数法、频率抽样法和切比雪夫逼近法三种。其中窗函数法是设计FIR滤波器最基本的方法。在本次实验设计中,采用的方法也是窗函数法,接下来我们主要讨论用窗函数法设计FIR滤波器。 窗函数设计的基本思想是要选择一种合适的理想频率选择性滤波器,然后将它的冲击响应截短以获得一个具有线性相位和因果的FIR滤波器。因此这种方法的关键是选取某种好的窗函数和一种理想滤波器,在滤波器性能参数给定的情况下,应尽量选择主瓣尽可能窄,边瓣峰值进可能小的窗函数。在了解了FIR滤波器的原理及设计方法后,基于DSP Builder设计FIR滤波器的第一项工作就是滤波器参数的选取。这一工作是借助于Matlab提供的设计滤波器专用的工具箱FDAtool来完成的。在启动FDAtool前先确定所要设计的FIR滤波器的要求,在这里,我们将用凯撒窗设计一个16阶的低通滤波器,截止频率为10800Hz,采样频率为50000HZ。四、实验步骤: 本实验的操作步骤如下:1.在Matlab的命令窗口中输入fdatool命令,启动fdatool,启动后的fdatool界面如图4所示。2. 如图4示设置参数:在滤波器类型选择低通,设计方法选择凯撒窗函数法,滤波器阶数为15,采样频率为50000hz,截止频率为10800hz。3. 点击图4中fdatool界面下方的Design Filter按钮,弹出如图5所示的界面,点击菜单栏中的Analysis-Filter Coefficients,调出系数Numerator,可看出系数是一系列的小数。再点击图5中左侧的按钮,设置量化参数将弹出如图6的图5 设置完参数后的fdatool界面的界面。在图中Filter arithmetic选项中选择Fixed-point在弹出的界面中分别设置Coefficients和Input/Output选项的参数,filter precision设为specify all。对Coefficients,设置Numerator word length为9,Numerator frac.length为8,对Input/Output选项,设置Input word length为9,Input fraction length为 8,Output word length为17,Output fraction length为16。最后点击Apply按钮,再点击菜单File-Export将系数导出到Workspace空间,在matlab命令窗口输入命令Num*(28),导出的优化后系数如下:4.点击桌面上的Matlab图标,进入Matlab主界面,并将工作目录设为Matlab安装目录下的work文件夹,如图7所示。5.点击菜单栏中的File-New-Model,新建一个模型,在Matlab命令窗口中输入simulink命令,调出simulink工具栏,如图8所示。6.在新建的模型中按照图9所示搭建模型,可以看出,该模型与正弦发生器模型相似,不同之处在于Output模块被替换为Altbus模块。7.按住鼠标左键,框住全部的模块及连接,单击鼠标右键,选择Create Subsystem,建立输入子系统。单击子系统下的文本命名为Input1_Subsystem图9 Fir输入子系统模型8.按照图10中的形式添加模块至模型,这里有一个小技巧,按住CTRL+R可以对模块进行旋转,以便于连接。9.按照步骤7的方式,创建Fir子系统。即按住鼠标左键,框住步骤8中搭建的模块和连接,单击鼠标右键,选择Create Subsystem,单击子系统下的文本命名为Fir_SubSystem。10.按照图11中的形式搭建模型,其中左边两个子系统相同,可以复制步骤7建立的子系统,命名为Input2_Subsystem,四个Output模块来自simulink工具栏中的Altera DSP Builder中的IO&Bus库,Scope模块来自simulink工具栏中Simulink下的Sinks库。 11.对搭建好的模型进行参数设置。双击Input1子系统,对其中的模块参数进行设置。其中Increment Decrement模块的Bus Type设为Signed Integer,number of bits设为8,在Specify Clock选项前打勾,并在下面的对话框中输入Clock;LUT模块Address Width 设为8,Data Type设为Signed Integer,number of bits 设为8,MATLAB Array设为127*sin(2*(16000/50000)*pi*(1:28),Step模块Step Time设为2e-4,Initial value设为0,Final value设为1,Sample time 设为1/50000。Altbus模块Bus Type设为Signed Integer,number of bits设为9。对Input2子系统也采用类似方式进行设置,其余模块参数都相同,不同之处在于LUT模块的MATLAB Array设为127*sin(2*(8000/50000)*pi*(1:28)。12.四个Output模块中,与Fir模块相连的两个Output模块的Bus Type设为Signed Integer,number of bits设为17,与Input模块相连的两个Output模块的Bus Type设为Signed Integer,number of bits设为9。13.双击simulink工具栏中的Altera DSP Builder中的AltLab库,找到其中的Clock、Signal Compiler和TestBenchOn模块,选中它们并按住鼠标左键将其拖到新建的模型文件中,双击Clock模块,打开模块参数设置界面,Real-World Clock Period设为20,Period Units设为ns,Simulink Sample Time 设为1/50000,Reset Type设为Active Low。执行File-Save 保存文件,将其命名为fir.mdl。 图11 Fir模型 14.执行File-Configuration Parameters,将solver设为discrete,Type设为Fixed-step,Stop Time设为0.005。 15.点击菜单栏中的黑色小三角,启动simulation,simulation结束后,双击Scope模块,打开波形观察界面,在波形上点击鼠标右键,选择Autoscale,即可观察simulation后的波形。 16.点击TestBenchOn模块,打开模块参数界面,在Advanced选项卡中,点选Lauch GUI,并依次点击Generate HDL,Run Simulink和Run Modelsim,启动RTL级仿真。 17.随后显示的界面即为Modelsim RTL级仿真的波形图。选中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;最后,在波形界面单击鼠标右键,选择Zoom Full,即可观察到RTL级仿真波形。RTL级仿真波形18.点击Signal Compiler模块,打开参数设置页面,点击compile,结束后,关闭该页面。19. 点击桌面上的 Quartus 图标,执行File-New Project Wizard,创建新的工程,将工程路径设置成模型文件所在路径,对project命名为fir。20、点击next,将.tcl和.vhd文件添加至工程中,点击next,在器件family中选择Cyclone ,选择下拉菜单中的EP2C35F672C6.,点击Finish。21.点击菜单栏中的紫色小三角,对创建的文件进行编译。22.编译成功后执行File-New-Vector Waveform File,点击【OK】确认。23.执行Edit-Insert-Time Node or Bus,在弹出的对话框中选择Node Finder,再点击List,从左边弹出的管脚名中选择Clock,aclr,Input1_Subsystem_Input、Input2_Subsystem_Input、Output、Output1、Output2、Output3添加到右边,点击【OK】确认。 24.选中aclr信号,选择左边工具栏的图标,选中Input1和Input2信号,同样设为。选中Clock信号,点击,对弹出的对话框点击【OK】确认。保存该文件,将其命名为fir。 25. 执行Assignmets-Settings,选择Simulator Settings,Simulation mode选为Functional,在右边的对话框中将保存的波形文件添加到Simulation Input中,点击【OK】确认。执行菜单栏的Processing-Generate Functional Simulation Netlists进行功能仿真。26.执行菜单栏Assignmets-Settings,选择Simulator Settings,Simulation mode选为Timing,在右边的对话框中将保存的波形文件添加到Simulation Input中,点击【OK】确认。点击工具栏中的图标,对工程进行时序仿真。仿真完成后,选中Output信号,单击鼠标右键,选择Display Format中的Analog Waveform,若弹出对话框询问是否覆盖原文件,选择Yes。再次选中Output信号,单击鼠标右键,选择Display Format中的Analog Waveform,将Display Style设为Step,Display Height设为4,点击【OK】确认。同样的方法对Output1信号、Output2信号和Output3信号进行设置即可观察到时序仿真波形。时序仿真波形 27.执行Assignmets-Assignment Editor,将Category设为Pin,按照实验箱中的用户指南28页中的图4-5所示将aclr、Input1_SubSystem_Input、Input2_SubSystem_Input分配给开关,按照37页图4-8将Clock分配为PIN_N2管脚,按照52页图4-10将Output总管脚及其如Output0Output8的分管脚进行分配,同样的方法对Output1总管脚及其如Output10Output18的分管脚、Output2总管脚及其如Output20Output28的分管脚和Output3总管脚及其如Output30Output38的分管脚进行分配,并保存。 28.执行Tools-SignalTap Logic Analyzer,在Data窗口中的空白处双击,在弹出的对话框中将Fiter设为all®isters:post fittings,点击List,将Output、Output1、Output2和O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论