基于DSP的FIR滤波器设计课程设计报告_第1页
基于DSP的FIR滤波器设计课程设计报告_第2页
基于DSP的FIR滤波器设计课程设计报告_第3页
基于DSP的FIR滤波器设计课程设计报告_第4页
基于DSP的FIR滤波器设计课程设计报告_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1、引言 - 2 -1.1 研究背景 - 3 -1.2 研究意义 - 3 -1.3 研究目的 - 4 -2、DSP及其开发环境 -5 -2.1开发平台一DSP系统-5 -2.1.1 DSP系统的构成 -5-2.1.2 DSP系统的优缺点及设计流程 -5-2.1.3 DSP系统硬件电路图 -7-2.2 CCS 开发环境 -8-2.2.1 CCS集成开发环境 -9-3 FIR 滤波器的设计 - 10 -3.1 FIR 滤波器设计原理 - 10 -3.1.1 FIR 滤波器的基本结构 - 10 -3.1.2 FIR 滤波器的特点 - 14 -3.2 FIR 滤波器具体设计方案 - 15 -3.2

2、.1 窗函数法 - 15 -3.2.2 频率抽样法 - 17 -3.3 FIR 滤波器的 MATLAB实现 -18-3.3.1 带通滤波器的 MATLAB实现 -19 -3.3.2 低通滤波器的 MATLAB实现-21 -4、FIR滤波器的 DSP实现 -22 -4.1 FFT/IFFT 算法程序及应用 -22-4.1.1 FFT设计方法 -22-4.1.2 FFT算法的实现 -24-4.1.3 FFT算法的仿真和测试结果 -26-4.2 FIR 滤波器的 DSP的实现 -27 -4.3 总结体会 - 32 -附录 A MATLAB程序-34 -附录B FFT的DSP实现程序 -2 -附录C

3、FIR 的DSO实现程序 -11 - 3 -1、引言20世纪60年代起由于计算机技术、集成工艺和材料工业的发展, 滤波器发展上了一个新台阶,并且朝着低功耗、高精度、小体积、多 功能、稳定可靠和价廉方向努力,其中小体积、多功能、高精度、稳 定可靠成为70年代以后的主攻方向。导致RC有源滤波器、数字滤波 器、开关电容滤波器和电荷转移器等各种滤波器的飞速发展,到 70 年代后期, 上述几种滤波器的单片集成已被研制出来并得到应用。按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、 无限长冲击响应(IIR )与有限长冲击响应(FIR)等等。其中,线性 时不变的数字滤波器是最基本的类型。FIR

4、(Finite Impulse Response)滤波器:有限长单位冲激响应滤 波器,又称为非递归型滤波器, 是数字信号处理系统中最基本的元件, 它可以在保证任意幅频特性的同时具有严格的线性相频特性, 同时其 单位抽样响应是有限长的,因而滤波器是稳定的系统。目前FIR滤波器的实现方法大致可分为三种:利用单片通用数字 滤波器集成电路、DSI器件和可编程逻辑器件实现。单片通用数字滤 波器使用方便, 但由于字长和阶数的规格较少, 不能完全满足实际需 要,使用以串行运算为主导的通用DS芯片实现要简单,是一种实时、 快速、特别适合于实现各种数字信号处理运算的微处理器, 借助于通 用数字计算机按滤波器的设

5、计算法编出程序进行数字滤波计算。 由于 它具有丰富的硬件资源、 改进的哈佛结构、 高速数据处理能力和强大 的指令系统而在通信、航空、航天、雷达、工业控制、网络及家用电 器等各个领域得到广泛应用。1.1 研究背景数字信号处理就是用数字信号处理器(DSP )来实现各种算法,由 于具有精度高、灵活性强等优点,已广泛应用在数字图像处理、数字 通信、数字音响、声纳、雷达等领域。数字滤波技术又是进行数字信 号处理的最基本手段之一, 它是对数字输人信号进行运算, 产数字输 出信号,以改善信号品质,提取有用信息,或者把组合在一起的多个 信号分量分离开来为目的。在信号处理领域中, 对于信号处理的实时性、 快速性

6、的要求越来 越高,因此在许多信息处理过程中, 如对信号的过滤、 检测、预测等, 都要广泛地用到滤波器。其中数字滤波器具有稳定性高、精度高、设 计灵活、 实现方便等许多突出的优点, 避免了模拟滤波器所无法克服 的电压漂移、温度漂移和噪声等问题,因而随着数字技术的发展,用 数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。 而 有限冲激响应 (FIR) 滤波器能在设计任意幅频特性的同时保证严格的 线性相位特性,在示否音、数据传输中应用非常广泛 3 。1.2 研究意义用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分 方便地改变滤波器的特性。 因此,我们有必要对滤波器的设计方法进 行研

