基于DSP的 FIR滤波器的设计.docx
《基于DSP的 FIR滤波器的设计.docx》由会员分享,可在线阅读,更多相关《基于DSP的 FIR滤波器的设计.docx(18页珍藏版)》请在冰豆网上搜索。
基于DSP的FIR滤波器的设计
目录
摘要Ⅰ
ABSTRACTⅡ
第1章绪论1
1.1设计背景1
1.2设计要求1
1.3设计思路简介1
第2章系统开发平台与环境2
2.1CCS开发环境2
2.2SEED-DEC2812开发实验箱2
第3章FIR滤波器设计过程3
3.1FIR滤波器设计总框图3
3.2FIR滤波器设计的原理3
3.3 FIR滤波器的设计方法4
第4章系统软件设计6
4.1用MATLAB确定参数6
4.2程序流程图7
4.3程序源代码8
第5章系统仿真12
5.1仿真设置12
5.2仿真图13
总结17
参考文献18
摘要
数字滤波器是由数字乘法器、加法器和延时单元组成的一种装置。
其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
由于电子计算机技术和大规模集成电路的发展,数字滤波器已可用计算机软件实现,也可用大规模集成数字硬件实时实现。
随着DSP的广泛应用,对DSP的设计要求也逐步提高,其中滤波器的设计对DSP性能的提高有绝对性作用,在TMS320C54x系统开发环境CCS下对FIR滤波器的DSP实现原理进行讨论。
利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线观察在DSP上实现的FIR滤波器完成预定的滤波任务。
关键词:
数字滤波器;DSP;TMS320C54x;系统开发环境CCS;FIR滤波器
ABSTRACT
Thedigitalfilterareonekindofequipmentwhichbythedigitalmultiplierunit,theaccumulatorandthetimedelayunitiscomposed.Itsfunctionistoinputsthediscretesignalthenumericcodetocarryonoperationprocessing,achievesthechangesignalfrequencyspectrumthegoal.Becausetheelectronicaccountingmachinetechnologyandlargescaleintegratedcircuit'sdevelopment,thedigitalfilteravailablecomputersoftwarehasrealized,alsotheavailablelargescaleintegrationdigithardwarereal-timerealizes.AlongwiththeDSPwidespreadapplication,alsograduallyenhancestotheDSPdesignrequirements,filter'sdesignhastheabsolutequalityfunctiontotheDSPperformance'senhancement,realizestheprincipleinTMS320C54xundersystemdevelopmentenvironmentCCStoFIRfilter'sDSPtocarryonthediscussion.UsingtheClanguagedesigncorrespondingfilter,throughtheexperimentsimulation,theFIRfilterwhichrealizesonDSPcompletesthepredeterminedfiltertaskfromtheinputsignalandoutputsignal'stimedomainandthefrequencyrangecurveobservation.
keyword:
Digitalfilter;DSP;TMS320C54x;SystemdevelopmentenvironmentCCS;FIRfilter
第1章绪论
1.1设计背景
数字信号处理就是用数字信号处理器(DSP)来实现各种算法。
由于具有精度高、灵活性强等优点,已广泛应用在数字图像处理、数字通信、数字音响、声纳、雷达等领域。
而数字滤波技术又是进行数字信号处理的最基本手段之一。
它是对数字输入信号进行运算,产生数字输出信号,以改善信号品质,提取有用信息,或者把组合在一起的多个信号分量分离开来为目的。
数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。
根据其单位冲激响应函数的时域特性可分为两类:
无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。
因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。
FIR滤波器性能的好坏直接影响着DSP的运行速度和精度,对现代电子技术的发展起决定性作用,FIR滤波器的设计在以后的一段相当长的时间里将持续主导DSP,而DSP随着电子技术的不断发展,应用领域愈来愈广泛
1.2设计要求
利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用已设计好的滤波器对常用信号进行滤波处理。
1.3设计思路简介
在TMS320C54x系统开发环境CCS(CodeComposerStudio)下对FIR滤波器的DSP实现原理进行讨论。
通过MATLAB设计确定FIR滤波器系数。
利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。
第2章系统开发平台与环境
2.1CCS开发环境
CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如下图1.1所示的开发周期的所有阶段。
图2.1
2.2SEED-DEC2812开发实验箱
SEED-DECxxxx系列嵌入式DSP开发板本着模块化、总线型、开放式、系列化的设计思想,采用统一的系统结构、模块结构和机械结构,以多种典型DSP处理器构成具有标准总线和相同物理尺寸的高性能嵌入式DSP开发板。
SEED-DEC2812嵌入式DSP开发板原理框图如图1.2所示:
图2.2
第3章FIR滤波器设计过程
3.1FIR滤波器设计总框图
FIR滤波器设计总框图如图3.1所示
图3.1FIR滤波器设计总框图
3.2FIR滤波器设计的原理
设ai(i=0,1,2,…,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR滤波器的输入输出关系为:
在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。
为了使滤波器满足线性相位条件,要求其单位脉冲响应为实序列,且满足偶对称或奇对称条件即
或者
。
这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达式为
由上可见,FIR滤波器不断对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。
因此,FIR实际上是一种乘法累加运算。
对于线性相位FIR而言,利用线性相位FIR滤波器系数的对称特性,可以采用结构精简的FIR结构将乘法器数目减少一半。
FIR滤波器的结构如图3.2所示:
图3.2FIR滤波器的结构
3.3 FIR滤波器的设计方法
循环缓冲算法:
对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。
每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。
利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。
下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。
5级循环缓冲区的结构如图3.3所示,顶部为低地址。
图3.3循环缓冲区的结构
当第一次执行完
之后,间接寻址的辅助寄存器
指向x(n-4)。
然后,从I/O口输入数据x(n+1),将原来存放x(n-4)的数据存储单元改写为x(n+1)。
接着,进行第二次乘法累加运算,
,最后
指向x(n-3)。
然后从I/O口输入数据x(n+2),将原来存放x(n-4)的数据存储器单元改写为x(n+2)。
第4章系统软件设计
4.1用MATLAB确定参数
Matlab确定滤波器系数程序如下:
Clearall
b=[1,1];a=[1,0.2,-0.24];%滤波器函数系数
impulse=[1,zeros(1,9)];
h=filter(b,a,impulse);subplot(3,2,1);stem(h);%绘制脉冲响应
subplot(3,2,2);impz(b,a,10);
[h,w]=freqz(b,a);%绘制频率响应
subplot(3,2,3);plot(w,20*log10(abs(h)));%幅频曲线
subplot(3,2,5);plot(w,angle(h)*180/pi);%相频曲线
subplot(3,2,4);zplane(b,a);%零极点分布图
pd=-unwrap(angle(h))./w;
gd=grpdelay(b,a);
subplot(3,2,6);plot(w,gd,'-',w,pd,':
');
图4.1Matlab确定滤波器系数
4.2程序流程图
程序流程图如图4.2所示
图4.2程序流程图
4.3程序源代码
4.3.1FILTER.c代码:
#include"DSP28_Device.h"
#include"filter.h"
#include"ext_inf.h"
unsignedintDataLong=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中断*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
//初始化cputimer
InitCpuTimers();
/*设置中断服务程序入口地址*/
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(;;){
if(adconvover==1){
/*fir滤波处理*/
for(i=0;iAd_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)
{
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
}
4.3.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;j{
acc=0;
for(i=0;i{
if(i+j>=m)
break;
else
{
y0=(long)x[i+j]*(long)h[i];
acc=acc+y0;
}
}
*y++=(short)(acc>>s);
}
}
第5章系统仿真
5.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.2
图5.3
图5.4
3.设置实验板输入信号的参数,再运行程序得到仿真图。
5.2仿真图
(1)标准矩形波,频率为300Hz,振幅为800mV。
滤波前的波形如图5.5和图5.6,滤波后的波形如图5.7和图5.8。
图5.5
图5.6
图5.7
图5.8
(2)噪声三角波,频率为400Hz,振幅为800mV。
滤波前的波形如图5.9和图5.10,滤波后的波形如图5.11和图5.12。
图5.9
图5.10
图5.11
图5.12
总结
通过两个星期的努力,完成了本设计的工作,在设计过程中,充分的利用图书馆的资料,利用网络查看了大量相关的论文,认真地阅读、理解,做下笔记,并将书中内容加以充分利用。
通过这段时间的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
这次课程设计实现了一个简单的FIR滤波器的设计,在罗老师的精心指导和同组同学的帮助下较好的完成了课程设计的任务并达到了理想的目的。
在这里我对罗老师表示感谢,感谢她的耐心和热心。
通过这次课程设计使我对DSP芯片有了更深一步的了解,既巩固了理论知识,又提高了实践能力。
对我而言,知识上的收获重要,精神上的丰收更加可喜。
这次设计让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
参考文献
[1]高西全,丁玉美.数字信号处理教程[M].西安:
西安电子出版社,2008年.
[2]孙宗瀛,谢鸿林.TMS320C5xDSP原理设计与应用[M].北京:
清华大学出版社,2002年.
[3]乔瑞萍,崔涛,张芳娟.TMS320C54xDSP原理及应用[M].西安:
西安电子科技大学出版社,2005年.
[4]张雄伟.DSP芯片的原理与开发应用(第四版)[M].北京:
电子工业出版社,2008年.
[5]郑红.TMS320C54XDSP应用系统设计[M].北京:
北京航空航天大学出版社,2002年.