FIR滤波器的设计..doc
文本预览下载声明
FIR滤波器
一、实验仪器:PC机一台,JQ-NIOS-2C35实验箱一台及辅助软件(DSP Builder、Matlab/Simulink、Quartus II、Modelsim)。
二、实验目的:
1.初步了解JQ-NIOS-2C35实验箱的基本结构;
2.学习和熟悉基于DSP Builder开发数字信号处理实验的流程。
3.学习和熟悉DSP Builder层次化的设计方法。
三、实验原理:
1.FIR滤波器基础
FIR滤波器具有直接型、级联型和频率抽样型三种基本结构[14]。由于在DSP Builder模型设计中采用了直接型结构,我们只对直接型结构进行讨论。这种结构也被称为抽头延迟线结构,或横向滤波器结构[15][16]。图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为偶数)
3.FIR滤波器的设计方法
FIR滤波器的设计方法主要有窗函数法、频率抽样法和切比雪夫逼近法三种。其中窗函数法是设计FIR滤波器最基本的方法。在本次实验设计中,采用的方法也是窗函数法,接下来我们主要讨论用窗函数法设计FIR滤波器。
窗函数设计的基本思想是要选择一种合适的理想频率选择性滤波器,然后将它的冲击响应截短以获得一个具有线性相位和因果的FIR滤波器。因此这种方法的关键是选取某种好的窗函数和一种理想滤波器,在滤波器性能参数给定的情况下,应尽量选择主瓣尽可能窄,边瓣峰值进可能小的窗函数。
在了解了FIR滤波器的原理及设计方法后,基于DSP Builder设计FIR滤波器的第一项工作就是滤波器参数的选取。这一工作是借助于Matlab提供的设计滤波器专用的工具箱——FDAtool来完成的。在启动FDAtool前先确定所要设计的FIR滤波器的要求,在这里,我们将用凯撒窗设计一个16阶的低通滤波器,截止频率为10800Hz,采样频率为50000HZ。
四、实验步骤:
Matlab安装目录下的work文件夹File-New-Model Matlab -simulink File-Save 命名为FSK Altera DSP Builder-Arithmetic Bus Type设为Signed Integer,number of bits设为8,在Specify Clock选项前打勾,并在下面的对话框中输入Clock Address Width 设为8,Data Type设为Signed Integer,number of bits 设为8,MATLAB Array设为127*sin(2*(16000/50000)*pi*(1:2^8)) Altera DSP Builder-Arithmeti Product Altera DSP Builder-IOBus Altbus Bus Type设为Signed Integer,number of bits设为9 Step Time设为2e-4,Initial value设为0,Final value设为1,Sample time 设为1/50000 按住鼠标左键,框住全部的模块及连接,单击鼠标右键,选择Create Subsystem,建立输入子系统。单击子系统下的文本命名为Input1_Subsystem
复制上面所建立的子模块,命名为Input2_Subsystem。不同的是LUT模块的MATLAB Array设为127*sin(2*(8000/50000)*pi*(1:2^8))。
再按中的形式添加模块至模型,这里有一个小技巧,按住CTRL+R可以对模块进行旋转,以便于连接。Fir_SubSystem。
再按照下表,找到相应模块并设置参数:
位置 对象 参数 Altera DSP Builder-IOBus Output Bus Type设为Signed Integer,num
显示全部