7、究,理解其工作原理,优化设计方法,设计开发稳定性好的滤波 器系统。我们将通过DSP设计平台,实现较为重要的FIR和自适应滤 波器系统。 从而通过本课题的研究, 掌握滤波器的设计技术, 为通信、 信号处理等领域实用化数字滤波器设计提供技术准备。本科题的研究,将为今后设计以 DSP为核心部件的嵌入式系统集成提供技术准 备,这不仅具有重要的理论意义,同时还具有重要的实际意义。1.3研究目的本次课题的主要任务,就是应用DS集成开发环境一CC碉试汇编 程序,用TMS320C54C来实现了 FIR数字滤波。具体内容有:(1) 研究数字滤波器的基本理论和实现方法, 从原理上理解和分 析数字滤波器,并通过对数

8、字滤波器的结构和设计方法的学习, 为设 计数字滤波器奠定理论基础。(2) 研究FIR数字滤波器的设计方法,及如何用滤波器设计工具 设计各种类型的数字滤波器,并进行仿真和分析。(3) 对数字滤波器的DSP实现进行研究。具体操作要求:(1) 、用窗函数法实现FIR滤波器,通过调用四种窗口函数,截 取不同的带通与低通滤波原型,满足以下性能要求:带通滤波器:下阻带边缘:S =0.2二,A =60dB ;下通带边缘:=0.35二,Rp =1dB ;上通带边缘: Vp =0.65二,Rp =1dB ;上阻带边缘: ,2s =0.8二,人=60dB。低通滤波器: =0.2 二,Rp =0.25dB ;0.,

9、A50dB(2) 、用时间抽取法实现FFT/IFFT算法,通过此算法,对信号进 行频域分析、频域处理;(3) 、研究DSP勺结构特点,了解TI公司的TMS3205410 DS器 件,掌握DSP系统的构成及软硬件设计方法和 CCS软件的调试方法; 并以TI公司的TMS32O5410DSP为核心处理器,在 DSK上实现FIR滤 波器系统。2、DSP及其开发环境2.1开发平台一DSP系统2.1.1 DSP系统的构成一个典型的DSP系统如图2.1示。图2.1典型的DSP系统图2.1是一个用DSP做信号处理的典型框图。由于DSP是用来对 数字信号进行处理的,所以首先必须将输入的模拟信号变换为数字信 号。

10、于是先对输入模拟信号进行调整, 输出的模拟信号经过A/D变换 后变成DSP可以处理的数字信号,DSP艮据实际需要对其进行相应的 处理,如FFT卷积等;处理得到的结果仍然是数字信号,可以直接 通过相应通信接口将它传输出去,或者对它进行D/A变换将其转换为 模拟采样值,最后再经过内插和平滑滤波就得到了连续的模拟波形模 拟信号。当然,图中的有些环节并不是必需的。如 A/D转换,如果输 入的是数字信号,就可以直接交给 DSPS行运算。2.1.2 DSP系统的优缺点及设计流程-6 -由于数字信号处理系统是以数字信号处理理论为基础, 所以具有 数字信号处理的全部优点:(1) 接口方便DSP 系统与其它以数

11、字技术为基础的系统或设备都是相互兼容 的,比模拟系统与这些系统接口要容易的多。(2) 编程方便DSP系统中的可编程 DSP芯片可以使设计人员在开发过程中灵活方便的进行修改和升级,可以将 C语言与汇编语言结合使用。(3) 具有高速性DSP系统的运行较高,最新的DSP芯片运行速度高达lOGMIPS 上。(4) 稳定性好DSP系统以数字处理为基础,受周围环境,如噪声、温度等的影响小、可靠性高;(5) 精度高例如 16位数字系统可以达到 1O-5 的精度;(6) 可重复性好模拟系统的性能受元件参数性能变化影响大, 而数字系统基本不 受影响,更便于测试、调试和大规模生产。(7) 集成方便DSP系统中的数

12、字部件有高度的规范性,便于大规模生产。当然DSP也存在一定的缺点。例如,对于一些简单的信号处理任务,如与模拟交换线的电话接口,若采用 DSP则使成本增加。另外,DSP系统中的高速时钟通常在几十兆赫, 可能带来高频干扰和电磁泄 漏等问题, 而且DSP的功率消耗在系统中也是较大的。此外, DSP 技术发展得很快,数学知识要求多,开发和调试工具还很不完善。虽 然DSP系统还存在一些缺点,但是随着近两年来 DSP技术突飞猛进 的发展,成本的下降,很多问题都得到了缓解。其突出的优点已经使 其在通信、语音、图像、雷达、生物医学、工业控制、仪器仪表等许 多领域得到越来越广泛的应用。一般来说DSP的设计过程应

13、遵循一定的设计流程,如图 2.2示。DSP应用定义系统性能指标选择DSP芯片软件编程硬件设计软件调试硬件调试系统集成系统测试和调试图2.2 DSP基本设计流程2.1.3 DSP系统硬件电路图根据使用DS芯片的相关原则,以及芯片手册具体决定未用端子是接上拉电阻还是悬空。可以得出 DS数字滤波器的整体硬件电路连-10 -线图,如图2.3所示MQDOUTADIN丸VddpoutDVddlFSAGND-3CLKDGNP7LV5MSAINcs-AVddSDJiDVddSDOUTA GNUFSDGXDSCLKTLV1570蒂号输人I4J伽FC5=C3 r uT3IVCEMRwoPFIRSTGNDproNC

