DSP论文TMS320C2812来实现了FIR数字滤波.docx
- 文档编号:18530428
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:13
- 大小:115KB
DSP论文TMS320C2812来实现了FIR数字滤波.docx
《DSP论文TMS320C2812来实现了FIR数字滤波.docx》由会员分享,可在线阅读,更多相关《DSP论文TMS320C2812来实现了FIR数字滤波.docx(13页珍藏版)》请在冰点文库上搜索。
DSP论文TMS320C2812来实现了FIR数字滤波
摘要
随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为主流技术,它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛。
同时DSP(数字信号处理器)的出现和FPGA的迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。
本课题主要应用MATLAB软件设计FIR数字滤波器的系数,用这些系数设计FIR滤波器并用编程仿真;应用DSP集成开发环境CCS调试程序,用TMS320C2812来实现了FIR数字滤波。
具体工作包括:
对FIR数字滤波器的基本理论进行了分析和探讨;采用MATLAB软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对FIR低通数字滤波器进行前期的设计和仿真;系统介绍了TI公司数字信号处理器的硬件结构、性能特点和DSP的集成开发环境CCS;应用DSP集成开发环境用CCS调程序,用TMS320C2812来实现了FIR数字滤波。
关键词:
数字滤波器,DSP,FIR,MATLAB
1绪论
在信号处理中,滤波占有十分重要的地位。
数字滤波是数字信号处理的基本方法。
数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。
DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C2812作为DSP处理芯片,通过对其编程来实现FIR滤波器。
对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。
由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。
但是FIR系统有自己突出的优点:
①系统总是稳定的;②易实现线性相位;③允许设计多通带(阻带)滤波器。
其中后两项是IIR系统不易实现的。
利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用已设计好的滤波器对常用信号进行滤波处理。
2系统开发平台与环境
CCS开发环境
CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如下图2.1所示的开发周期的所有阶段。
图2.1
DSP开发实验箱
DSP开发箱本着模块化、总线型、开放式、系列化的设计思想,采用统一的系统结构、模块结构和机械结构,以多种典型DSP处理器构成具有标准总线和简单发动机相同物理尺寸的高性能嵌入式DSP开发板。
3FIR滤波器设计过程
FIR滤波器设计总框图
FIR滤波器设计的原理
设ai(i=0,1,2,…,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR滤波器的输入输出关系为:
图3.2
FIR滤波器的设计方法
循环缓冲算法:
对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。
每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。
利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。
下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。
5级循环缓冲区的结构如图3.3所示,顶部为低地址。
图3.3
4程序流程图
图4.1
5编写程序并仿真
滤波器计算函数如下
floatFIR()
{
floatfSum;
fSum=0;
for(i=0;i { fSum+=(fXn[i]*fHn[i]); } return(fSum); } 仿真结果 输入信号 图5.2-1 输出信号 图5.2-2 输入的信号是10-100Hz与1k-10kHz信号的相加,经过滤波只输出了10-100Hz的信号,而较高频率的信号被滤除。 效果理想。 6总结 FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。 FIR滤波器性能的好坏直接影响着DSP的运行速度和精度,对现代电子技术的发展起决定性作用,FIR滤波器的设计在以后的一段相当长的时间里将持续主导DSP,而DSP随着电子技术的不断发展,应用领域愈来愈广泛。 这次课程设计实现了一个简单的FIR滤波器的设计,在罗老师的精心指导和帮助以及自己上网查找资料,较好的完成了课程设计的任务并达到了理想的目的。 在这里我对罗老师表示感谢,感谢她的耐心和热心。 通过这次课程设计使我对DSP芯片有了更深一步的了解,也不断的强化了自己的基础知识。 7参考文献 [1]程佩青.数字信号处理教程[M].北京: 清华大学出版社,1999年 [2]孙宗瀛,谢鸿林.TMS320C5xDSP原理设计与应用[M].北京: 清华大学出版社,2002年 [3]乔瑞萍,崔涛,张芳娟.TMS320C54xDSP原理及应用[M].西安: 西安电子科技大学出版社,2005年 [4]张雄伟.DSP芯片的原理与开发应用(第三版)[M].北京: 电子工业出版社,2003年 [5]郑红.TMS320C54XDSP应用系统设计[M].北京: 北京航空航天大学出版社,2002年 8 附录 #include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile #include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile #include"f2812a.h" #include #defineFIRNUMBER25 //函数声明 interruptvoidadc_isr(void); floatFIR(); floatfHn[FIRNUMBER]={ 0.00218610509217333,0.0236189556168884, 0.0173400056226900,0.0245021776420168,0.0308889378060406, 0.0376418229431873,0.0443551828218174,0.0507147318524124, 0.0564451660108467,0.0612310430334062,0.0648493648656627, 0.0671115426557053,0.0678704755615346,0.0671115426557053, 0.0648493648656627,0.0612310430334062,0.0564451660108467, 0.0507147318524124,0.0443551828218174,0.0376418229431873, 0.0308889378060406,0.0245021776420168,0.0173400056226900, .023********* }; //定义全局变量 Uint16Voltage; floatshurudeshijiedianya; floatADCLO=0;//ADC转换的参考电平为0 floatfXn[FIRNUMBER]={0.0}; floatfOutput; inti; floatfOut[256],fIn[256]; intnIn,nOut; main() { InitSysCtrl();//初始化cpu DINT;//关中断 InitPieCtrl();//初始化pie寄存器 IER=0x0000;//禁止所有的中断 IFR=0x0000; InitPieVectTable();//初始化pie中断向量表 EALLOW;//ThisisneededtowritetoEALLOWprotectedregister PieVectTable.ADCINT=&adc_isr;//将中断入口地址赋给中断向量表中对应的位置 EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters AdcRegs.ADCTRL1.bit.RESET=1;//ResettheADCmodule asm("RPT#10||NOP");//Mustwait12-cycles(worst-case)forADCresettotakeeffect AdcRegs.ADCTRL3.all=0x00C8;//firstpower-uprefandbandgapcircuits AdcRegs.ADCTRL3.bit.ADCBGRFDN=0x3;//Powerupbandgap/referencecircuitry AdcRegs.ADCTRL3.bit.ADCPWDN=1;//PoweruprestofADC //设置EVA //AssumesEVAClockisalreadyenabledinInitSysCtrl(); EvaRegs.T1CON.bit.TMODE=2;//计数模式为连续增计数 EvaRegs.T1CON.bit.TPS=1;//T1CLK=HSPCLK/2=37.5MHz EvaRegs.T1CON.bit.TENABLE=0;//暂时禁止T1计数 EvaRegs.T1CON.bit.TCLKS10=0;//使用内部时钟 EvaRegs.GPTCONA.bit.T1TOADC=2;//周期中断启动ADC EvaRegs.EVAIMRA.bit.T1PINT=1;//使能定时器T1的周期中断 EvaRegs.EVAIFRA.bit.T1PINT=1;//清除定时器T1的周期中断标志 EvaRegs.T1PR=0x1D4B;//周期为0.2ms,计算公式为T=(T1PR+1)/(TCLK*10^6) EvaRegs.T1CNT=0;//初始化计数寄存器 //设置ADC AdcRegs.ADCTRL3.bit.ADCCLKPS=15;//ADCLK=HSPCLK/30 AdcRegs.ADCMAXCONV.all=0x0000;//最大转换1个通道 AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//选择采样通道0 AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;//允许EVA触发启动SEQ1/SEQ AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;//使能SEQ1的中断请求 //EnableADCINTinPIE PieCtrlRegs.PIEIER1.bit.INTx6=1; IER|=M_INT1;//开CPU中断 EINT;//使能全局中断 ERTM;//使能实时中断 EvaRegs.T1CON.bit.TENABLE=1;//启动T1计数 //WaitforADCinterrupt while (1) { } } interruptvoidadc_isr(void) { Voltage=AdcRegs.ADCRESULT0>>4;//将采样得到的数据右移4位,如果不移,实际采样值计算公式不同下 shurudeshijiedianya=(float)(Voltage)/4095*3+ADCLO;//采样 for(i=FIRNUMBER-1;i>0;i--) fXn[i]=fXn[i-1]; fXn[0]=shurudeshijiedianya;//将最新采样得到的实际值放入fXn[0] fIn[nIn]=shurudeshijiedianya; nIn++; if(nIn>=256) { nIn=0;/*请在此句上设置软件断点*/ } fOutput=FIR(); fOut[nOut]=fOutput; nOut++; if(nOut>=256) { nOut=0;/*请在此句上设置软件断点*/ } //下面的变量在"f2812a.h"已经定义 DA_DATA_L=Voltage&0xff;//第一通道da数据输出量低8位 DA_DATA_H=((Voltage>>8)&0x0f)|DA_CHN1;//第一通道da数据输出量高8位和通道号1 DA_CTL=0; //ReinitializefornextADCsequence AdcRegs.ADCTRL2.bit.RST_SEQ1=1;//复位序列发生器 AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;//清除ADC中断 PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;//响应PIE同组中断 EINT;//使能全局中断 return; } floatFIR() { floatfSum; fSum=0; for(i=0;i { fSum+=(fXn[i]*fHn[i]); } return(fSum); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 论文 TMS320C2812 实现 FIR 数字 滤波
![提示](https://static.bingdoc.com/images/bang_tan.gif)