DSP课程设计-fir数字滤波器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录第1章绪论..............................................11.1设计背景.............................................11.2设计要求.............................................11.3设计思路简介.........................................1第2章系统开发平台与环境.................................21.1CCS开发环境.........................................22.2SEED-DEC2812开发实验箱..............................2第3章FIR滤波器设计过程...............................33.1FIR滤波器设计总框图.................................33.2FIR滤波器设计的原理.................................43.3FIR滤波器的设计方法.......................................................5第4章系统软件设计.......................................54.1程序流程图...........................................64.2程序源代码...........................................6第5章系统仿真..........................................115.1仿真设置............................................125.2仿真图..............................................13第6章总结..............................................171参考文献.................................................18第1章绪论1.1设计背景在信号处理中,滤波占有十分重要的地位。数字滤波是数字信号处理的基本方法。数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C54X作为DSP处理芯片,通过对其编程来实现FIR滤波器。对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。但是FIR系统有自己突出的优点:①系统总是稳定的;②易实现线性相位;③允许设计多通带(阻带)滤波器。其中后两项是IIR系统不易实现的。1.2设计要求利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用已设计好的滤波器对常用信号进行滤波处理。1.3设计思路简介在TMS320C54x系统开发环境CCS(CodeComposerStudio)下对FIR滤波器的DSP实现原理进行讨论。利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。2第2章系统开发平台与环境1.1CCS开发环境CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS支持如下图1.1所示的开发周期的所有阶段。图1.12.2SEED-DEC2812开发实验箱SEED-DECxxxx系列嵌入式DSP开发板本着模块化、总线型、开放式、系列化的设计思想,采用统一的系统结构、模块结构和机械结构,以多种典型DSP处理器构成具有标准总线和相同物理尺寸的高性能嵌入式DSP开发板。SEED-DEC2812嵌入式DSP开发板原理框图如图1.2所示:设计概念性规划编程和编译创建工程文件、编写源代码和配置文件调试语法检查、探测点设置和日志保存等分析实时调试、统计和跟踪3图1.2第3章FIR滤波器设计过程3.1FIR滤波器设计总框图FIR滤波器设计总框图如图3.1所示4开始初始化DSP产生输入数据读入新数据并存放到栈顶滤波处理保存滤波结果到输出单元待滤波的样本点数处理完成结束否是图3.1FIR滤波器设计总框图3.2FIR滤波器设计的原理设ai(i=0,1,2,…,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR滤波器的输入输出关系为:FIR滤波器的结构如图3.2所示:51z1z1z1za0a12Na1NaX(n)X(n-1)X(n-2)X(n-N+1)y(n)图3.2FIR滤波器的结构3.3FIR滤波器的设计方法循环缓冲算法:对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。5级循环缓冲区的结构如图3.3所示,顶部为低地址。x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n)x(n-1)x(n-2)x(n-3)x(n+1)x(n)x(n-1)x(n-2)x(n-2)x(n-1)数据存储器数据存储器数据存储器顶部底部图3.3循环缓冲区的结构当第一次执行完40)()(iiinxany之后,间接寻址的辅助寄存器xAR指向x(n-4)。然后,从I/O口输入数据x(n+1),将原来存放x(n-4)的数据存储单元改写为x(n+1)。接着,进行第二次乘法累加运算,40)1()1(iiinxany,最后xAR指向x(n-3)。然后从I/O口输入数据x(n+2),将原来存放x(n-4)的数据存储器单元改写为x(n+2)。第4章系统软件设计64.1程序流程图程序流程图如图4.1所示初始化系统关中断初始化PIE中断初始化PIE中断矢量表初始化cputimer设置中断服务程序入口地址开中断设置CPU开中断fir滤波处理结束图4.1程序流程图4.2程序源代码74.2.1FILTER.c代码:#includeDSP28_Device.h#includefilter.h#includeext_inf.hunsignedintDataLong=1024;unsignedinti,j;unsignedintk=0;unsignedshortAd_data[2048];shortAd_data_signed[2048];shortfilter_result[1024];unsignedintconvcount=0;volatileunsignedintadconvover=0;interruptvoidISRTimer2(void);interruptvoidad(void);voidmain(void){/*初始化系统*/InitSysCtrl();/*关中断*/DINT;IER=0x0000;IFR=0x0000;/*初始化PIE中断*/8InitPieCtrl();/*初始化PIE中断矢量表*/InitPieVectTable();//初始化cputimerInitCpuTimers();/*设置中断服务程序入口地址*/EALLOW;PieVectTable.TINT2=&ISRTimer2;PieVectTable.ADCINT=&ad;EDIS;/*开中断*/IER|=M_INT1;//ADC中断EINT;ERTM;/*设置CPU*/DINT;ConfigCpuTimer(&CpuTimer2,150,22);StartCpuTimer2();/*开中断*/IER|=M_INT14;EINT;InitAdc();for(;;){9if(adconvover==1){/*fir滤波处理*/for(i=0;iDataLong;i++)Ad_data_signed[i]=(short)(Ad_data[i]-0x5300);fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR);adconvover=0;}}}interruptvoidad(void){IFR=0x0000;PieCtrl.PIEACK.all=0xffff;if(adconvover==0){Ad_data[convcount]=AdcRegs.RESULT0;convcount++;}if(convcount==DataLong){convcount=0;adconvover=1;//接满标志}}interruptvoidISRTimer2(void)10{AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;}4.2.2FIR_filter.c代码://constshortx[]:输入信号的缓冲数组,short类型//constshorth[]:滤波器的系数数组,short类型//shorty[]:输出信号的缓冲数组,short类型//n:滤波器长度//m:输入信号的长度,即x[]的长度//s:生成整型的滤波器系数时使用的移位数目voidfir_filter(constshortx[],constshorth[],shorty[],intn,intm,ints){inti,j;longy0;longacc;_nassert(m=16);_nassert(n=16);for(j=0;jm;j++){acc=0;for(i=0;in;i++){if(i+j=m)break;else{y0=(long)x[i+j]*(long)h[i];acc=acc+y0;11}}*y++=(short)(accs);}}第5章系统仿真125.1仿真设置1.fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR)和adconvover=0处设置断点2.在GraphPropertyDialog中设置StartAddress和DisplayType如图5.1、图5.2、图5.3、图5.4图5.1图5.213图5.3图5.43.设置实验板输入信号的参数,再运行程序得到仿真图。5.2仿真图(1)标准矩形波,频率为300Hz,振幅为800mV。滤波前的波形如图5.5和图5.6,滤波后的波形如图5.7和图5.8。14图5.5图5.6图5.715图5.8(2)噪声三角波,频率为400Hz,振幅为800mV。滤波前的波形如图5.9和图5.10,滤波后的波形如图5.11和图5.12。图5.9图5.1016图5.11图5.1217第6章总结FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。FIR滤波器性能的好坏直接影响着DSP的运行速度和精度,对现代电子技术的发展起决定性作用,FIR滤波器的设计在以

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功