14、RESET-NCNC1GNDNCLEN-IFBSE1JN1OUTIDAOUTNCIftESET-NCNC2GNDNC2EN-2SENSE2JN2DUT2JN2UUTNCNCNCNCTPS73HD3IHXFEDX0BDX1BDftOBDR1BFSX0哄XBFSRflHFSR】BCLKXOBCLKX1.BCLKROBCLKR1R-W-XIXlfTKINEMU3 OFF-CWdEMUdLACK-DV4dDm-INT2-INTI-INTO-MPMC-READYHOLD-GNDVC54O2Tl 星JF 20pT 匚二1 LOMU: 1 cJH844.7K*-4K t4 K4.TK:上-65r !=4-K

15、h3219304/xh3=图2.3 DSP系统硬件电路图2.2 CCS开发环境CCS全称是Code ComposerStudio它提供了基本的代码生成工具,具有一定的调试、分析能力,在CCST的程序开发过程如图2.4所示。图2.4程序开发过程CCS 包括:1、CCS代码生成工具2、CCS集成开发环境IDE3、DSP/BIOS插件程序和API RTDX插件,主机接口和 API等。下面将着重介绍前两项。2.2.1 CCS集成开发环境调试DSP目标程序,它主要由几个主要的窗口组成: 工程组显示 窗口、程序内容显示窗口、编辑信息提示窗口和主要工具栏。另外, 在编辑过程中 还可以显示诸如存储器观察窗口、

16、变量监视框、图形 显示框等调试界面,他们为程序编写调试提供多种手段为软件开发提 供了极大的方便。图2.5就是基本编辑界面。fr眄 Kvbrwii)/CTir而rs iC芝比严时!*. Lildt .嗣讥些ojzt池tfilbfSL lads lindw HelpH B即宵一莎G:.IT-斗二一也童 Til*E*i LfWL _J M7EDJ5 LQ mmzpi+ _j Lwinife111J Lj II h mt HI S-mzji* r A誣曲囱 lln (Jfcar(i=L ; &ngth:i+)Ins i de?_i Ji 匸 li t|ij4j-l_ re: 1 -* (I naii

17、t +1 ) _j I KB a input. I n+ i * 1 in洞二仃孑牛* 暈(F左瘗桓整嫩F- J -1- :-:创 JiiI2J3242 fln=ide_022 2昭024胡;0D24:-42700Z46 :-11S5902.;zc-i024Cl-56 24E:2殆OZFC-7G02521Cl如;-ICE.D2Es2L7U2EEt-130O25A;ICOD25Cl-l-=2O25E :167O26Cr-160262 s139JEM ;-If J|f申K1丨可AJJi 】1 用E 口口仟F OscJ+匕弓0匕_1npmt = OxIO4Gpsin - uaJcncii p_edi

18、3 = lknewn idestit nipHp i j ua:nc:yTn xdent 1 2 er tr-nipEiia m unkri-iflji idiPi t:e=np_Ei n - “alm定f zder图2.5 CCS基本编辑界面在利用CCS编程的过程中,不可避免的要遇到如何将程序变量分配到内存中去的问题。因为,即使 DSP的存储空间比较大,速度也十分快,但是如果内存空间分配不当的话,还是会出现空间不够行速 度下降,甚至程序跑飞的情况,这样会时程序调试起来十分麻烦。所以,一定要分配好内存空间CCS提供了两种分配空间的方法:利用Cmdr文件或rep文件分配空间,其中Cmdr文件是纯

19、文本格式的描述 性的空间分配方式 ,它的优点是程序员对空间的可控制性较高,可以 将不同的块分配到指定的地址,并规定长度。但它对于初学者来说, 要求对C5410的内存空间的分配有较清楚的认识,否则容易将数据分 配到不该分配的地方,引起程序运行的冲突,甚至程序跑飞。所以, 一般在编程过程中, 使用 rep 文件对程序进行内存分 rep 文件全称是 reeipe 文件,这是一种图形化界面的内存分配文件。对于一个新生 成的工程组rep文件的生成方法是:选择CCS菜单上的Tools项,选 择 linker eonfiguration 项,将分配方式改为 use the visual linker 之后直

20、接编译,编译信息提示窗口中会显示出错信息,提示找不到 rep文件,双击提示CCS会自动弹出rep生成向导,按照要求选择rep 模板,就会生成这个工程对应的 rep 文件,双击生成的 rep 文件,通 过 visual linker 连接器可以打开这个文件。当程序中新增加了变量后,在 rep 文件中会出现 Not yet plaeed 项,只要将其下的文件夹,根据类型拖动到 run_view 下的相应的数 据存储器或程序存储器即可。 还可以选择用何种类型的存储器空间装 载,通过观察存储空间以使用的状况自行分配空间,所以十分灵活, 并且不会出现空间重叠的现象,避免了程序跑飞。3 FIR 滤波器的设

21、计3.1 FIR 滤波器设计原理3.1.1 FIR 滤波器的基本结构FIR滤波器的实现结构有以下几种形式(1) 直接型结构该种结构实现时需N个乘法器、N-1个延迟器和N-1个加法器结构图如下:Zrl) rA图3.1直接型结构图旅 N - 1)* yd13(2) 级联型结构FIR系统函数H(z)是z1的N-1次多项式,其分解为实系数二阶因子的乘积形式为:NcH(z)二丨丨(B Ok+ B 1kZ-1+ B 2kZ-2)k T根据上式就可画出级联结构如下图。其中Nc为N/2的最大整数。该结构即是把H(z)的共轭零点或两个单个零点组成基本二阶节,H(z)为基本二阶因子的子系统函数积。图3.2级联型结

