DSP课程设计论文Word文件下载.docx
《DSP课程设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《DSP课程设计论文Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
IIR系统的优点是实现的阶数低,对于实现相同要求的数字滤波器,FIR滤波器的阶数要比IIR滤波器的阶数高5~10倍,IIR滤波器的设计相对简单,可以由对应的模拟滤波器转换而来。
FIR系统的优点是采用递归结构,可以得到严格的线性相位,运算的误差也较小,FIR的设计比IIR要灵活。
结合IIR滤波器和FIR滤波器的优缺点,由于在APF谐波检测中的低通数字滤波器是用于通过直流,滤掉交流,对相位的要求不高,而且希望运算尽量小,因此选用IIR滤波器。
1.2设计方案详论
滤波器可广义的理解为一个信号选择系统,它让某些信号成分通过又阻止或衰减另一些成分。
在更多的情况下,滤波器可理解为选频系统,如低通、高通、带通、带阻。
滤波器可分为三种:
模拟滤波器、采样滤波器和数字滤波器。
模拟滤波器可以是由RLC构成的无源滤波器,也可以是加上运放的有源滤波器,是连续时间系统;
采样滤波器由电阻、电容、电荷转移器件、运放等组成,属于离散时间系统,幅度连续;
数字滤波器由加法器、乘法器、存储延迟单元、时钟脉冲发生器和逻辑单元等数字电路构成,精度高,稳定性好,不存在阻抗匹配问题,可以时分复用。
设计滤波器,就是要确定其传递函数,传递函数H(z)已知后,则可以确定系统的频率响应为
,其中
分别是幅频特性和相位特性。
对于无失真传输系统,有
,即
(1.1)
幅频特性为常数,信号通过系统后各频率分量的相对大小保持不变,没有幅度失真。
相位特性为线性,使对应的时域方程的时延量为常数:
,即系统对各频率分量的延迟时间相同,保证了各频率分量的相对位置不变,没有相位失真。
数字通信对相位的要求比模拟通信高许多,线性相位很重要。
数字系统描述时延的函数有两个:
群时延:
:
反映相频曲线的线性程度
相时延:
反映各频率分量在时域的相对延时。
所以无相位失真的传输条件是要具有恒群时延和恒相时延,即
=
=常数
。
数字滤波器的设计是确定其系统函数并实现的过程,一般要经如下步骤:
1、根据任务,确定性能指标。
2、用因果稳定的线性移不变离散系统函数去逼近。
3、用有限精度算法实现这个系统函数。
4、利用适当的软、硬件技术实现。
我们在这里主要讨论数字滤波器系统函数的逼近过程,包括无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器系统函数的逼近。
1.3设计工具CCS及SEED-DTK2812实验系统简介
CCS的全称是CodeComposerStudio,它是美国德州仪器公司(TexasInstrument,TI)出品的代码开发和调试套件。
TI公司的产品线中有一大块业务是数字信号处理器(DSP)和微处理器(MCU),CCS便是供用户开发和调试DSP和MCU程序的集成开发软件。
TICodeComposerStudio(CCStudio)是TI
eXpressDSPTM实时软件技术的重要组成部分,它可以使开发人员充分应用DSP的强大功能。
随着TI的TMS320C5000(C5K)和TMS320C6000(C6K)DSP平台的应用范围不断扩大,已经由其应用于下载视频流的手持因特网接入产品扩展到蜂窝通信网络和光网络的通信基础设施,eXpressDSPTM也便获得了越来越多软件工程师的青睐。
嵌入式编程人员现可利用TI的CodeComposerStudio加快优化DSP软件的速度,前瞻性的综合建议及易于使用的调整工具能够帮助开发人员简化并加速代码优化进程。
这些强大但易于使用的功能不仅能够缩短开发时间,而且能够帮助编程人员充分发挥TITMS320C6000DSP平台器件的全部潜能。
CodeComposerStudio实现了多场所的连通性,极大地改进了基于TI业界领先的TMS320C5000TM和TMS320C6000TMDSP平台单处理器或多处理器代码的开发、优化及其调试工具的性能。
先进的应用,如图像与视频、宽带接入、3G无线通信及其它一些融合高性能的技术将得益于CodeComposerStudiov3.1的可靠性及其快捷的开发时间。
对于那些希望把业界领先的C6000TMDSP平台的高性能与C5000TMDSP平台的低功耗相结合的系统开发者来说,CodeComposerStudiov3.1为使其同时调试混合多处理器成为了可能。
CodeComposerStudiov3.1还增加了实时数据交换(RTDXTM)仿真功能,可支持来自任何地方的2至50个C5000和C6000DSP器件同时运行。
此外,支持RTDX的仿真器还实现了实时DSP/BIOSTM仿真调试,该高级调试功能可以使开发人员更深入地了解DSP代码在硬件或仿真状态中的运行情况。
CodeComposerStudio™IDE提供强健、成熟的核心功能与简便易用的配置和图形可视化工具,使系统设计更快。
SEED-DTK(DSPTeachingKit)是一套可以满足大学本科、研究生和教师科研工作的综合实验设备。
SEED-DTK是我公司在总结以往产品的基础上,以独特的多DSP结构、强大的DSP主板功能、丰富的外围实验电路、精心设计的实验程序、精湛的产品工艺形成的高性能产品。
本文档主要介绍的是SEED-DTK2812实验箱,它由SEED-DEC2812板卡以及SEED-DTK_MBoard构成;
其中主控板是我公司生产的SEED-DEC2812,母板是我公司生产的SEED-DTK_MBoard板卡。
此外,该款实验箱还可配置DSK板卡、图像处理卡等多种子卡。
2系统设计
2.1IIR数字滤波器的设计方法及原理
(1)IIR滤波器直接型结构
数字滤波器的输入x[k]和输出y[k]之间的关系可以用如下常系数线性差分方程及其z变换描述。
(2.1)
系统的转移函数为
(2.2)
设N=M,则传输函数变为
(2.3)
它具有N个零点和N个极点,如果任何一个极点在Z平面单位圆外,则系统不稳定。
如果系数bj全部为0,滤波器成为非递归的FIR滤波器,这时系统没有极点,因此FIR滤波器总是稳定的。
对于IIR滤波器,有系数量化敏感的缺点。
由于系统对序列施加的算法,是由加法、延时和常系数乘三种基本运算的组合,所以可以用不同结构的数字滤波器来实现而不影响系统总的传输函数。
(2)IIR数字滤波器的设计
数字滤波器设计的出发点是从熟悉的模拟滤波器的频率响应出发,IIR滤波器的设计有两种方法:
第一种方法先设计模拟低通滤波器,然后通过频带变换而成为其他频带选择滤波器(带通、高通等),最后通过滤波器变换得到数字域的IIR滤波器。
第二种方法先设计模拟低通滤波器,然后通过滤波器变换而得到数字域的低通滤波器,最后通过频带变换而得到期望的IIR滤波器。
模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器)
为了用物理可实现的系统逼近理想滤波器的特性,通常对理想特性作如下修改:
1)允许滤波器的幅频特性在通带和阻带有一定的衰减范围,幅频特性在这一范围内允许有起伏。
2)在通带与阻带之间允许有一定的过渡带。
工程中常用的逼近方式有巴特沃斯(Butterworth)逼近、切比雪夫(Chebyshev)逼近和椭圆函数逼近。
相应设计的滤波器分别为巴特沃斯滤波器、切比雪夫滤波器和椭圆函数滤波器。
巴特沃斯滤波器的模平方函数由下式描述:
(2.4)
n为阶数;
Ωc为滤波器截止频率
切比雪夫滤波器比同阶的巴特沃斯滤波器具有更陡峭的过渡带特性和更优的阻带衰减特性。
切比雪夫低通滤波器的模平方函数定义为
(2.5)
其中,ε为决定|Hc(Ω)|等波动起伏幅度的常数;
n为滤波器的阶数;
Tn(Ω)是n
阶切比雪夫多项式。
3.本实验中IIR的算法公式:
(2.6)
(2.7)
2.2程序设计流程图
根据理论分析,我们得到了总体设计的思路和方法,根据得到的设计思路和方法,可以画出设计的流程图,流程图如图2.1所示。
图2.1程序设计流程图
2.3系统设计步骤
根据程序设计流程图的基本思想以及CCS及SEED-DTK2812试验箱的使用方法,可以按一下步骤进行系统设计和仿真。
首先做好准备工作:
(1)将DSP仿真器与计算机连接好;
(2)将DSP仿真器的JTAG插头与SEED-DEC2812单元的J1相连接;
(3)打开SEED-DTK2812的电源。
观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯以及SEED_DEC2812的电源指示灯D2是否均亮;
若有不亮的,请断开电源,检查电源。
设计步骤
(1)打开CCS,进入CCS的操作环境;
(2)装入IIR.pjt工程文件,添加2812.gel文件,开始进行调试;
(3)装载程序Filter.out;
(4)数字滤波实验都需要设置实验箱信号源。
通过液晶屏和键盘,设置信号源:
当液晶屏上出现“通讯自检不成功,请复位系统”时,按下“Enter”键,进入“信号发生器设置”。
在“信号发生器设置”这一菜单下:
“通道”设为“0”;
“信号类型”可根据需要任意选择;
“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议振幅设为1000左右,频率”设为300左右;
“电压偏移”设为1;
(注:
TMS320F2812的AD输入范围在0—3v,而SEED-DTK_MBoard板CSL初始化AD采样初始化AD采样无限冲击响应数字滤波的信号源默认输出为-1V—1V,故选择1V的电压偏移)
“信号发生器开关”设为“开启”。
此时便有信号输入音频芯片AIC23的输入端(利用此芯片同样可以进行AD采集)。
(5)打开Filter.C在第90行“for(i=0;
i<
DataLong;
i++)”,95行“adconvover=0;
”,行“adconvover=1”设置断点。
(6)运行程序到断点,观察Ad_data[]数组与filter_result[]数组的值。
其中图像显示设置对话框中Startadderss:
起始地址;
AcquisitionBufferSize:
输入数据个数;
DisplayDataSize:
显示数据个数(注意:
显示个数要与程序中宏定义的采样个数一致);
DSPDataType:
数据类型。
3仿真结果与分析
经过程序的反复修改和调试及系统的调试,基本实现了IIR滤波器的设计,测试用的波形是带噪声的方波信号,通过IIR滤波器。
分析与观察滤波前后的波形图以及滤波前后的频谱图,可以确定该IIR滤波器基本达到滤波的效果和要求。
仿真截图如下。
观察输入信号的波形图,如图3.1所示。
图3.1输入信号的波形
该波形是带有噪声的方波,不是标准的方波,波形有很多毛刺。
可以通过用FFT算法得到图3.1的频谱图,观察到输入信号的频谱图,如图3.2所示。
图3.2输入信号的频谱
带噪声的方波经过IIR滤波器后可以得到去噪声的方波,如图3.3所示。
图3.3输出信号波形
带噪声的方波经过IIR滤波器后,波形变得平滑了,取出了毛刺,基本达到滤波的要求。
带噪声的方波经过IIR滤波器滤波后得到去噪声的频谱图,如图3.4所示。
图3.4输出信号的频谱图
分析带噪声的频谱图,可以发现把后面的少的高频部分滤除掉了,剩下的频率成分较多低频部分留下,已达到波形的平滑。
基本符合理论要求,达到了滤波的效果。
4总结
在课程设计的过程中,我们经历了感动,经历了一起奋斗的酸甜苦辣。
也一起分享了成功的喜悦。
这次的课程设计对我们每个人来说都是一个挑战。
在这两周的学习中,我学到了很多,也找到了自己身上的不足。
感受良多,获益匪浅。
我们小组分工合作、齐心协力,一起完成了课程设计前的准备工作(阅读课程设计相关文档)、小组讨论分工、完成系统开发的各个文档、课程设计总结报告、在课程设计的第一天我们便对这次任务进行了规划和分工。
在以后的几天中,我们组的成员一起努力,查阅资料、小组讨论、对资料进行分析,课程设计这样集体的任务光靠团队里的一个人或几个人是不可能完成好的,合作的原则就是要利益均沾,责任公担。
如果让任务交给一个人,那样既增加了他的压力,也增大了完成任务的风险,降低了工作的效率。
所以在集体工作中,团结是必备因素,一开始我们对CCS不熟悉,后来在同学的帮助下让我顺利的完成课程设计,最后感谢老师的耐心辅导,在老师的辅导下我学会了简单的编程。
在我们大家的共同努力下,我们顺利地完成了此次课程设计。
参考文献
[1]黄席椿高顺良.滤波器综合法设计原理[M].北京:
人民邮电出版社,1978.309-316,261-270.
[2]沈永欢梁在中等.实用数学手册[M].北京:
科学出版社,2001.726-732.
[3]程佩青.数字滤波与快速傅里叶变换[M].北京:
清华大学出版社,1990.
[4]彭启琮.DSP集成开发环境——CCS及DSP/BIOS的原理与应用[M].电子工业出版社,2004.
.
致谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。
本课题在选题及进行过程中得到胡湘娟老师的悉心指导。
论文行文过程中,胡老师多次帮助我分析思路,开拓视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励。
胡老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。
再多华丽的言语也显苍白。
在此,谨向胡老师致以诚挚的谢意和崇高的敬意。
同时感谢实验室的等老师,他们给我们提供了必要的实验器材,提供了很大的方便。
我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢学院为我提供良好的做毕业设计的环境。
再一次感谢所有在设计中曾经帮助过我的良师益友和同学。
附录
源程序代码如下:
/*******************filtter.c**********************************/
#include"
DSP28_Device.h"
filter.h"
ext_inf.h"
#pragmaDATA_SECTION(iir,"
iirfilt"
);
IIR5BIQ16iir=IIR5BIQ16_DEFAULTS;
/*InstancetheFilterObjectandInitialize*/
#pragmaDATA_SECTION(iir_dbuffer,"
intiir_dbuffer[2*IIR16_LPF_NBIQ];
/*CreateDelayBuffer*/
constintiir_coeff[5*IIR16_LPF_NBIQ]=IIR16_LPF_COEFF;
unsignedintDataLong=1024;
//采样点数1024
unsignedintadconvover=0;
unsignedintconvcount=0;
unsignedintAd_data[2048]={0};
intfilter_result[1024];
unsignedinti,j;
unsignedintk=0;
interruptvoidISRTimer2(void);
interruptvoidad(void);
voidmain(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER=0x0000;
IFR=0x0000;
/*初始化PIE中断*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
//初始化cputimer
InitCpuTimers();
/*设置中断服务程序入口地址*/
EALLOW;
//ThisisneededtowritetoEALLOWprotectedregisters
PieVectTable.TINT2=&
ISRTimer2;
PieVectTable.ADCINT=&
ad;
EDIS;
//ThisisneededtodisablewritetoEALLOWprotectedregisters
/*开中断*/
IER|=M_INT1;
//ADC中断
EINT;
//EnableGlobalinterruptINTM
ERTM;
//EnableGlobalrealtimeinterruptDBGM
/*iirinit*/
iir.dbuffer_ptr=iir_dbuffer;
/*ObjectInitialization*/
iir.coeff_ptr=(int*)iir_coeff;
iir.qfmat=IIR16_LPF_QFMAT;
iir.nbiq=IIR16_LPF_NBIQ;
iir.isf=IIR16_LPF_ISF;
iir.init(&
iir);
/*设置CPU*/
ConfigCpuTimer(&
CpuTimer2,150,22);
StartCpuTimer2();
/*开中断*/
IER|=M_INT14;
InitAdc();
for(;
;
)
{
if(adconvover==1){
/*AD采样结束*/
for(i=0;
i++){
Ad_data[i]=Ad_data[i]-0x5555;
}
/*iir滤波处理*/
//iir注意input是q15,output是q14
i++){
iir.input=Ad_data[i];
iir.calc(&
filter_result[i]=iir.output>
>
1;
}
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.ADCTRL2.bit.RST_SEQ1=1;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;