第一篇:IIR数字滤波器的DSP实现
湖南科技大学 信息与电气工程学院
《课程设计报告》
题 目:IIR数字滤波器的DSP实现 专 业: 电子信息工程 班 级: 电子二班 姓 名: 高二奎 学 号: 1104030205 指导教师: 尹艳群
2015年 1月 8 日
信息与电气工程学院 课程设计任务书
2014—2015学年第一学期
专业: 电子信息工程 班级: 电子二班 学号: 1104030205姓名: 高二奎 课程设计名称: DSP原理及应用 设计题目: IIR数字滤波器的DSP实现
完成期限:自 2015 年 1 月 1 日至 2015 年 1 月 8 日共 1 周 设计依据、要求及主要内容(可另加附页):
1、设计目的:通过课程设计,使学生综合运用DSP技术课程和其他有关先修课程的理论和生产实际知识去分析和解决具体问题的能力得到提高,并使其所学知识得到进一步巩固、深化和发展。通过课程设计初步培养学生对工程设计的独立工作能力,学习设计的一般方法。通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。通过课程设计训练学生的设计基本技能,如计算、绘图、查阅设计资料和手册,熟悉标准与规范等。
2、要求:
1.熟悉DSP处理器及其结构性能,掌握DSP芯片配套开发工具的使用方法。2.按要求设计出硬件电路。
3.画出硬件连接原理图,并对硬件工作原理进行说明。
4.给出软件流程图及编写程序,每一条指令的后面附上相应的注释。5.进行软、硬件调试,检查是否达到相关的功能。6.写出调试方法。
7.设计报告结尾附上心得体会。
3、主要内容:熟悉5410DSP的MCBSP的使用,了解AD50的结构,掌握AD50各寄存器的意义及其设置,掌握AD50与DSP的接口,AD50的通讯格式及AD50的DA实验。
指导教师(签字): 批准日期: 年 月 日
目 录
一、摘要·························································3
二、数字滤波器介绍和IIR数字滤波器的理论分析·····················3 2.1数字滤波器介绍··············································3 2.2 IIR滤波器的设计方法及原理···································4
三、DSP软件的简单介绍···········································6 3.1DSP系统的特点···············································6 3.2DSP系统的设计流程···········································7 3.3DSP系统的开发工具CCS········································7
四、TMS320C5402的介绍···········································9
五、基于DSP的IIR程序设计及软件调试·····························11 5.1IIR程序设计················································11
5.2软件调试结果·········································13
六、总结和心得··················································15
七、参考文献·······················································
一、摘要
随着计算机和信息技术的飞速发展,数字信号处理已经成为高速实时处理的一项关键技术,广泛应用在语音识别、智能检测、工业控制等各个领域。数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。
DSP数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。传感器数字信号处理是利用传感器对模拟信号或数字信号进行采集并把其转换成计算机可识别的电信号,并利用计算机对信号进行处理以达到计算机辅助控制或是计算机自动控制的目的。
DSP 芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。用DSP 芯片实现IIR 数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP 芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。
本课题主要应用MATLAB软件设计IIR数字滤波器,并对所设计的滤波器进行仿真;应用DSP集成开发环境——CCS调试汇编程序,文章结合TM320C5509的结构特点,介绍了一种IIR滤波器在TM320C5509中的实现方法。文中程序已经过硬件验证,仿真结果表明该设计符合要求。
关键词
数字滤波;IIR;DSP;TM320C5509;MATLAB
二、数字滤波器介绍和IIR数字滤波器的理论分析 2.1数字滤波器介绍
数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:, 其中、分别是数字滤波器的输出序列和输入序列的频域特性(或是数字滤波器的单位取样响应的频谱,又称为数字滤波器
经过滤波后,因此,只要按称为频谱特性),的频域响应。输入序列的频谱照输入信号频谱的特点和处理信号的目的,适当选择,使得滤波后的满足设计的要求,这就是数字滤波器的滤波原理。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型
来实现,其差分方程为:
系统函数为:
设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。2.2 IIR滤波器的设计方法及原理
IIR滤波器差分方程的一般表达式为:
式中x(n)为输入序列;y(n)为输出序列;于0,则为FIR滤波器.IIR滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,具有递归性,即IIR滤波器的输出不仅与输入有关,而且与过去的输出有关.将上式展开得出y(n)表达式为:
和为滤波器系数.若所有系数等
在零初始条件下,对上式进行z变换,得到:
设N=M,则传递函数为:
上式可写成:
上式具有N个零点和N个极点.若有极点位于单位圆外将导致系统不稳定.由于FIR滤波器所有的系数均为0,不存在极点,不会造成系数的不稳定.对于IIR滤波器,系统稳定的条件如下: 若||<1,当n→时,h(n)→0,系统稳定;若||>1,当n→时,h(n)→,系统不稳定.IIR滤波器具有多种形式,主要有:直接型(也称直接I型)、标准型(也称直接II型)、变换型、级联型和并联型.三、DSP软件的简单介绍 3.1DSP系统的特点
DSP系统是以数字信号处理为基础的,因此不但具有数字处理的全部优点而且还具有以下特点[24]: 1.接口方便:DSP应用系统与其他以现代数字技术为基础的系统或设备都是相互兼容的,这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易得多。
2.编程方便:DSP应用系统中的可编程DSP芯片,能灵活方便地进行修改和升级。
3.稳定性好:DSP应用系统以数字处理为基础,受环境温度及噪声的影响较小、可靠性高,无器件老化现象。
4.精度高:16位数字系统可以达到10-5级的精度。5.可重复性好:模拟系统的性能受元器件参数性能变化的影响比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产。
6.集成方便:DSP应用系统中的数字部件有高度的规范性,便于大规模集成。
当然,数字信号处理也存在一些缺点。例如,对于简单信号处理任务,若采用DSP则使成本增加。DSP系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且DSP系统消耗的功率也较大。此外,DSP技术更新速度快,对于数学知识要求高,开发和测试工具还有待进一步完善。3.2DSP系统的设计流程
一个DSP系统的设计过程大概要有以下几个步骤。
1.根据系统的任务要求,确定系统处理精度要求、速度要求、实时性要求等性能指标。
2.根据系统的要求进行高级语言的算法模拟,比如使用MATLAB等仿真工具,验证算法的可行性,得出最佳的处理方法。
3.DSP的系统设计,主要分为硬件设计和软件设计。硬件设计是指根据系统要求选择合适的DSP芯片,然后设计相应的外围电路。软件设计主要是指根据系统的要求和选用的DSP芯片编写相应的程序。程序的编写可以使用汇编语言,汇编语言编写的程序效率高,但比较烦杂;也可采用C语言,DSP的C语言基本上是标准C语言,编写比较简单,但效率低。在实际系统开发时往往是两种语言结合编写,在算法运算量大的地方使用汇编语言,在运算量小的地方使用C语言,这样既能缩短软件的开发周期,提高程序的可读性和可移植性,又满足了系统的实时性要求。本文的设计采用汇编语言编写、设计软件程序。3.3DSP系统的开发工具CCS CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。
CCS有两种工作模式,即
软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。
CCS的开发系统主要由以下组件构成:
1.2.3.4.5.TMS320C54x集成代码产生工具; CCS集成开发环境;
DSP/BIOS实时内核插件及其应用程序接口API; 实时数据交换的RTDX插件以及相应的程序接口API; 由TI公司以外的第三方提供的各种应用模块插件。
CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:
1.具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;
2.含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;
3.高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误;
4.工程项目管理工具可对用户程序实行项目管理。在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;
5.基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;
6.断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;
7.探测点工具,可用于算法的仿真,数据的实时监视等;
8.分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;
9.数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;
10.提供GEL工具。利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等;
11.支持多DSP的调试;
12.支持RTDX技术,可在不中断目标系统运行的情况下,实现DSP与其他应用程序的数据交换;
13.提供DSP/BIOS工具,增强对代码的实时分析能力。
四、TMS320C5402的介绍
TMS320C5509采用双乘累加单元(MAC)结构。整个处理器内部分为5个大的功能单元:存储器缓冲单元(M)、指令缓冲单元(I)、程序控制单元(P)、地址生成单元(A)和数据计算单元(D),各个功能单元之间通过总线连接。TMS320C5509中共有12条总线:1条32位程序数据总线(PB),1条24位程序地址总线(PAB),5条16位的数据总线(BB、CB、DB、EB、FB)和5条24位的数据地址总线(BAB、CAB、DAB、EAB、FAB)。
作为嵌入式芯片的一种,DSP芯片是一种非常适合于进行数字信号处理的微处理器芯片,已经广泛应用于实现各种数字信号处理运算。其显著特点可以归纳如下: 1.哈佛结构
哈佛结构是不同于传统的冯·诺曼(Von Neuman)结构的并行体系结构,其主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线两条总线,从而使数据的吞吐率提高了一倍。2.流水线
与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。TMS320系列处理器的流水线深度从2-6级不等。第一代TMS320处理器采用二级流水线,第二代采用三级流水线,而第三代则采用四级流水线。也就是说,处理器可以并行处理2-6条指令,每条指令处于流水线上的不同阶段。
3.专用的硬件乘法器
在一般形式的FIR滤波器中,乘法是DSP的重要组成部分。对每个滤波器抽头,必须做一次乘法和一次加法。乘法速度越快,DSP处理器的性能就越高。在通用的微处理器中,乘法指令是由一系列加法来实现的,故需许多个指令周期来完成。相比而言,DSP芯片的特征就是有一个专用的硬件乘法器。4.特殊的DSP指令
DSP芯片的另一个特征是采用特殊的指令。例如TMS320C10中的LTD指令,可单周期完成加载寄存器、数据移动、同时累加操作。还有DMOV指令,它完成数据移位功能。在数字信号处理中,延迟操作非常重要,这个延迟就是由DMOV指令来实现的[9]。5.快速的指令周期
哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令再加上集成电路的优化设计,可使DSP芯片的指令周期缩短到200ns以下。现在,许多DSP处理器的指令周期已经从第一代的200ns降低至现在的20ns以下,甚至在10ns以内。快速的指令周期使得DSP芯片能够实时实现许多DSP应用。6.面向寄存器和累加器
DSP所使用的不是一般的寄存器文件,而是专用寄存器,较新的DSP产品都有类似于RISC的寄存器文件。许多DSP还有大的累加器,可以在异常情况下对数据溢出进行处理。7.支持前、后台处理
DSP支持复杂的内循环处理,包括建立起X、Y内存和分址/循环计数器。一些DSP在做内循环处理中把中断屏蔽了,另一些则以类似后台处理的方式支持快速中断。许多DSP使用硬连线的堆栈来保存有限的上下文,而有些则用隐蔽的寄存器来加快上下文转换时间。8.拥有简便的单片内存和内存接口
DSP设法避免了大型缓冲器或复杂的内存接口,减少了内存访问。一些DSP的内循环是在其单片内存中重复执行指令或循环操作部分代码,它多采用SRAM而不是DRAM,因为前者接口更简便。2000年3月,德州仪器(TI)公司推出了高性能低功耗的TMS320C55x芯片[10]。
其性能可以达到400-800MIPS,但功耗低到0.05 mW/MIPS。TMS320系列包括定点、浮点和多处理器等三种类型的数字信号处理器。它的结构是专门针对实时信号处理而设计的,具有指令灵活、可操作性强、速度快以及支持并行运算和C语言等特点,是性价比较高的一类DSP,在通信设备中得到了广泛的应用。C5000系列DSP是针对个人便携设备而设计的,如音乐播放器、3G蜂窝电话、数码相机、高速音频设备、高精度的信号和多通道应用。通常人们把C54x和C55x系列通称C5000系列,主要用于功耗低、便携式的无线通信终端产品。C5000系列包括旧有的C5x、当前主流的C54x和较新的C55x系列。其中,C54x采用改进的哈佛结构,并集成有丰富的硬件逻辑和外部接口资源,具有较高的性能,及较低的成本和体积。C55x是在C54x的基础上发展起来的,也采用改进型哈佛结构,其器件功耗较C54x更低,性能更高。
TMS320C55x采用多总线结构,由五组内部数据总线(3个用于读,2个用于写)和一组内部程序存储总线构成。32bit的程序总线(PB)传送从程序存储器来的指令代码和立即数。三组16bit数据读总线(BB,CB和DB)连接数据读地址产生逻辑。CB和DB总线传送双操作数。DB总线传送单操作数。BB总线提供第三种读路径并且能够提供双乘操作数的系数。两组16bit数据写总线(EB,FB)连接数据写地址产生逻辑。六组24bit数据总线(PAB,CAB,DAB,BAB,EAB,FAB)传送执行指令所需要的地址。还有一条附加总线为DMA控制器和外设控制器提供服务。
TMS320C55x的CPU结构主要包括四种功能单元:即指令缓冲单元(I单元),程序流程单元(P单元),地址数据流程单元(A单元)和数据计算单元(D单元)。其数据计算单元包括一个40bit的可以提供-32到31移位范围的桶形移位器,一个40bit的算术逻辑电路(ALU),两个乘累加器(MAC)可以在一个周期中执行两个MAC操作,以及四个40bit的累加器。在其地址数据流程单元还包括一个16bit的算术逻辑电路(ALU),为主ALU提供简单的算术运算。
55x的指令集功能强大而且使用灵活,它同时具有易于使用和程序效率高的特点。寻址方式包括绝对寻址、寄存器间接寻址、直接寻址,这些寻址方式降低了算法所需要的指令数量,减小了代码量,也提高了芯片运算速度。特别要提到的是C55x指令集中所提供的三操作数指令,这种指令可以实现3个操作数的同时处理(如写入寄存器或存储器等操作),大大压缩了代码的指令数量。
五、基于DSP的IIR程序设计及软件调试 5.1IIR程序设计 IIR.c程序
#include
#define IIRNUMBER 2 #define SIGNAL1F 1000 #define SIGNAL2F 4500 #define SAMPLEF 10000 #define PI 3.1415926
float InputWave();float IIR();
float fBn[IIRNUMBER]={ 0.0,0.7757 };float fAn[IIRNUMBER]={ 0.1122,0.1122 };float fXn[IIRNUMBER]={ 0.0 };float fYn[IIRNUMBER]={ 0.0 };float fInput,fOutput;float fSignal1,fSignal2;float fStepSignal1,fStepSignal2;float f2PI;int i;float fIn[256],fOut[256];int nIn,nOut;
main(){ nIn=0;nOut=0;fInput=fOutput=0;f2PI=2*PI;fSignal1=0.0;fSignal2=PI*0.1;// fStepSignal1=2*PI/30;// fStepSignal2=2*PI*1.4;fStepSignal1=2*PI/50;fStepSignal2=2*PI/2.5;while(1){
fInput=InputWave();
fIn[nIn]=fInput;
nIn++;nIn%=256;
fOutput=IIR();
fOut[nOut]=fOutput;
nOut++;
// break point
if(nOut>=256)
}
{
nOut=0;} }
float InputWave(){
}
float IIR(){
} float fSum;fSum=0.0;for(i=0;i } return(fSum);fSum+=(fXn[i]*fAn[i]);fSum+=(fYn[i]*fBn[i]);for(i=IIRNUMBER-1;i>0;i--){ } fXn[0]=sin((double)fSignal1)+cos((double)fSignal2)/6.0;fYn[0]=0.0;fSignal1+=fStepSignal1;if(fSignal1>=f2PI)fSignal1-=f2PI;fSignal2+=fStepSignal2;if(fSignal2>=f2PI)fSignal2-=f2PI;return(fXn[0]);fXn[i]=fXn[i-1];fYn[i]=fYn[i-1];IIR.cmd程序 -w-stack 400h-heap 100-l rts.lib MEMORY { } PAGE 0: VECT : o=80h,l=80h PRAM : o=100h,l=1f00h PAGE 1: DRAM : o=2000h,l=1000h SECTIONS { }.text : {}> PRAM PAGE 0.data : {}> PRAM PAGE 0.cinit : {}> PRAM PAGE 0.switch : {}> PRAM PAGE 0.const : {}> DRAM PAGE 1.bss : {}> DRAM PAGE 1.stack : {}> DRAM PAGE 1.vectors: {}> VECT PAGE 0 5.2软件调试结果 通过IIR滤波器前的波形 通过IIR滤波器后的波形 在效果图中,上面波形为DSP实验箱产生的滤波前的效果图,下面波形为进行IIR滤波后的效果图。从两图的比较可以看出,所设计的IIR滤波器收到了较好的效果,完成了设计要求。 在编写及调试的过程中主要遇到以下问题: (1)在编写程序的过程中要对所涉及的存储单元进行初始化,这样在数据或是代码段进行汇编时才不会出现问题。 (2)编写程序需要对数据段、代码段、堆栈段进行设置。要编写相应的.cmd(链接命令文件)文档对其进行合理化的分配空间。 (3)在编写程序时一定要编写相应的中断向量表文件,这样在汇编时才不会出错。 六、总结和心得 通过对本课题的研究,自己从中取得了一些成绩,理论水平也得到了一定的提高,同时也暴露了一些问题: 首先,对一个课题必须要阅读大量的文献和书籍来获得一定的感性认识,然后才能有自己的想法,这是一条必经之路。其次,理论基础知识很重要,论文涉及了很多的算法,会用到很多基础知识,如果用的时候再去学会浪费时间,因此要在平时注意搜集相关的资料,多学一些有用实用的技术,这样在以后的学习和工作中才能够做到游刃有余。最后,要有信心,遇到困难要向别人请教,这样可以大大加快研究进程。以上是我做论文的一些心得体会,这些对我以后的学习会有很大的帮助。 由于本人的时间和能力有限,本次的开发系统还存在一些不足之处,整个系统还需要进一步完善。文中也难免有不足之处,恳请老师批评指正。同时,对评审设计的老师表示衷心的感谢! 七、参考文献 [1]赵红怡.DSP技术与应用实例[M].电子工业出版社.2003.6.[2]胡庆钟,李小刚,吴钰淳.TMS320C55X DSP原理、应用和设计[M].机械工业出版社.2005.10.[3]丁玉美,高西全.数字信号处理[M].西安电子科技大学出版社.2006.7.[4]刘顺兰,吴杰,高西全.数字信号处理[M].西安电子科技大学出版社.2003.8. 实验三 IIR数字滤波器设计实验报告 一、实验目的: 1.通过仿真冲激响应不变法和双线性变换法 2.掌握滤波器性能分析的基本方法 二、实验要求: 1.设计带通IIR滤波器 2.按照冲激响应不变法设计滤波器系数 3.按照双线性变换法设计滤波器系数 4.分析幅频特性和相频特性 5.生成一定信噪比的带噪信号,并对其滤波,对比滤波前后波形和频谱 三、基本原理: ㈠ IIR模拟滤波器与数字滤波器 IIR数字滤波器的设计以模拟滤波器设计为基础,常用的类型分为巴特沃斯(Butterworth)、切比雪夫(Chebyshev)Ⅰ型、切比雪夫Ⅱ型、贝塞尔(Bessel)、椭圆等多种。在MATLAB信号处理工具箱里,提供了这些类型的IIR数字滤波器设计子函数。 (二)性能指标 1.假设带通滤波器要求为保留6000hz~~7000hz频段,滤除小于2000hz和大宇9000hz频段 2.通带衰减设为3Db,阻带衰减设为30dB,双线性变换法中T取1s.四、实验步骤: 1.初始化指标参数 2.计算模拟滤波器参数并调用巴特沃斯函数产生模拟滤波器 3.利用冲激响应不变法和双线性变换法求数字IIR滤波器的系统函数Hd(z) 4.分别画出两种方法的幅频特性和相频特性曲线 5.生成一定信噪比的带噪信号 6.画出带噪信号的时域图和频谱图 6.对带噪信号进行滤波,并画出滤波前后波形图和频谱图 五、实验结果 模拟滤波器的幅频特性和相频特性: 10Magnitude0-5-10101010-210-1Frequency(rad/s)100101Phase(degrees)2000-200-21010-1Frequency(rad/s)100101 在本实验中,采用的带通滤波器为6000-7000Hz,换算成角频率为4.47-0.55,在上图中可以清晰地看出到达了题目的要求。 冲击响应不变法后的幅频特性和相频特性: 0Magnitude(dB)-100-20000.10.20.30.40.50.60.70.80.91Normalized Frequency( rad/sample)Phase(degrees)5000-50000.10.20.30.40.50.60.70.80.91 Normalized Frequency( rad/sample) 双线性变换法的幅频特性和相频特性: 0Magnitude(dB)-200-400000.10.20.30.40.50.60.70.80.91Normalized Frequency( rad/sample)Phase(degrees)-500-100000.10.20.30.40.50.60.70.80.91 Normalized Frequency( rad/sample) 通过上图比较脉冲响应不变法双线性变换法的幅频特性和相频特性,而在在幅频曲线上几乎没有差别,都能达到相同的结果。 下图为直接调用matlab系统内切比雪夫滤波器得到的频谱图: 0-100Magnitude(dB)-200-300-400-50000.10.20.30.40.50.6Normalized Frequency( rad/sample)0.70.80.910-100-200Phase(degrees)-300-400-500-600-700-80000.10.20.30.40.50.6Normalized Frequency( rad/sample)0.70.80.91 比较图一得知,都能达到相同的结果。 下图为对带噪信号进行滤波前后的时域和频域图: 脉冲相应不变法: 带噪信号时域波形50-500.511.5带噪信号的频谱图150100500-422.5x 103-3-3-2-10滤波信号的时域图123x 104420-200.51滤波信号的频谱图100500-4-3-2-10123x 10441.522.5x 10-3 当经过脉冲响应不变法设计的滤波器滤波以后,在通带内的波形得到了较好的恢复。频谱图中,噪声的频谱也显著的下降。 双线性变换法: 滤波信号的时域图210-1-200.51滤波信号的频谱图1.522.5x 10-3150100中心频率f=6500Hz500-4-3-2-10123x 1044 当经过双线性变换法设计的滤波器滤波以后,在通带内的波形得到了较好的恢复。频谱图中,噪声的频谱也显著的下降,但滤波效果没有脉冲响应不变法好。 演讲稿 尊敬的老师们,同学们下午好: 我是来自10级经济学(2)班的学习委,我叫张盼盼,很荣幸有这次机会和大家一起交流担任学习委员这一职务的经验。 转眼间大学生活已经过了一年多,在这一年多的时间里,我一直担任着学习委员这一职务。回望这一年多,自己走过的路,留下的或深或浅的足迹,不仅充满了欢愉,也充满了淡淡的苦涩。一年多的工作,让我学到了很多很多,下面将自己的工作经验和大家一起分享。 学习委员是班上的一个重要职位,在我当初当上它的时候,我就在想一定不要辜负老师及同学们我的信任和支持,一定要把工作做好。要认真负责,态度踏实,要有一定的组织,领导,执行能力,并且做事情要公平,公正,公开,积极落实学校学院的具体工作。作为一名合格的学习委员,要收集学生对老师的意见和老师的教学动态。在很多情况下,老师无法和那么多学生直接打交道,很多老师也无暇顾及那么多的学生,特别是大家刚进入大学,很多人一时还不适应老师的教学模式。学习委员是老师与学生之间沟通的一个桥梁,学习委员要及时地向老师提出同学们的建议和疑问,熟悉老师对学生的基本要求。再次,学习委员在学习上要做好模范带头作用,要有优异的成绩,当同学们向我提出问题时,基本上给同学一个正确的回复。 总之,在一学年的工作之中,我懂得如何落实各项工作,如何和班委有效地分工合作,如何和同学沟通交流并且提高大家的学习积极性。当然,我的工作还存在着很多不足之处。比日:有的时候得不到同学们的响应,同学们不积极主动支持我的工作;在收集同学们对自己工作意见方面做得不够,有些事情做错了,没有周围同学的提醒,自己也没有发觉等等。最严重的一次是,我没有把英语四六级报名的时间,地点通知到位,导致我们班有4名同学错过报名的时间。这次事使我懂得了做事要脚踏实地,不能马虎。 在这次的交流会中,我希望大家可以从中吸取一些好的经验,带动本班级的学习风气,同时也相信大家在大学毕业后找到好的工作。谢谢大家! 怀化学院数学系实验报告 实验项目名称:IIR数字滤波器的设计(1) 指 导老 师: 欧卫华 学 姓 实验项目制定人:实验项目审批人: 年月日 一、实验目的掌脉冲相应不变法设计IIR-Butterworth数字滤波器的具体设计方法及原理。 二、实验原理与方法 1.确定数字滤波器的性能指标:通带临界频率fp、阻带临界频率fs;通带内的最大衰减Ap;阻带内的最小衰减As;采样周期T; 2.确定相应的数字角频率,ωp=2πfp;ωr=2πfr; 3.根据Ωp和Ωs计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函 数Ha(s); 4.用上面的脉冲响应不变法公式代入Ha(s),求出所设计的传递函数H(z); 5.分析滤波器特性,检查其是否满足指标要求。 三、实验内容及步骤 冲激响应不变法设计数字Butterworth低通滤波器 (1)、模拟滤波器的最小阶数[N,wn]=buttord(wp,ws,rp,rs,'s'); (2)、设计模拟低通滤波器原型,[z,p,k]=buttap(N); (3)、将零极点形式转换为传递函数形式,[Bap,Aap]=zp2tf(z,p,k); (4)、进行频率变换,[b,a]=lp2lp(Bap,Aap,wn); (5)用脉冲相应不变法得到数字滤波器的系统函数[bz,az]=impinvar(b,a,fs); 四、实验范例 用脉冲相应不变法设计一个Butterworth低通数字滤波器,使其特征逼近一个低通Butterworth模拟滤波器的下列性能指标,通带截止频率Wp=2*pi*2000rad/s,通带波纹Rp小于3dB,阻带边界频率为Ws=2*pi*3000rad/s阻带衰减大于15dB,采样频率Fs=10000;z,假设一个信号x(t)=sin(2*pi*f1*t) +0.5*cos(2*pi*f2*t),其中f1=1000Hz,f2=4000Hz,试将原信号与通过该滤波器的输出信号进行比较。 wp=2000*2*pi;%滤波器截止频率 ws=3000*2*pi; rp=3;rs=15;%通带波纹和阻带衰减 fs=10000;%采样频率 Nn=128; [N,wn]=buttord(wp,ws,rp,rs,'s');%模拟滤波器的最小阶数 [z,p,k]=buttap(N);%设计模拟低通滤波器原型 [Bap,Aap]=zp2tf(z,p,k);%将零极点形式转换为传递函数形式 [b,a]=lp2lp(Bap,Aap,wn);%进行频率变换 [bz,az]=impinvar(b,a,fs);%应用脉冲相应不变法得到数字滤波器的系统函数 figure(1); [h,f]=freqz(bz,az,Nn,fs);%画出数字滤波器的幅频特性和相频特性 subplot(2,1,1),plot(f,20*log10(abs(h))); xlabel('频率/Hz');ylabel('振幅/dB');grid on; subplot(2,1,2),plot(f,180/pi*unwrap(angle(h))); xlabel('频率/Hz');ylabel('振幅/^o');grid on; figure(2); f1=1000;f2=4000;%输入信号的频率 N=100;%数据长度 dt=1/fs;n=0:N-1;t=n*dt;%采样间隔和时间序列 x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t);%滤波器输入信号 subplot(2,1,1),plot(t,x),title('输入信号')%画出输入信号 %y=filtfilt(bz,az,x); y1=filter(bz,az,x);%用上面设计的滤波器对输入信号滤波 subplot(2,1,2),plot(t,y1,'r-'),title('输出信号'),xlabel('时间/s');legend('filter') 五、实验习题 用脉冲相应不变法设计一个Butterworth低通数字滤波器,通带频率为0= 六,实验结果 实验三 用双线性变换法设计IIR数字滤波器 一、实验目的 1、熟悉用双线性变换法设计IIR数字滤波器的原理与方法 2、掌握数字滤波器的计算机仿真方法 3、通过观察对实际心电图信号的滤波作用获得数字滤波的感性知识。 二、实验内容及原理 1、用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。设计指标参数为在通带内截止频率低于0.2时最大衰减小于1dB在阻带内0.3频率区间上最小衰减大于15dB。 2、以0.02为采样间隔打印出数字滤波器在频率区间0/2上的幅频响应特性曲线。 3、用所设计的滤波器对实际心电图信号采样序列进行仿真滤波处理并分别打印出滤波前后的心电图信号波形图观察总结滤波作用与效果。教材例中已求出满足本实验要求的数字滤波系统函数 31kkzHzH 3211212121kzCzBzzAzHkkk 式中 A0.09036 2155.09044.03583.00106.17051.02686.1332211CBCBCB 三、实验结果 心电图信号采样序列 0510***0455055-100-50050nxn心电图信号采样序列xn 用双线性变换法设计IIR数字滤波器一级滤波后的心电图信号 0102030405060-100-80-60-40-2002040ny1n一级滤波后的心电图信号 二级滤波后的心电图信号 0102030405060-100-80-60-40-2002040ny2n二级滤波后的心电图信号 三级滤波后的心电图信号 0102030405060-80-60-40-2002040ny3n三级滤波后的心电图信号 用双线性变换法设计IIR数 验字滤波器滤代波器的幅频响应曲线 码 00.050.10.150.20.250.30.350.40.450.5-50-40-30-20-10010w/pi20lgHjw滤波器的幅频响应曲线 四、实x-4-20-4-6-4-2-4-6-6-4-4-6-6-261280-16-38-60-84-90-66-32-4-2-***00-2-4000-2-200-2-2-2-20 n0:55 subplot111 stemnx.axis0 55-100 50 xlabeln ylabelxn title心电图信号采样序列xn N56 A0.09036 20.09036 0.09036 B1-1.2686 0.7051 B11-1.0106 0.3583 B21-0.9044 0.2155 y1filterABx n0:55 figure subplot111 stemny1.xlabeln ylabely1n title一级滤波后的心电图信号 y2filterAB1y1 n0:55 figure 用双线性变换法设计IIR数字滤波器subplot111 stemny2.xlabeln ylabely2n title二级滤波后的心电图信号 y3filterAB2y2 n0:55figure subplot111 stemny3.xlabeln ylabely3n title三级滤波后的心电图信号 A0.09036 20.09036 0.09036 B11-1.2686 0.7051 B21-1.0106 0.3583 B31-0.9044 0.2155 H1wfreqzAB1100 H2wfreqzAB2100 H3wfreqzAB3100 H4H1.H2 HH4.H3 magabsH db20log10mageps/maxmag figure subplot111 plotw/pidb axis0 0.5-50 10 xlabelw/pi ylabel20lgHjw title滤波器的幅频响应曲线 五、实验总结 双线性变换法的特点 对频率的压缩符合下列公式 11112zzTs sTsTz22 用双线性变换法设计IIR数字滤波器这样的变换叫做双线性变换。用双线性变换法来设计数字滤波器由于从s面映射到s1面具有非线性频率压缩的特点因此不可能产生频率混叠现象而且转换成的Hz是因果稳定的这是双线性变换法的最大优点。其缺点是w与之间的非线性关系直接影响数字滤波器频香逼真的模仿模拟滤波器的频响。数字滤波器的输入和输出均为数字信号通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分。数字滤波器可以通过模拟其网络传输函数进行实现。如图中所示滤波器对其高于截止频率的频段产生很高的衰减所得信号较之原信号剔除了高频的成分。 基于DSP的FFT算法实现 Realization of FFT algorithm based on DSP 艾红,常青青,邓大伟 AI Hong, CHANG Qing-qing, DENG Da-wei(北京信息科技大学自动化学院,北京 100192 摘 要:快速傅立叶变换(FFT是将信号从时域变换到频域的一种方法,广泛运用于各种信号分析领域。文中介绍了FFT算法的原理,构建了基于TMS320F2812的硬件平台,阐述了FFT算法的硬件与软件实现。利用TMS320F2812内部的ADC模块与事件管理器的定时器实现信号的实时采集,不需要使用专门的A/D转换芯片。软件上以128点FFT运算为例,在CCS环境下利用C 语言编程实现了FFT算法,程序充分利用蝶式权的周期性及FFT运算中第一级蝶式权值固定为1的特点,使得运算量与复杂度大大减小。运行结果表明TMS320F2812能够快速高效地完成FFT运算。 关键词:数字信号处理;快速傅立叶变换;信号采集 中图分类号:TP273 文献标识码:B 文章编号:1009-0134(201201(上-0017-03 Doi: 10.3969/j.issn.1009-0134.2012.01(上.07 0 引言 快速傅立叶变换(FFT在雷达、通信、电子对抗和电力系统等领域有广泛应用,特别是在电力系统的谐波检测中,FFT几乎是唯一可行的检测方法。通常提高FFT运算速度有两种途径:改进FFT 算法本身和改进运算工具。现阶段提高FFT算法本身非常困难,一般方法致力于改进运算工具。数字信号处理器DSP 是一种可编程的 高性能处理器。文中充分利用TMS320F2812 DSP强大的数据处理能力,实现了FFT运算,并提高了运算速度。系统硬件结构 系统设计以TMS320F2812处理器为核心,辅以外围电路构成。DSP负责模拟输入信号数据采集以及FFT算法实现。外围电路包括电源转换电路,时钟电路,复位电路以及外部RAM等。系统的硬件整体结构如图1所示[1]。对信号进行FFT变换,首先要对模拟信号采样将其转换为数字信号。输入的连续模拟信号经信号调理电路后输出到DSP的ADC模拟输入通道,经过ADC数据采集,模数转换的结果存放于ADC结果寄存器中。信号调理电路主要是为了信号的抗混叠滤波以及电路阻抗的匹配。信号调理电路对输入信号进行调理处理,包括信号的滤波、跟随输出以及信号的稳定。DSP 对采集的数字信号进行FFT运算处理,同时对运算结果进行相应的数据显示和数据存储。 图1 系统的硬件整体结构图 2 FFT算法原理 FFT是离散傅立叶变换(DFT的快速运算,是数字信号处理的基础。因为有些信号在时域很难看出特性,使用FFT将其变换到频域,就会很容易看出其特性。DFT算法的基本公式为[3]: 式中x(n表示时域信号,X(k表示频域信号,为运算蝶式权。 FFT算法是不断地把长序列的DFT分解成几个短序列的DFT,并利用的周期性和对称性减少DFT的运算次数。设序列x(n的长度为N(N=2M,M 为任意正整数,按n的奇偶把x(n分解成两个N/2 收稿日期:2011-08-12 基金项目:北京市教育委员会科技计划面上项目(KM200910772008 作者简介:艾红(1962-,女,四川重庆人,副教授,硕士,研究方向为检测技术与自动化装置。 点的子序列: 若 : 则 : 由此可见,若将任何一偶数点序列按下标的奇 偶性分成两个子序列,则原序列的DFT可由两子序 列的DFT线性组合得到。运算流图如图2所示。图2 运算流图 图3 蝶式运算流图 其中,A和B的距离称为翅尖距。这种方法和 直接进行DFT计算相比较,运算量减少一半。按 照这种分解运算的思想,将X1(k和X2(k继续向下 分解,直到最后变为一点序列,此时的运算量大 大减小。以8点序列X(n的FFT运算为例: 第一次分解: 第二次分解: 蝶式运算流图如图3所示。比较FFT和DFT的 运算量。假设序列点数为N,且有N=2L,当使用FFT 进行运算时,计算过程中只有蝶式运算,它的复 数乘法运算量为,复数加法运算量为;直接进行DFT运算时,复数乘 法和复数加法的运算量均为N2。由此可见,FFT运 算确实大大减小了DFT的运算量。由图3可以看出,若想得到顺序正确的频域序 列X(k,必须对时域序列进行重新排序。这里先 说明比特逆序的概念:设存储地址m,其二进制数(设m=2L为m=(m1m2m3,若有=(m3m2m1, 则称为m的L位比特逆序列。若将图4中的输入时 域序列下标转换成二进制,依次是: 000,100,010,110,001,101,011,111;而原时域序列下 标转换成二进制依次是:000,001,010,011,100,101, 110,111,将两者对比可发现,输入时域序列下标 就是原时域序列下标的比特逆序。所以FFT蝶式运 算的第一步就是对时域序列进行比特排序。3 系统软件实现以及结果分析 3.1 FFT程序实现 FFT算法主要包括比特逆序、蝶式权值的计 算、各级的蝶式运算以及FFT序列的输出。程序中 涉及到复数的运算,由于计算机无法处理复数, 故而将复数拆为实部和虚部,只需计算出实部和 虚部的数值即可。程序设计将蝶式权w[i]拆分为实 部pr[i]和虚部pi[i],将参与各级蝶式运算的序列拆 分为实部fr和虚部fi。复数进行加法运算时需将两 复数的实部与实部、虚部与虚部对应相加即可, 例如w[i]+w[i+1],所得的和的实部为pr[i]+pr[i+1], 虚部为pi[i]+pi[i+1];而复数的乘法,相对来说有 些复杂,不再是简单的虚部和实部各自相乘,例如 w[i]×w,所得的乘积的实部为pr[i]×pr+pi[i]×pi, 虚部为:(pr[i]+pi[i]×(pr+pi-(pr[i]×pr+pi[i]×pi。该程序执行的是128个点的FFT运算,共有7级蝶式 运算,每个蝶式权都可看作是的n次方, 所以在一个循环内即可计算出所有的蝶式权。每 级蝶式运算计算出新的序列值代替该级的输入序 列值,这样避免了开辟新的存储空间,有效地节 省了存储空间。 FFT算法程序设计如下所示: Uint16 ConversionCount; Uint16 px[128];Uint16 pz[128];void kfft(pr,pi,n,k,fr,fi ,l,il { Uint16 n,k,l,il;double pr[],pi[],fr[],fi [];int it,m,is,i,j,nv,l0; double p,q,s,vr,vi,poddr,poddi;for(it=0;it<=n-1;it++ { m=it;is=0;for(i=0;i<=k-1;i++ { j=m/2;is=2*is+(m-2*j;m=j;} fr[it]=pr[is];fi[it]=pi[is];//此循环为比特逆序的实现, pr、pi是原序列的实部与虚部 } //fr、fi是排完序后的序列 pr[0]=1.0;pi[0]=0.0;p=6.283185306/(1.0*n;pr[1]=cos(p;pi[1]=-sin(p;// pr是的实部,pi是的虚部 if(l!=0 pi[1]=-pi[1];for(i=2;i<=n-1;i++ { p=pr[i-1]*pr[1];q=pi[i-1]*pi[1];s=(pr[i-1]+pi[i-1]*(pr[1]+pi[1];pr[i]=p-q;pi[i]=s-p-q;} //此循环为权值运算实现 for(it=0;it<=n-2;it=it+2 //it是序列下标,在第一级蝶式运算中 //相邻的两个运算蝶下标相差2 { vr=fr[it];vi=fi [it]; fr[it]=vr+fr[it+1];//第一级蝶式运算中相邻两个数值进行加减运算 fi [it]=vi+fi [it+1];fr[it+1]=vr-fr[it+1];fi [it+1]=vi-fi [it+1];} //此循环为第一级蝶式运算,该级中的蝶式权均为1 m=n/2;nv=2; for(l0=k-2;l0>=0;l0--//除去第一级,还有六级蝶式运算 { m=m/2;nv=2*nv;// 同一级相邻的两个蝶式运算中数值的下标相差为nv for(it=0;it<=(m-1*nv;it=it+nv //it仍为数值的下标 for(j=0;j<=(nv/2-1;j++ { p=pr[m*j]*fr[it+j+nv/2];// nv/2为蝶式运算的翅间距 q=pi[m*j]*fi [it+j+nv/2];s=pr[m*j]+pi[m*j];s=s*(fr[it+j+nv/2]+fi [it+j+nv/2];poddr=p-q;poddi=s-p-q;fr[it+j+nv/2]=fr[it+j]-poddr;fi [it+j+nv/2]=fi [it+j]-poddi;r[it+j]=fr[it+j]+poddr;fi [it+j]=fi [it+j]+poddi;//计算出的新序列值代替输入序列值,节省了存储空间 }}} // fr、fi分别为计算出的FFT序列的实部和虚部 3.2 运行结果 用FFT的计算公式对单一频率的正余弦信号进行变换,可以得出单一频率的信号在频域表现为在其正负频率点上的两个脉冲。根据单频信号的这一特性可验证上述程序是否正确。将单一频率的正弦波信号接入硬件系统,打开图形观察窗口,将观察点数设置为128点,即可观察到如图4所示的波形。 图4 时域正弦波的FFT运行结果 图5 改善后的FFT运行结果 图4中上半部分波形为输入的时域正弦波,下半部分波形为经过变换后的频域波形。在图4中,由于产生的模拟信号伴有噪音,导致信号频率不单一,故而在信号的频域中,除了信号对应的频率点有脉冲外,其它频率点处也有较弱的脉冲。 对输入信号的频率进行调整,使信号的组成频率尽可能单一,可以得到更好的波形,如图5所示。可以看到在信号对应的频率点有脉冲,其它频率点的振幅为0,与理论推导结果一致,由此可验证程序设计的正确性。结论 FFT是声学、图像和信号处理等领域中一种重要的分析工具,文中阐述了硬件结构图和信号调理电路。详细介绍了FFT算法原理,采用C语言编写程序实现了FFT算法。程序运行结果表明TMS320F2812 DSP实现FFT运算速度快,精度高[4]。 参考文献: [1] 贾玮,杨录,张艳花.基于TMS320VC5416的FFT算法的实 现[J].山西电子技术,2009,2:11-13.[2] Rright Hert.Rapid algorithms of digital signal processing [M].Beijing,Electronic Industrial Press,2002.[3] 胡广书.数字信号处理[M].北京:清华大学出版社,2003.[4] 苏奎峰,吕强,耿庆锋,陈圣俭.TMS320F2812原理与开发 [M].北京:电子工业出版社,2005.2.3 反射光谱的测试 图4 ZnO纳米线阵列与原始硅片的反射光谱对比 图4是Si两种不同形貌ZnO纳米结构与原始硅片反射光谱的对比,在200-900nm波长范围内,样品C平均反射率约为5%,样品B平均反射率约为8%,均大大优于普通抛光硅片大于25%的平均反射率。样品B减反射性能略低于样品C的原因可能在于测试时入射光是垂直硅片表面人射的,相对于垂直阵列,不规则纳米结构顶部区域会使得更多的光被反射出去。结论 采用化学气相沉积的方法在p型硅片表面制备出垂直排列和不规则排列的ZnO纳米线阵列,并在此基础上制备n-ZnO纳米线/p-Si光伏器件。试验测得性能最好的器件的开路电压VOC为0.78V,短路JSC电流为6.22 mA/cm2,效率为2.6%。同时,一维结构的ZnO纳米阵列具有非常优异的减反射性能,利用这些ZnO纳米线阵列设计和制作了新型异质结纳米阵列太阳电池,其在200-900nm波长范围内,反射率约为5%。远低于原始Si片25%的反射率。 参考文献: [1] Law,M.;Greene,L.E.;Johnson,J.C.;Saykally,R.;Yang,P.D.Nat.Mater.4,455(2005.[2] Bai,X.D.;Wang,E.G.;Gao,P.X.;Wang,Z.L.Nano Lett.3,1147(2003.[3] Wang,X.D.;Zhou,J.;Lao,C.S.;Song,J.H.;Xu,N.S.;Wang,Z.L.Ad.Mater.19,1627(2007.[4] Yang,P.D.;Yan,H.Q.;Mao,S.;Russo,R.;Johnson,J.;Saykally, R.;Morris,N.;Pham,J.;He,R.R.;Choi,H.J.Ad.Funct.Mater.12,323(2002.[5] Huang,M.H.;Mao,S.;Feick,H.;Yan,H.Q.;Wu,Y.Y.;Kind,H.;Weber,E.;Russo,R.;Yang,P.D.Science.292,1897(2001.[6] Lim,J.H.;Kang,C.K.;Kim,K.K.;Park,I.K.;Hwang,D.K.;Park, S.J.Ad.Mater.18,2720(2006.[7] Wang,Z.L.;Song,J.H.Science 312,242(2006.[8] Wang,X.;Song,J.;Liu,J.;Wang,Z.L,Science.316,102(2007.[9] B.Tian,T.J.Kempa,and C.M.Lieber,Chem.Soc.Rev.38,16(2009.[10]Hu,L.;Chen,G.Nano Lett.7,3249–3252(2007.【上接第2页】第二篇:IIR数字滤波器设计实验报告
第三篇:六 数字信号处理实验报告--IIR数字滤波器设计
第四篇:《数字信号处理》实验三用双线性变换法设计IIR数字滤波器
第五篇:基于DSP的FFT算法实现概要