22、构图从图3.2中可看出,每个二阶因子用直接型实现,每一节控制一 对零点,便于传输零点的控制。但系数B 1k的个数比h(n)的个数多, 其乘法次数比直接型多。(3) 线性相位型结构线性相位特性是指滤波器对不同频率的正弦波所产生的相移和正弦波的频率成直线关系。在滤波器通带内的信号通过滤波器后,除了由相频特性的斜率决定的延迟外,可以不失真地保留通带以内的全 部信号。线性相位的因果的FIR系统的单位取样响应具有如下特性h(n)二 士 h(N-1-n)当N为偶数时,式变为也-iH(z)=、 h(n)z -n+z-(N-1-n)2 n 0当N为奇数时,此式为N厂1ni 彳 n _ 1-n -(N-1-n)

23、N 一 1、-()H(z)=-h( n)z +z +h( )z 2n =02由上面两个式子可知:实现直接形式的结构网络只需要N/2(N为偶数)或(N十1)/2次乘法(N为奇数),利用h(n)的对称比直接卷积形式少用一半的乘法器图3.3 N为偶数,线性相位结构- 32图3.4 N为奇数,线性相位结构貞咛)(4)频率取样结构系统函数H(z)在单位圆上作N等分取样的值得到h(n)的离散傅立叶变换值H(k):k決)-j2nknH(Q=H(Wn)=|H(k)le 八 h(k) 0 Nnz0根据内插公式,得N 二H(z)二丄(1-z-N) Nk=oH(k)-Wn z上式即为频率取样结构的系统函数其中,W

24、Nk单位圆上的频率取样值。可见,该系统是由一个子N -1H (k)和一个子IIR系统级联组成的。心 1 Wn zeFk,H(k)为FIR 系统(1-z -N)HD图3.5频率取样结构图数字滤波是将输入的信号序列,按规定的算法进行处理,从而得 到所期望的输出序列。一个线性位移不变系统的输出序列y(n)和输入 x(n)之间的关系,应满足常系数线性差分方程,见公式 3.1,N AMy n bi x n - i J ai y n - in _ 0(3.1)i z0i 二其中,x(n)为输入序列,y(n)为输出序列,ak和bk为滤波器系数,N 是滤波器的阶数。若上式中所有的bk均为零,则有FIR滤波器的

25、差分方程为:N Jy(n)二 akx(n - k)(3.2)k=0对上式进行Z变换得到FIR滤波器的传递函数为:Y z NH zbkZ(3.3)X(z)7因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定 的。另外,若对h(n)提出一些约束条件,那么可以很容易地使 H(z) 具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是要决定一个转移函数H(z),使它的频率响应满足给定 的要求。这里所说的要求,除了通带频率p、阻带频率及两个带上的最大和最小衰减和;:s外,很重要的一条是保证H(z)具有线性相 位。3.1.2 FIR 滤波器的特点数字滤波器的功能,就是把输入

26、序列通过一定的运算变换成输出 序列。可以用两种方法来实现数字滤波器:一种方法是采用通用计算机,利用计算机的存储器、运算器和控制器把滤波器所要完成的运算编成程序通过计算机来执行,也就是采用计算机软件来实现;另一种 方法是设计专用的数字硬件(通常称之为数字信号处理器)。有限长单位冲激响应(FIR)滤波器有以下特点:(1) 系统的单位冲激响应h(n)在有限个n值处不为零(2) 系统函数H(z)在|z|0处收敛,极点全部在z = 0处(因 果系统)(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有 些结构中(例如频率抽样结构)也包含有反馈的递归部分。设FIR滤波器的单位冲激响应h (n)为一个

27、N点序列,0 w n N 1,则滤波器的系统函数为 H(z)二刀h(n)*z -n。就是说,它有(N 1)阶极点在z = 0处,有(N 1)个零点位于有限z平面的任 何位置。3.2 FIR滤波器具体设计方案FIR滤波器的设计任务就是给定要求的频率特性,按一定的最佳 逼近准则,选取滤波器转移函数H(z)中的各个参数h(n),即滤波器的 单位抽样响应及阶数N,使得频率特性满足设计要求。通常FIR滤波器 的设计方法主要有三种:窗函数法、频率抽样法和切比雪夫等波纹逼 近法。其中窗函数法可以应用比较现成的窗函数,因而设计简单,在 指标要求不高的场合使用方便灵活。下面我们来简单介绍一下这三种 设计方法。3

28、.2.1 窗函数法窗函数法也称为傅立叶级数法。理想的数字滤波器频率特性H(ejw)是无法实现的,FIR的设计就是要寻找一个可以得到的频率特N _1性H(ejw)h(n)ewn来逼近H(ejw),这相当于用一个可实现的单位脉n =0冲响应h(n)去逼近一个理想单位脉冲响应hd(n)。hd (n)可由理想频率 特性Hd(ejw)通过傅氏反变换得到,hd( n) 1Hd(ejw)ejwd(3.4)2兀T一般来说,这样得到的理想单位脉冲响应序列hd (n)是个无限长序列,因而是非因果的。设有一个截止频率为C的理想线性相位低通,延时为T,其频率特性是:Hd ejw jwa e(3.5)得到:hd (n)

29、=屯n : :(3.6)兀(n _这是一个以n = T为中心偶对称的无限长非因果序列,要想用一个有限长的因果序列去逼近它,最简单的方法是截取n从0到N-1的一段来表示它,即 h(n )=hd( n)(0 岂 nN-1);其他 N: h(n)=0同时,为了保证线性相位,还要满足偶对称 h( n)=h(N-1-n)。这 就好像通过一个窗口观看到的一段 hd(n),因此h(n)就表示成hd(n)和 一个窗口函数的乘积,这样对h(n)的求解就变为h(n) = hd(n)*wn,这 里的Wn就称为窗口函数,既然一个频域上的标准的矩形窗口对应于 时域是一个无限长的序列,那么在时域上截取一段势必造成频域的矩

30、形窗口的失真。结果就是截取出的信号也相应失真, 为了补偿这种失真,只有改变原来窗口的形状,修正经过时域截取后的窗口失真。窗函数设计方法的基本步骤是:(1) 把 Hd ejw 展成 FS,得 hd(n);(2) 对hd(n)自然截短到所需的长度,如2M+1(3) 将截短后的hd (n)右移M个米样间隔,得h(n);(4) 将h(n)乘以合适的窗口,即得所要滤波器的冲击响应,窗 函数以n=M对称。利用所求得的单位抽样响应,即可用硬件构成滤波 器的转移函数H(z),也可利用h(n)在计算机上用软件来实现滤波。3.2.2频率抽样法窗函数法是从时域出发,用窗函数截取理想的 hd n得到h(n),以 此有

31、限长的h(n)近似hd n,这样得到的频率响应H逼近于理想的频响Hd ejw。频率抽样法是从频率出发, 将给定的理想频响Hd ejw加 以等间隔抽样。Hd(ejw )2建=Hd (k )(3.7)(0=N然后以此Hd k作为FIR滤波器的频率响应抽样值H(k),再根据 DFT(离散付氏变换)定义由频域这N个抽样值来唯一确定一个有限长 序列h(n),同样也可以算出FIR滤波器的系统函数H(z)及频率响应 H ef ,可以推出频率响应H ej是频率抽样值H(k)与线性相位因子 e”N4/2及如下内插函数s(3 , k)的线性组合。N4 斗辿 sinS(3, k)二丄 e 卞 2(3.8)Nsink

32、i2 N所以,在各频率取样点上,实际滤波器的频响是严格地和所要求的滤波器的频响一致的, 逼近误差为零, 但在抽样点之间的频响是各 取样点的内插函数的延伸叠加而成, 有一定的逼近误差, 误差大小取 决于频率响应曲线的圆滑程度和抽样点的密度 为了减少误差 就要 增加抽样点数目即增大采样频率, 抽样点之间的理想频率特性变化越 陡,则逼近误差越大, 在理想频率特性的不连续点附近会产生肩峰和 纹波。 频率抽样法的优点是可以直接在频域设计, 适于利用最优化方 法,而且这种方法特别适用于窄带选频滤波器, 但频率抽样法的抽 样频率只能是2n / N的整数倍或2n / N的整数倍加上n / N不能保 证截止频率

33、3 c的准确取值,要实现精确的3 C就必须取N大,相应的 计算量也大。此外,它的阻带最大衰减一般,也只有30-50dB左右,很 难满足频域特性要求较高的场合。3.3 FIR滤波器的MATLA实现MATLA信号处理工具箱提供了基于窗函数法的 FIR滤波器的设计 函数firl。firl是采用经典窗函数法设计线性相位FIR数字滤波器, 且具有标准低通、带通、高通和带阻等类型。语法格式:B=fir1 (n, Wn )B=fir1 (n, Wn, f type )B=fir1 (n, Wn ,window)B=fir1 (n, Wn, f type , window)其中,n为FIR滤波器的阶数,对于高

34、通、带阻滤波器n取偶数。Wn 为滤波器截止频率,取值范围为01。对于带通、带阻滤波器,Wn = Wi, W2,且Wi W2。f type 为滤波器类型。缺省时为低通或 带通滤波器,为 high 时是高通滤波器,为 stop 时是带阻滤波 器。Window为窗函数,列向量,其长度为n+1;缺省时,自动取hamming 窗。输出参数B为FIR滤波器系数向量,长度为n+1。331带通滤波器的MATLA实现使用矩形窗、Henning窗、Hammin窗、布莱克曼窗四种窗对带通原型进行截取。带通滤波器的指标性能给出如下:下阻带边缘:1s = 0.2二,A = 60dB下通带边缘:-1p =0.35二,Rp

35、 =1dB上通带边缘: dp =065二,Rp =1dB上阻带边缘: vs =0&:,人=60dB设计结果如3.8、3.9、3.10、3.11所示:一叫1000o500.1020 30.405060 70.30.9Normalized Frequency (xn rad/sample)10-1000-20000.10 20 3 40.50 60.70.80.91Normalized Freauencv rad/samnle?i图3.8矩形窗设计-30000.10.20.30.405060 70 80 91IMormalized Frequency (xjl rad/sample)50r0050

36、L nu_50-0 10.20.30.405060.70.809o101Qo o藍dmsalnMdInio llj2oJl:l图3.9hanning窗设计0.10.20.30405 OB 0.70.8091Normalized Frequency (x rad/sample)005n0 10.20.30.40.50 60.70.80.91Normalized Frequency 仪調 rad/sample)QnoonoOT图3.10 hammi ng窗设计5000.10.20.30.405060.70 80.91图3.11布莱克曼窗设计3.3.2 低通滤波器的MATLA实现用窗函数法设计FIR

37、低通滤波器,其技术指标如下:fs = 250 kHz, fp =20kHz, fs = 30 kHz,通带最大衰减 A,=3dB,阻 带最小衰减A =50dB。将其换算成数字域的性能指标如下:通带截止频率=0.16二,通带最大衰减Ap=3dB ;阻带截止频率 貯0.23&,阻带最小衰减As=50dB。根据窗函数法的设计原则,由表3.1可知,海明窗(hamming可 提供大于50dB勺衰减。要求滤波器的过渡带为:七血s=0.24叮0.16也=0.08二由表3.1可知,利用海明窗设计的滤波器的过渡带 皿=8二/N,所 以低通滤波器单位脉冲响应的长度为:N二卫 8100 ,取N=101。匸汽 0.0

38、8二通过FIR1函数设计出滤波器的单位冲激响应序列, 用它来作为在mp)心1E芝下一章中DSPS计程序中的系数。其设计结果如图3.12示500-50-1001500.10.20.30.40.5060708091Normalized Frequency (x-n rad/sample)00,10 20.30.40.50.60.7080.91Normalized Frequency rad/sample)u DOO1060-no10200-2600(a)幅度响应(b)相位响应图3.12 hammi ng窗滤波器的幅度响应与相位响应4、FIR滤波器的DSP实现4.1 FFT/IFFT算法程序及应用4

39、.1.1 FFT设计方法FFT是 DFT勺一个快速算法,是为减少DFT计算次数的一种快速有效的算法。其突出的优点在于能快速高效地和比较精确地完成DFT勺计算。利用一定的运算结构变换,将 N点的DFT转化成多个小的点数DFT的运算,再利用WNkn的周期性和对称性,就能大大减少计算量。DFT分解法基本上分为两类:一类是将时间序列x(n) (n为时间标号)进行逐次分解,由此得到的FFT算法称为按时间抽取 (Decimation-in-time)算法,另一类是将傅立叶变换序列X(k)(k为频率标号)进行分解,叫做按频率抽取(Decimation-in-frequency)算法。对这两种算法,库利一图基

40、和桑德-图基进行了理论的推导,故 又称为库利一图基(Cooley Tu key)算法和桑德一图基(Bande Tu key)算法。DIT FFT算法是在时域内将每一级输入序列依次按奇/偶分 成2个短序列进行计算,而DIF FFT算法是在频域内将每一级输入序列 依次按奇/偶分成2个短序列进行计算。两者的区别是旋转因子出现的 位置不同,但算法是一样的。对每一算法,按基本的蝶形运算的构成 又可分为基2、基4、基8以及任意因子等的FFT算法。N点FFT总共有(N/2)*log2n个蝶形运算。设蝶形的输入分别为P和Q,输出分别为P和(?,则有:(4.1)P = p qwNQ? = p -qwN;在时间抽

41、取FFT算法过程中,输入序列是码位倒置或称比特反转 的,也就是说,如果将序列的下标用二进制表示,那么这个序列是按照二进制数的相反方向排列。所以FFT算法由两部分组成:码位倒置 和2点的DFT1算。F面讨论一下如何利用FFT算法计算反FFT。反FFT可以表示为下式:1 N :xn - x k Wkn=0,1,2,N-1(4.2)N k h式中,x(k)是时域信号,x(n)的傅里叶变换,通过下面的修改可以用 FFT算法来实现反FFT运算。1、增加一个归一化因子 1/N ;2、将wNnk用其复共轭WNnk代替,可见求X(k)的反FFT可以分为 以下3个步骤:(1) 取x(k)的共轭得Xn(k);(2

42、) 求 X(k)的 FFT得 Nx (n);(3) 取X(n)的共轭,并除以N,就得到了 x(n)。采用这种方法,可以完全不用修改 FFT程序就计算出反FFT。4.1.2 FFT算法的实现DSP芯片的出现使FFT的实现方法变得更为方便。由于大多数 DSP 芯片都具有在单指令周期内完成乘法-累加操作,并且提供了专门的 FFT指令,使得FFT算法在DS芯片实现的速度更快。用TMS320541的汇编程序实现FFT算法主要分为四步:(1) 实现输入数据的比特反转输入数据的比特反转实际上就是将输入数据进行位码倒置,以便在整个运算后的输出序列是一个自然序列。在用汇编指令进行位码倒置时,使用位码倒置寻址可以

43、大大提高程序执行速度和使用存储器的 效率。(2) 实现N点复数FFTN点复数FFT算法的实现可以分为三个功能模块,即第一级 蝶形运算、第二级蝶形运算、第三级至log2N级蝶形运算。(3) 功率谱的计算用FFT计算x(n)的频谱,即计算N JX k八x nWX(k) 一般是由实部和虚部组成的复数,即X k .Xr k jXi k因此,计算功率谱时只需将FFT变换好的数据, 求它们的平方和,然后对平方和进行开平方运算。输出FFT结果(4.3)(4.4)按照实部和虚部FFT算法的基本流程如图4.1所示:图4.1 FFT算法的基本流程图4.1.3 FFT算法的仿真和测试结果WITT 甲|1押:(a)M

44、ATLAB仿真波形(b) DSP测试波形图4.2 仿真和测试波形4.2 FIR滤波器的DSP的实现本设计中采用C语言和汇编语言混合编程的方式进行的,程序主 体由C语言编写,而核心的FIR滤波算法则由汇编语言编写。用 C语言 开发DS程序不仅使DSf开发的速度大大加快,而且开发出来的 DS程 序的可读性和可移植性也大大增加,程序修改也很方便。采用C编译器的优化功能可以增加C弋码的效率,在某些情况下,C代码的效率甚 至接近手工代码的效率。用C语言开发DS程序,在DS芯片的运算能 力不是十分紧张时是非常适合的。虽然 C编译器的优化功能可以使C 代码的效率大大增加,但是在某些情况下,C弋码的效率还是无

45、法与手工编写的汇编代码的效率相比,比如 FIR滤波器程序。这是因为, 即使最佳的C编译器,也无法在所有的情况下都能够最佳地利用DSP芯片所提供的各种资源。用C语言编写的中断程序虽然可读性很好, 但由于进入中断程序以后,有时不管程序中是否用到,中断程序都将 寄存器进行保护,从而大大降低中断程序的效率。如果中断程序频繁 被调用,那么即使一条指令也是至关重要的。此外,用 C语言实现DSP 芯片的某些硬件控制也不如汇编程序方便,有些甚至无法用c语言实 现。因此,在很多情况下,DS应用程序往往需要用c语言和汇编语言 的混合编程方法来实现,以达到最佳利用DS芯片软硬件资源的目的。 用C语言和汇编语言混合编

46、程的方法主要有以下三种:(1) 独立编写C程序和汇编程序,分开编译和汇编,形成各自的 目标代码模块,然后用链接器将 c模块和汇编模块链接起来。例如, FIR 滤波程序用汇编语言编写,对 FIR 程序用汇编器进行汇编,形成 目标代码模块,与C模块链接就可以在C程序中调用FIR程序。(2) 直接在C语言程序的相应位置嵌入汇编语句。(3) 对 c 程序进行编译 . 生成相应的汇编程序,然后对汇编程序 进行手工优化和修改。上面的例子采用的是第一种方法,这是一种常用的C语言和汇编语言接口方法,采用这种方法最重要的是必须遵守c编译器所定义的函数调用规则和寄存器使用规则。 遵循这两个规则就可以保证所编写 的

47、汇编模块不破坏(语言的运行环境。C模块和汇编模块可以相互访问 各自定义的函数或变量。 在编写独立的汇编程序时, 必须注意以下几 点:八、(1) 不论是用c语言编写的函数还是用汇编编写的函数, 都必须 遵循寄存器使用规则。(2) 必须保护函数要用到的几个特定寄存器,在TMS320C5 4的的 c 编译中,这些特定的寄存器包括 :ARD (FP), ARI (SP), AR6 和 AR70其中,如果SP正常使用,则不必明确加以保护。换句话说,只 要汇编函数在函数返回时弹出压入的对象,实际上就已经保护了SP, 因而 AR l 可以自由地使用。其它寄存器是可以自由使用的。函数返 回时ARP必须为to(

48、3 ),中断程序必须保护所有用到的寄存器。(4 )从汇编程序调用C函数时,以逆序方式压入堆栈,调用时再 将参数弹出。(5) 调用C函数时,C函数只保护几个特定的寄存器,而对于其 它寄存器C函数是自由使用的。(6) 长整型和浮点数在存储器中存放的顺序是低位字在低地址, 高位字在高地址。(7 )如果函数有返回值,则返回值存放在累加器 ACC中o(8) 汇编模块不能改变由C程序产生的.cinit 块,如果改变其内 容则会引起不可预测的后果。(9 ) 编译器在所有的标识符 (函数名、变量名 )前要加一下划杠“ _”。因此,编写汇编语言程序时,必须在C程序可以访问的所有对象前加“ _”。例如,在C程序中

49、定义了变量x,如果要在汇编程 序使用,既标记为“ x ,如果仅在汇编中使用,则只要不加下划杠, 即使与C程序中定义的对象名相同,也不会造成冲突。(10 )任何在汇编中定义的对象或函数,如果需要在 C程序中访 问或调用,贝泌须用汇编指令.global定义。同样,如果在C程序中 定义的对象或函数, 需要在汇编程序中访问或调用, 在汇编程序中也 必须用.global指令定义。另外一种C语言和汇编混合编程的方法就 是直接在C程序中嵌入汇编语句。采用这种方法一方面可以在 C程序 中实现用C语言无法实现的一些硬件控制功能,如修改中断控制寄存器、中断使能或无效、读取状态寄存器和中断标志寄存器等。另一方面,也

50、可以用这种方法在C程序中的关键部分用汇编语句代替 C语句 以优化程序。采用这种方法的缺点是比较容易破坏C环境,因为C编译器在编译嵌入了汇编语句的 C程序时,并不检查或分析所嵌入的汇 编语句。但是如果对C编译器和C环境比较熟悉,采用这种方法也可 以对 C 变量进行自由地操作。与独立编写汇编程序实现混合编程相 比,这种方法具有以下优点:(1) 程序的入口和出口由C语言自动管理,不必手工编写汇编程 序实现。(2) 程序结构清晰。这种方法保留了 C程序的结构,如变量的定 义等,因此程序结构清晰,可读性强。(3) 程序调试方便。由于C程序中的变量全部由C语言来定义, 因此采用C源码调试器可以方便地观察C

51、语言变量。汇编程序调试首先在CC中建立新的工程fir.mak,然后将汇编语言源文件 (.asm 或. c) 文件以及中断向量文件 (. asm) 、位文件 (. cmd)添加到工程中。如果是C语言程序则还要添加“stdio. h”、“math. h”“ rts. lib ”编译通过后生成 . out 文件, 可以直接下载到实验板 上。这时,要注意硬件状况 , 特别是要注意硬件指示灯是否各自处于 正常状况 , 也要注意硬件仿真器是否正常工作。如果硬件没有问题 , 程序就可以正常下载,这时打开Momer窗口,可以看到数据存储器 已经被划分 coff_ fir, d_ data_ buffer, i

52、n_ buffer,out_ buffer 等区。编译并将整个FIR项目成功地下载到目标系统板后,FIR程序就- 34可以在EVM板上运行在主程序中,在flag = 0处设置断点;单击“ Run运行程序,程序将运行至断点处停止;用 View / Graph / Time/Freque ncy 打开 一个图形观察窗口如图4.4所示图4.4图形参数设置窗口设置观察图形窗口变量及参数为:采用双踪观察启始地址分别为x和y,长度为256的单元中数值的变化,数值类型为32位浮点型变 量,这两个数组中分别存放的是经 A/D转换后的输入混叠信号(输入 信号)和对该信号进行FIR滤波的结果;单击“ Animate”运行程序, 调整观察窗口并观察滤波结果,如图 4.5示。图4.5测试结果通过测试波形可以看到,该 DSP541实际滤波表现达到了算法仿真的要求。考虑到DSP541是定点DSP所以将输入信号以及滤波器系 数都转换成了定点数,为了防止溢出,将输入信号的幅值进行缩小,将其控制在-1到1之间。4.3总结体会通过本次课程设计,让我了解了数字滤波是信号处理技术中的重 要部分,研究了数字滤波器的基本理论知识以及它实现方法。学习了数字滤波器的结构、设计理论,掌握了各种数字滤波器的原理和特性。 并且复习了 MATLA的相关知识,并且利用MATLA与CCS设计了低通

温馨提示

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

评论

0/150

提交评论