首页资源分类DSP > 基于MATLAB与CCS的IIR滤波器设计.doc

基于MATLAB与CCS的IIR滤波器设计.doc

已有 445005个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:MATLABCCSIIR

    分    享:

    文档简介

    基于MATLAB与CCS的IIR滤波器设计,对初学者比较有帮助~

    文档预览

     基于MATLAB与CCS的IIR滤波器设计 袁献华 (吉首大学物理科学与信息工程学院,湖南 吉首 416000) 摘  要 当前,数字信号处理技术受到了人们的广泛关注,其理论及算法随着计机技术和微电子技术的发展得到了飞速地发展,并被广泛应用于语音和图象理、数字通信、谱分析、模式识别和自动控制等领域。数字滤波器是数字信处理中最重要的组成部分之一,几乎出现在所有的数字信号处理系统中。本课题研究的数字滤波器基本理论及其实现方法,为数字滤波器的实现奠定了理论基础。为数字滤波的相关领域提供了理论及技术准备,缩短了理论与实践的距离,为今后从事数字滤波和DSP技术研究开发工作奠定了基础,积累了经验。 关键词: DSP;集成开发环境;CCS;数字滤波器;IIR Based on MATLAB and CCS, IIR filter design Yuan Xian-Hua (Jishou University, School of Physical Science and Information Engineering, Hunan Jishou 416000) Abstract At present, digital signal processing technology has been widespread concern, its theory and algorithm with the total machine technology and the development of microelectronics technology has been rapidly evolving, and is widely used in voice and image science, digital communications, spectral analysis , pattern recognition and automation fields. Digital filter is a digital channel processing, one of the most important component of almost appear in all of the digital signal processing systems. Of this research project the basic theory of digital filters and its realization method for the realization of digital filters has laid a theoretical basis. Relevant fields for the digital filter provides a theoretical and technical preparation, shortening the distance between theory and practice for the future in digital filtering and DSP technology research and development basis for the work and accumulated experience. Keywords: DSP; integrated development environment; CCS; digital filter; IIR 目录 第一章 绪论 1 1.1课题背景 1 1.2研究意义 1 1.3国内外相关领域的研究进展 1 第二章 IIR滤波器的MATLAB辅助设计 2 2.1MA丁LAB简介 2 2.2 IIR滤波器的结构 2 2.2.1直接型 2 2.2.2直接II型 3 2.2.3级联型 5 2.2.4 并联型 6 2.2.5 IIR滤波器的几种结构形式的性能 7 2.3典型的IIR数字滤波器的设计 8 2.3.1典型低通Chebyshevl型数字滤波器的设计 8 2.3.1完全滤波器设计 9 第三章 数字滤波器在DSP上的实现 12 3.1 CCS简介 12 3.2 MATLAB与DSP之间的连接 12 3.3 技术难点 13 3.3.1 定点数的定标 13 3.3.2 误差问题 13 3.4数字滤波DSP实现程序设计 14 3.5 CCS仿真结果及分析 16 3.6带通滤波器的MATLAB仿真结果 17 第四章 结论 19 参考文献 20 第一章 绪论 1.1课题背景 随着集成电路技术的发展,各种新型的大规模和超大规模集成电路不断涌现,集成电路技术与计算机技术结合在一起,使得数字信号处理系统的功能越来越强。DSP技术就是基于VLSI技术和计算机技术发展起来的一门重要技术。DSP技术已在通信、控制、信号处理、仪器仪表、医疗、家电等很多领域得到了越来越广泛的应用。 1.2研究意义 在数字信号处理中,滤波占有极其重要的地位。数字滤波是语音和图象处理、模式识别、谱分析等应用中的一个基本的处理技术。用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便地改变滤波器的特性。因此,我们有必要对滤波器的设计方法进行研究,理解其工作原理,优化设计方法,设计开发稳定性好的滤波器系统。我们将通过DSP设计平台,实现较为重要的FIR和自适应滤波器系统,并实现了它们的应用系统以TMS320C5402芯片为核心的硬件电路,实现能独立完成滤波功能的系统。从而通过本课题的研究,掌握滤波器的设计技术,为通信、信号处理等领域实用化数字滤波器设计提供技术准备。本科题的研究,将为今后设计以DSP为核心部件的嵌入式系统集成提供技术准备,这不仅具有重要的理论意义,同时还具有重要的实际意义。 1.3国内外相关领域的研究进展 自20世纪70年代末80年代初DSP芯片诞生以来,DSP芯片得到了飞速的发展。在20多年时间里,DSP芯片已经在信号处理,通信,雷达等许多领域得到广泛的应用。世界上第一个单片DSP芯片是1978年AMI公司发布的S2811,1979年美国Intel公司发布的商用可编程器2920是DSP芯片的一个主要里程碑。1980年,日本NEC公司推出的PD7720是第一个具有乘法器的商用DSP芯片。在这之后,最成功的DSP芯片当数美国德州仪器公司(Texas Instruments,简称TI的一系列产品,其DSP市场份额占全世界份额近50%。目前DSP芯片的价格越来越低,性能价格比日益提高,具有巨大的应用潜力。经过十几年的发展,DSP器件在高速度、可编程、小型化、低功耗等方面都有了长足的发展,单片DSP芯片最快每秒可完成16亿次(1600MIPS,每秒1600M次指令)的运算,生产DSP器件的公司也不断壮大,目前,市场占有率前四名依次为:Texas Instruments、Lucent、AnalogDevice、Motorola。DSP器件应用面从起初的局限于军工,航空航天等军事领域,扩展到今天的诸多电子行业及消费类电子产品中。 第二章 IIR滤波器的MATLAB辅助设计 2.1MA丁LAB简介 MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,当前流行的MATLAB5.3/Simulink3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。MATLAB具有许多的优点比如:语言简洁紧凑,使用方便灵活,库函数极其丰富;MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性;程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行,等等优点。因此在各个学科和领域得到了广泛的应用。 2.2 IIR滤波器的结构 IIR滤波器的传递函数在有限z平面上有极点存在。它的单位脉冲响应 延续到无限长,而它的结构上的特性是存在反馈环路,也即结构上是递归型的。 具体实现起来,结构并不是唯一的。同一个传递函数 ,可以有各种不同的结构形式,其中主要的基本结构形式有以下几种: 2.2.1直接型 一个N阶IIR滤波器的传递函数可以表达为 用差分方程可以表达为 从这个差分方程表达式可以看出, 是由两部分相加构成: 第一部分是一个对输入 的N节延时链结构,每节延时抽头后加权相加,也即是一个横向结构网络。 第二部分也是一个N节延时链的横向结构网络,不过它是对延时,因此是个反馈网络。 从图中我们可以看到,直接型结构需要2N级延时单元。 2.2.2直接II型 上面直接型结构中的两部分也可分别看作是两个独立的网络,其第一部分的传递函数为 差分方程是 其第二部分的传递函数为 差分方程是 这两部分串接后即构成总的传递函数 由于系统是线性的,显然将级联的次序调换不会影响总的结果。即 其结构如图2-3所示。 即信号先经过反馈网络 ,其输出为中间变量 再将 通过直馈网络 ,就得到系统的最后输出 改变级联次序后,将中间的两条完全相同的延时链合并。这样延时单元可以节省一倍,即N阶滤波器只需要N级延时单元。这种结构称为正准型结构或直接II型结构,而把直接型称为直接I型。 2.2.3级联型 一个N阶的传递函数也可以用它的零、极点来表示,也即它的分子、分母都表达为因子形式 由于的系数 都是实系数,因此零极点只有两种情况:或者是实根,或者是共轭复根。即 式中表示实根; 表示复根,并且 。 再将每一对共轭因子合并起来构成一个实系数的二阶因子,则 如果把单实根因子也看作是二阶因子的一个特例:即二次项系数等于零的二阶因子,则整个函数可以完全分解成实系数二阶因子的形式 这样滤波器就可以用若干二阶网络级联起来构成,这些二阶网络也成为滤波器的二阶基本节。它的传递函数的一般形式为 这样一个二阶基本节可以采用直接II型结构来实现,整个滤波器则是他们的级联。 整个结构如图2-8所示。 图2-8 结构图 2.2.4 并联型 将传递函数展开成部分分式就可以用并联的方式构成滤波器。 对于其中的共轭复根部分,再将它们成对地合并为二阶实系数的部分分式,则 其中,。 这样就可以用L个一阶网络、M个二阶网络、以及一个常数A0网络并联起来组成滤波器H(z),其结构如图6-9所示。 当然也可以全部采用二阶节的结构,这时可将式(6-5)中实根部分两两合并以形成二阶分式。 2.2.5 IIR滤波器的几种结构形式的性能 直接I型:需要2N级延时单元。 直接II型:只需要N级延时单元,节省资源。 直接(I,II)型在实现原理上是类似的,都是直接一次构成。共同的缺点是,系数ai 、bi对滤波器性能的控制关系不直接,调整不方便。更严重的是当阶数N较高时,直接型结构的极点位置灵敏度太大,对字长效应太明显,因而容易出现不稳定现象并产生较大误差。因此一般来说,采用另两种结构将具有更大的优越性。 级联型:每一个基本节只关系到滤波器的某一对极点和一对零点,便于准确实现滤波器的零、极点,也便于性能调整。 级联结构可以由许多不同的搭配方式,在实际工作中,由于运算字长效应的影响,不同排列所得到的误差和性能也不一样。 并联型:可以单独调整极点位置,但不能直接控制零点。在运算误差方面,并联型各基本节的误差互不影响,所以比级联型总的说,误差要稍小一些。 因此当要求有准确的传输零点时,采用级联型最合适,其他情况下这两种结构性能差不多,或许采用并联型稍好一点。 2.3典型的IIR数字滤波器的设计 模拟滤波器的理论和设计方法已发展得相当成熟,且有一些典型的模拟滤波器供我们选择,如巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等,这些典型的滤波器各有特点。用MATLAB进行典型的数字滤波器的设计,一般步骤如下: (1)按一定规则将给出的数字滤波器的技术指标转换成模拟低通滤波器的技术指标; (2)根据转换后的技术指标使用滤波器阶数选择函数,确定最小阶数N和固有频率Wn,根据选用的模拟低通滤波器的类型可分别用函数:buttord、eheb1ord、chebZord、ellipord等; (3)运用最小阶数N产生模拟滤波器原型,模拟低通滤波器的创建函数有:buttap、eheb1ap、ehebZap、ellipap、besselap等; (4)运用固有频率Wn把模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可分别用函数lpZlp、lpZhp、lpZbp、lpZbs; (5)运用冲激响应不变法或双线性变换法把模拟滤波器转换成数字滤波器,分别用函数impinvar和bilillear来实现。 2.3.1典型低通Chebyshevl型数字滤波器的设计 设计中需要限定其通带上限临界频率wp,阻带临界滤波频率ws,在通带内的最大衰减rP,阻带内的最小衰减rs。 设计过程如下: 把数字滤波器的频率特征转换成模拟滤波器的频率特征; (例如设定各参数wp=30*2*pi;ws=40*2*pi:Fs=100;rp=0.3;rs=80:) 选择滤波器的阶数: [N,Wn]=cheblord(wP,ws,rP,rs,’s’); 创建Chebyshevl型滤波器原型: [z,P,k]=eheblaP(N,rP): 表达形式从零极点增益形式转换成状态方程形式: [A,B,C,D]=zpZss(z,p,k): 把模拟低通滤波器原型转换成模拟低通滤波器: [At,Bt,Ct,Dt]=IPZIP(A,B,C,D,Wn): 表达形式从状态方程形式转换成传递函数形式: [numl,denl]=ssZtf(At,Bt,Ct,Dt); 采用冲激响应不变法将模拟滤波器转换成数字滤波器: [numZ,denZ]=imPinvar(numl,denl,100); [N,Wn]==cheb1ord(wp,ws,rp,rs,’s’) 该函数返回模拟滤波器的最小阶数N和Chebyshevl型固有频率Wn。其中的wp、ws是以弧度为单位。如果rp=3dB,则固有频率wn等于通带截止频率wp。 [z,P,k]=eheb1aP(N,rP) 该函数返回一个N阶Chebyshevl型滤波器的零点、极点和增益。这个滤波器有通带内的最大衰减为rP。chebyshevl型滤波器的主要特点是在阻带内达到最大平滑。 [At,Bt,et;Dt]=lp2lp(A,B,C,D,Wn) 该函数把模拟低通滤波器原型转换成截止频率为Wn的低通滤波器。 [numZ,denZ卜impinvar(numl,denl,Fs) 该函数模拟滤波器传递函数形式[numl,denl]转换为采样频率为Fs的数字滤波器的传递函数形式[numZ,denZ]。Fs缺省时默认为1Hz。 [H,W]=freqz(numZ,denZ,N) 该函数返回数字滤波器的频率响应。当N是一个整数时,函数返回N点的频率向量H和N个点的复频响应向量W。N最好选用2的整数次幂,这样使用FFT进行快速运算。N个频率点均匀地分布在单位圆的上半圆上。系统的N默认值为512。 2.3.1完全滤波器设计 除了典型设计以外,MATLAB信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,直接调用就可以设计滤波器,这为设计通用滤波器提供了方便。 设计Butterworth滤波器用函数butter(),可以设计低通、高通、带通和带阻的数字和模拟滤波器,其特性是通带内的幅度响应最大限度的平滑,但损失了截止频率处的下降斜度。 设计ehebyshevI型滤波器用函数ehebyl()。可以设计低通、高通、带通和带阻的数字和模拟ChebyshevI型滤波器,其通带内为等波纹,阻带内为单调。ChebyshevI型滤波器的下降斜度比II型大,但其代价目是通带内波纹较大。 设计ehebyshevII型滤波器用函数eheby2()。可以设计低通、高通、带通和带阻的数字和模拟ChebyshevII型滤波器,其通带内为单调,阻带内等波纹。ChebyshevII型滤波器的下降斜度比I型小,但其阻带内波纹较大。 设计椭圆滤波器用函数ellip(),与ehebyl、eheby2类似,可以设计低通、高通、带通和带阻的数字和模拟滤波器。与Butterworth和chebyshev滤波器相比,ellip函数可以得到下降斜度更大的滤波器,得通带和阻带均为等波纹。一般情况下,椭圆滤波器能以最低的阶实现指定的性能指标。 几种类型的低通滤波器设计: 设Wp=30Hz,Ws=35Hz,Fs=100,Rp=0.5dB,Rs=40dB分别用巴特沃斯(Butterworth)滤波器、切比雪夫(ehebyshev)滤波器、椭圆(Cauer)滤波器,程序设计如下: 巴特沃斯低通滤波器: [nl,Wnl]=buttord(wP/(Fs/2),ws/(Fs/2),rP,rs,’z’); [numl,denl]=butter(nl,Wnl); 图2.2 Butterworth低通滤波器 ehebyshevl低通滤波器: [nZ,WnZ]=eheblord(wP/(Fs/2),ws/(Fs/2),rP,rs,’z’): [numZ,denZ]=chebyl(nZ,rP,WnZ,’high’): 图2.3 ehebyshevl低通滤波器 ehebyshevII低通滤波器: [n3,Wn3]=ehebZord(wP/(Fs/2),ws/(Fs/2),rP,rs,’z’): [num3,den3]=ehebyZ(n3,rP,Wn3,’high’): 图2.4 ehebyshevII低通滤波器: 椭圆低通滤波器: [n4,Wn4]=elliPord(wP/(Fs/2),ws/(Fs/2),rP,rs,’z’); [num4,den4]=elliP(n4,rP,rs,Wn4,’high’): 图2.6椭圆低通滤波器 从频率响应图中可以看出:巴特沃斯滤波器具有单调下降的幅频特性,通带内平滑;切比雪夫I型滤波器的幅频特性在通带内有波动,阻带内单调;chebyshevH型滤波器的幅频特性在阻带内有波动,通带内单调;椭圆滤波器的选择性相对前三种是最好的,下降斜度比较大,通带和阻带内均为等波纹,同样的性能指标,椭圆滤波器可以最低的阶数来实现。这样根据不同的要求可以选用不同类型的滤波器。 第三章 数字滤波器在DSP上的实现 3.1 CCS简介 DSP芯片的开发需要一套完整的软、硬件开发工具。璐P芯片的开发工具可以分为代码生成工具和代码调试工具两类。CCS(CodeComPoserStudi的是TI推出的用于开发其DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接软件仿真、硬件调试及实时跟踪等功能于一体,极大的方便了DSP程序的设计与开发。目前CCS软件已经历了V1.O,V1.2,V2.O,和V2.1等版本,各个版本CCS软件的功能大体一致。CCS集成开发环境中包含Simulator(软件仿真器)和Emulat。r(硬件仿真器)两部分。它们使用的是同一个集成开发环境。在本设计中,采用软件仿真器进行程序的调试,CCS集成开发环境(IDE)支持从编辑、编译、汇编、链接到调试DSP应用程序的整个开发过程。CCS具有强大的源代码编辑器,允许编辑C语言源代码和汇编源代码,能在C代码之后显示与之对应的汇编指令。CCS使用工程来管理整个应用程序设计的所有文档,工程中可包含C语言源代码、汇编源代码、库文件、链接命令文件、头文件和目标文件。在使用CCS调试工具时能设置一个或多个断点;在断点处自动更新;使用Watch窗口查看变量;查看、编辑存储器和寄存器的值;使用ProbePOint工具在主机与目标系统间传输数据:观察目标系统中执行的反汇编代码和C语言指令;对目标系统中的信号绘图显示。图5.1为CCS集成开发环境界面图。 图5.1CCS集成开发环境界面图 3.2 MATLAB与DSP之间的连接 MATLAB辅助DSP开发实现的关键是建立MATLAB与DSP间的连接。以往一般是由开发工具MATLAB把仿真结果先保存,再调入CCS中,在CCS中的仿真中间结果与MATLAB的仿真结果进行比较,以此发现DSP程序的不足,这需要反复操作,比较麻烦。MathWorkS公司和TI公司共同开发的MATLABLinkforCCS开发工具(CCSLink),实现了在MATLAB,TICCS开发环境和DSP硬件间的双向连接,开发者可以利用MATLAB强大的数据处理、分析、可视化功能来处理CCS和目标DSP中的数据,可以大大简化DSP软件开发的分析、调试和验证过程,缩短软件开发周期。MATLAB可通过3种方式与CCS、目标DSI,进行连接、数据交换。CCSLink提供了3种连接对象:与CCS的连接对象可从MATLAB命令窗运行CCS中的应用程序,向目标DSP的存贮器、寄存器读出/写人数据,检查DSP状态,开始/停止目标DSP中运行的程序。与RTDX(实时数据交换)的连接对象使MATLAB与目标DSP直接通信,MATLAB可以实时地向目标DSP取出/发送数据,并不停止DSP中正在执行的程序。嵌入式对象在MATLAB环境中创建,该对象可代表嵌入在目标C程序中的变量,由其可以直接对嵌入在目标DSP存贮器/寄存器中的变量进行操作。 3.3 技术难点 3.3.1 定点数的定标 在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位,本文采用的DSP芯片为16位。显然,字长越长,所能表示的数的范围越大,精度也越高。在滤波器的实现过程中,DSP所要处理的数可能是整数,也可能是小数或混合小数;然而,DSP在执行算术运算指令时,并不知道当前所处理的数据是整数还是小数,更不能指出小数点的位置在哪里。因此,在编程时必须指定一个数的小数点处于哪一位,这就是定标。通过定标,可以在16位数的不同位置上确定小数点,从而表示出一个范围大小不同且精度也不同的小数。例如:在Q15中,1080H=0.12890625;在Q0时,108OH=4224。同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。但对于DSP芯片来说,处理的方法是相同的。从上表中还可以看出,不同的Q表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度越低。因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示较大的数值范围,必须以牺牲精度为代价,要想提高精度,则数的表示范围就相应的减小,在实际的定点算法中,为达到最佳的性能,必须充分考虑这一点。在运用定点DSP时,如何选择合适的Q值是一个关键性问题。就DSP运算的处理过程来说,实际参与运算的都是变量,有的是未知的,有的则在运算过程中不断改变数值,但它们在实际工程环境中作为一个物理参量而言都有一定的动态范围。只要动态范围确定了,Q值也就确定了。因此,在程序设计前,首先要通过细致和严谨的分析,找出参与运算的所有变量的变化范围,充分估计运算中可能出现的各种情况,然后确定采用何种定标标准才能保证运算结果正确可靠。这里,所讨论的理论分析法和统计分析法确定变量绝对值最大值|max|.,然后根据|max|再确定Q值。但是,DSP操作过程中的意外情况是无法避免的,即使采用统计分析法也不可能涉及到所有情况。因此,在定点运算过程中应该采取一些判断和保护办法(特别是在定点加法中)。另外,在数字信号处理中的大量运算是乘法和累加,应尽量采用纯整数或纯小数运算,即全部变量都用Q0或Q15格式表示。这样做的好处是操作简单、编程方便。只有当纯整数或纯小数运算不能满足变量的动态范围和精度要求时,才采用混合小数表示法进行定点运算。本文专门设计了一个Q15转化程序,可以方便的把在MATLAB中得到的滤波器的系数,和输入的原始随机信号进行处理输入到CCS中。 3.3.2 误差问题 因为在用定点DSP实现时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应。所产生的误差主要包括:数模转换引起的量化误差、系数量化引起的误差以及运算过程中的舍入误差。在用定点DSP时,产生误差是不能避免的,但是可以通过一些办法减小误差。如,可以用两个存储单元来表示一个数,运算时运用双字运算;可以根据需要将滤波器系数都用双字表示,也可以只将一半的系数用双字表示,视需要而定。另外,FIR数字滤波器和工IR数字滤波器所引入的量化误差是不一样的。FIR数字滤波器主要采用非递归结构,因而在有限精度的运算中都是稳定的;而IIR数字滤波器是递归结构,极点必须在z平面单位圆内才能稳定,这种结构运算中的四舍五入处理有时会引起寄生振荡。除了有限字长效应以外,不同结构引入的误差也有所不同。在实际设计中,要注意实现中的误差问题。在选择不同的结构时,应考虑它们所引入的误差,并用高级语言进行定点仿真,以比较不同结构下误差的大小,从而作出合理选择。从理论上说,可以用高阶工IR数字滤波器实现良好的滤波效果。但由于DSP本身有限字长和精度的因素,加上IIR滤波器在结构上存在反馈回路,是递归型的,再者高阶滤波器参数的动态范围很大。这样一来造成两个后果:结果溢出和误差增大,从而导致算法无法在DSP上实现。因此要合理选择滤波器的阶数。 3.4数字滤波DSP实现程序设计 DSP程序设计流程图见图3.2 图3.2 DSP程序设计流程图 在技术难点中讨论过定点数的定标问题,特意编写了一个小程序实现对输入原始信号和滤波器系数的归一化处理。一下为归一化程序。 X=[]; i=1; for n=1:1024 if x(1,i) >1 | x (1,i)<-1 k(1, i)=x(1,i) *32768/max (x), else k(1,i)=x(1,i)*32768 end i=i+1: end, n, i 把原始信号数据和滤波器系数代人上面程序中x=[],经过运算就可以得到归一化数据。对实现滤波的核心程序为: filter_start: STM #K_CIR,BK STM #l,ARO STM #inputdata,ORIGIN STM #bufferdatax,INPUT STM #bufferdatay,FILTER STM #filterdata,OUTPUT RPT #K_A-1 MVDD *ORIGIN+,*INPUT+0% STM #bufferdatax,INPUT RPT #KA-l MVDD *INPUT+0%,*FILTER+0% STM #bufferdatay,FILTER STM #bufferdatax,INPUT STM #K_DATA_5IZE-3-l,BRC RPTB filter_end-l MVDD *ORIGIN+,*INPUT RPT #KB-1-1 MAR *INPUT-O% MPY *INPUT+O%,#b4,B LD B,A MPY *INPUT+O%,#b3,B LD B,A MPY *INPUT+O%,#b2,B LD B,A MPY *INPUT+O%,#bl,B LD B,A MPY *FILTER+0%,#a3,B ADD B,A MPY *FILTER+0%,#a2,B ADD B,A MPY *FILTER+0%,#al,B ADD B,A STH A,*FILTER-0% STH A,*OUTPUT+ MAR *FILTER-0% 该程序是对初始化的数据进行滤波,主要实现IIR差分方程初始化的数据就是滤波前的随机信号。初始化数据和MATLAB中得到的滤波器系数做乘加运算,就实现了对原始数据的滤波,滤波后的数据存放在特定的单元。只要将此程序做一些改动,然后在其他程序中调用就可以对实际的信号进行滤波。在自来水检漏系统中,对两路采样信号进行AD转换后,送到DSP然后调用滤波程序,滤波后将数据输出再进行滤噪和相关算法的处理。 3.5 CCS仿真结果及分析 在CCS上调试仿真得到的结果: 从图仿真结果,可以看出输入信号经过截止频率为500Hz的低通滤波器以后500Hz以上的频率分量大大减弱。但是滤波效果不太理想尤其在家00Hz附近的频率分量。经过分析原因可能如下:首先数字滤波吕的性能主要取决于乘法器的各系数,而这些系数在MATLAB上仿真的时候,是没有经过处理的真实数据,因此在MATLAB上仿真是理想的仿真,因此效果较好。而在CCS上各个系数是经过量化处理的,因此系数和原始系数相比较会有误差。其次IIR数安滤波器是递归结构,极点必须在z平面单位圆内才能稳定,这种结构运算中的四舍五入处理有时会引起寄生振荡。从而影响滤波效果。再次,可能滤波器阶数有点低。可以针对以上原因,对滤波器再进行改进。从理论上说,可以用高阶IIR数字滤波器实现良好的滤波效果。但由于DSP本身有限字长和精度的因素,加上IIR滤波器在结构上存在反馈回路,是递归型的,再者高阶滤波器参数的动态范围很大。这样一来造成两个后果:结果溢出和误差增大,从而导致算法无法在DSP上实现。综合考虑,将滤波器的阶数提高到5阶,得到新的仿真结果如图3.4所示。可以看出5阶的滤波效果要优于3阶滤波器。 图3.5 IIR带通滤波器仿真结 3.6带通滤波器的MATLAB仿真结果 IIR带通滤波器的设计和低通滤波器的设计方法是一样的。因此本文不再对IIR带通滤波器的设计作过多的说明,只给出仿真的结果。IIR带通滤波器设计时采用8阶滤波器。设一计IIR型的8阶切比雪夫I型带通滤波器的采样频率(Fs)为8KHz,截止频率分别为(Fpass)为500Hz和I000Hz。数据点数为1024个。 图3.6 IIR带通滤波器仿真结果 第四章 结论 本文就DSP实现数字滤波器进行了研究,总结本设计的研究成果,可归纳为以下几点: 1.数字滤波是信号处理技术中的重要部分,研究了数字滤波器的基本理论、实现方法学习了数字滤波器的结构、设计理论,掌握了各种数字滤波器的原理和特性,为数字滤波器的实现及今后的学习与工作奠定了理论基础。 2.研究了MATLAB环境下数字滤波器的设计方法,利用MATLAB软件编程实现工IR滤波器设计,用拟TLAB语言可以编写出各种类型的滤波器,并进行仿真,用汇编语言编写了DSP的工IR滤波算法,并将其在CCS上调试仿真。 3.探讨了建立MATLAB与DSP之间的连接,寻找系数快速传递的方法。上述研究为课题的进一步研究奠定了基础,但是由于课题本身难度较大,作者水平有限,加之时间紧迫研究不够深入,论文中存在许多缺点和不足,需要在今后的研究中注意,主要包括以下几方面: (l)对数字滤波理论知识的研究还不够深入。由于理论知识的欠缺,滤波器的设计所采用的方案不够完善。 (2)设计的滤波器类型转换不够方便和灵活,虽然对MATLAB与DSP之间的连接做了一些研究,但在实际的应用中并没有成功,如要转换滤波器的类型必需重新得到滤波器的系数并在原程序中修改,不能直接调用。在以后应加强这方面的研究。 (3)有关DSP系统软件开发语言的选择历来是人们较为关心的问题,考虑到数字滤波程序代码不是很多,设计中作者采用MATLAB进行算法仿真,用汇编语言开发算法程序。但是,从代码质量角度考虑汇编必然不是最优的,在今后的研究中要加强对高级语言代码的优化研究。 参考文献 [1] 王世一编著.数字信号处理[M].北京:北京理工大学出版社,2003.2,重版. [2] 王沫然.Simulink建模及动态仿真.北京:电子工业出版社,2002 [3] 薛定宇.基于MATLAB/Simulink的系统仿真技术与应用.北京:清华大学出版社,2002 [4] 张志涌.精通MATLAB5.3版.北京:北京航空航天大学出版社,2000 [5] 陈怀深.MATLAB及其在理工课程中的应用指南.西安:西安交通大学出版社,1998 [6] 李哲英.DSP基本理论与应用技术.北京:北京航空航天大学出版社,2002.6 [7] 彭启宗,管庆等.DSP集成开发环境CCS及DSPBIOS的原理与应用.北京:电子工业出版 社,2004年7月 [8] 文玮玮,董金明.数字滤波器在定点DSP上的实现.遥测遥控,2002年1月 [9] 邢培育,崔克清一种基于TMS32OC5402的数字IIR滤波器设计.数据采集与处理,200 年6月 [10]郑佳春.数字滤波器的MATLAB设计与DSP上的实现.单片机及嵌入式系统应用,2003 [11]张雄伟,陈亮.DSP芯片的原理与开发应用[M].北京:电子工业出版社,2003.156-227. [12]王华奎,张立毅编著.数字信号处理及应用[M].北京:高等教育出版社,2004.n. [13]丁玉美,高西全.数字信号处理(第二版)[M].西安:西安电子科技大学出版社,2001. [14]韩利竹,王华.撇TLAB电子仿真与应用「M」.北京:国防工业出版社,2003. [15]BatemanAndrew,lainPatersonStePhens.TheDSPHandbookAlgorithms,APPlieationan DesignTeehniques!Ml.PrentieehallchinamachinePress2003 [16]TexasInstruments.SPRU173G.TMS320C54XDSP]又efereneeSetVOlume4:APPlieation Guide.1996.10 [17]TexasInstruments.SpRU302.TMS320C54XDSpRefereneeSetVolumess:Enhancd PeriPherals.1999.6

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。