基于DSP的无限冲击响应.docx
《基于DSP的无限冲击响应.docx》由会员分享,可在线阅读,更多相关《基于DSP的无限冲击响应.docx(15页珍藏版)》请在冰豆网上搜索。
![基于DSP的无限冲击响应.docx](https://file1.bdocx.com/fileroot1/2022-11/25/1f0ef34b-fb1b-4c37-b9fe-27347632b702/1f0ef34b-fb1b-4c37-b9fe-27347632b7021.gif)
基于DSP的无限冲击响应
现代信号处理课程设计
课程设计报告
设计题目基于DSP的无限冲击响应
滤波器(IIR)系统设计
目录
第一章绪论1
1.1设计背景1
1.2课程设计的目的和意义1
1.3设计要求2
第二章系统开发平台与环境3
2.1CCS开发环境3
2.2ICETEK–F2812-A评估板4
第三章IIR滤波器设计过程6
3.1IIR滤波器设计的原理6
3.1.1数字滤波器的原理6
3.1.2低通IIR滤波器的系数确定6
3.2IIR滤波器设计总框图8
第四章系统软件设计9
4.1程序流程图9
4.2C程序源代码12
第五章系统仿真16
5.1仿真过程16
5.2仿真结果16
第六章结果分析与心得体会18
参考文献19
第一章绪论
1.1设计背景
在信号处理中,滤波占有十分重要的地位。
数字滤波是数字信号处理的基本方法。
数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320F2812作为DSP处理芯片,通过对其编程来实现IIR滤波器。
对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。
IIR滤波器的优点在于,其设计可以直接利用模拟滤波器设计的成果,因为模拟滤波器本身就是无限长冲激响应的。
通常IIR滤波器设计的过程如下:
首先根据滤波器参数要求设计对应的模拟滤波器(如巴特沃斯滤波器、切比雪夫滤波器等等),然后通过映射(如脉冲响应不变法、双线性映射等等)将模拟滤波器变换为数字滤波器,从而决定IIR滤波器的参数。
IIR滤波器的重大缺点在于,由于存在反馈其稳定性不能得到保证。
另外,反馈还使IIR滤波器的数字运算可能溢出。
FIR滤波器最重要的优点就是由于不存在系统极点,FIR滤波器是绝对稳定的系统。
FIR滤波器还确保了线性相位,这在信号处理中也非常重要。
此外,由于不需要反馈,FIR滤波器的实现也比IIR滤波器简单。
FIR滤波器的缺点在于它的性能不如同样阶数的IIR滤波器。
1.2课程设计的目的和意义
本课程设计教学所要达到的目的是:
1.掌握如何使用DSP仿真平台;
2.掌握DSP内部结构和工作原理;
3.熟悉DSP的指令系统;
4.熟悉用DSP实现各种基本算法。
通过对课程设计任务的完成,使学生理解课堂教学的理论内容,并且能够掌握和熟悉DSP的开发流程和基本的编程方法,熟悉DSP2812系列芯片,并利用CCS的开发环境进行程序设计,完成相应功能。
同时,由于设计中涉及到各种器件的使用,可以起到综合运用各种技术和知识的作用。
此外学生的实验技能、动手能力、分析问题、解决问题的能力都将得到培养,为进一步进行工程实践奠定良好的基础。
1.3设计要求
根据要求设计低通IIR滤波器
要求:
低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。
利用C语言在CCS环境中编写一个IIR滤波器程序,并能利用已设计好的滤波器对常用信号进行滤波处理。
第二章系统开发平台与环境
开发TMS320C28xx应用系统一般需要以下设备和软件调试工具:
1.通用PC一台,安装Windows9x或Windows2000或WindowsXP操作系统及常用软件。
2.TMS320C28xx评估板及相关电源。
如:
ICETEK–F2812-A评估板。
3.通用DSP仿真器一台及相关连线。
如:
ICETEK-5100USB仿真器。
4.控制对象(选用)。
如:
ICETEK-CTR控制板(在2812实验箱中已包含)。
5.TI的DSP开发集成环境CodeComposerStudio。
如:
CCS3.3。
6.仿真器驱动程序。
(见配套光盘“开发系统驱动”目录中。
)
7.实验程序及文档。
2.1CCS开发环境
CodeComposerStudio包含一整套用于开发和调试嵌入式应用的工具。
它包含适用于每个TI器件系列的编译器、源码编辑器、项目构建环境、调试器、描述器、仿真器以及多种其它功能。
CCSIDE提供了单个用户界面,可帮助用户完成应用开发流程的每个步骤。
借助于精密的高效工具,用户能够利用熟悉的工具和界面快速上手并将功能添加至他们的应用。
版本4之前的CCS均基于Eclipse开放源码软件框架。
Eclipse软件框架可用于多种不同的应用,但是它最初被开发为开放框架以用于创建开发工具。
我们之所以选择让CCS基于Eclipse,是因为它为构建软件开发环境提供了出色的软件框架,并且正成为众多嵌入式软件供应商采用的标准框架。
CCS将Eclipse软件框架的优点和德州仪器(TI)先进的嵌入式调试功能相结合,为嵌入式开发人员提供了一个引人注目、功能丰富的开发环境。
CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如下图2.1所示的开发周期的所有阶段。
图2.1开发周期
2.2ICETEK–F2812-A评估板
ICETEK–F2812-A嵌入式DSP开发板本着模块化、总线型、开放式、系列化的设计思想,采用统一的系统结构、模块结构和机械结构,以TMS320F2812处理器构成的高性能嵌入式DSP开发板。
ICETEK–F2812-A嵌入式DSP开发板原理框图如图2.2所示:
图2.2ICETEK–F2812-A评估板原理框图
ICETEK–F2812-A评估板所有的寄存器和存储器全部映射在XINTFZONE2译码的空间内,占用TMS320F2812A芯片的80000h-0FFFFFh地址单元中。
因此,如果用户需要使用DSP芯片的管脚外扩硬件设备的话,请避免使用这部分地址资源。
对于这部分地址单元,基本上分为两个部分,从80000h到0BFFFFh共256K的地址单元分配给片外扩展存储器。
这里有一个声明,一般来说,在出厂时,板上所连接的存储器一般为64K的存储器,因此这部分的实际有效内存是80000h-8FFFFh。
为了特殊的需求,这里最多可以扩展到256K的实际存储器。
从C0000h到FFFFFh是外围其他设备的寄存器接口,这里包含一个12位的模数转换器DAC7528,以及四位的状态显示数码管和四位可读入数字量的开关。
使用这些存储器的注意事项有:
1存储器不能任意调整
2保留区为今后的扩展做准备,用户应用不应该访问这些区域
3启动代码和片外扩展空间7依赖MP/MC引脚的状态来选择其中之一,不能同时映射到DSP的地址空间中
4外设寄存器组0、1和2仅仅作为数据存储器访问,不能作为程序存储器访问。
5保护表示为了配合流水线的工作在读操作之后的写操作将会被妥善的处理,
6一部分存储器被EALLOW保护,(参见TMS320F2812数据手册)是不希望在初始化之后再次改变他们的值
7片外空间0和1,6和7共享相同的片选信号,因此,他们虽然地址不同,但却是相同存储器的镜像(mirroredlocations)。
第三章IIR滤波器设计过程
3.1IIR滤波器设计的原理
3.1.1数字滤波器的原理
由于奈奎斯特采样定理(en:
Nyquistsamplingtheorem),数字滤波器的处理能力受到系统采样频率的限制。
如果输入信号的频率分量包含超过滤波器1/2采样频率的分量时,数字滤波器因为数字系统的“混叠”而不能正常工作。
如果超出1/2采样频率的频率分量不占主要地位,通常的解决办法是在模数转换电路之前放置一个低通滤波器(即抗混叠滤波器)将超过的高频成分滤除。
否则就必须用模拟滤波器实现要求的功能。
线性移不变的数字滤波器包括无限长脉冲响应滤波器(IIR滤波器)和有限长脉冲响应滤波器(FIR滤波器)两种。
这两种滤波器的系统函数可以统一以Z变换表示为:
当
时,M就是IIR滤波器的阶数,表示系统中反馈环的个数。
由于反馈的存在,IIR滤波器的脉冲响应为无限长,因此得名。
若A(z)=1,则系统的脉冲响应的长度为N+1,故而被称作FIR滤波器。
3.1.2低通IIR滤波器的系数确定
要求:
低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。
设计:
1确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。
模拟边缘频率为:
fp1=1000Hz,fs1=12000Hz
阻带边缘衰减为:
-20logδs=30dB
2用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。
Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度
Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度
3计算预扭曲模拟频率以避免双线性变换带来的失真。
由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒。
wp1=2fstan(Ωp1/2)=6316.5弧度/秒
ws1=2fstan(Ωs1/2)=794727.2弧度/秒
4由已给定的阻带衰减-20logδs确定阻带边缘增益δs。
因为-20logδs=30,所以logδs=-30/20,δs=0.03162
5计算所需滤波器的阶数:
因此,一阶巴特沃斯滤波器就足以满足要求。
6一阶模拟巴特沃斯滤波器的传输函数为:
H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)
由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:
因此,差分方程为:
y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]
3.2IIR滤波器设计总框图
IIR滤波器设计总框图如图3.1所示
图3.1IIR滤波器设计总框图
第四章系统软件设计
4.1程序流程图
1程序采用标准C的sin函数和cos函数生成波形。
波形发生的程序流程图如下:
图4.1
2IIR滤波的程序流程图如下:
图4.2
3程序总体流程图:
图4.3程序流程总图
4.2C程序源代码
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
#include"f2812a.h"
#include"math.h"
#defineIIRNUMBER2
#defineSIGNAL1F1000
#defineSIGNAL2F4500
#defineSAMPLEF10000
#definePI3.1415926
floatInputSquareWave();//方波生成函数
floatInputSinWave();//正弦波生成函数
floatIIR();
floatfBn[IIRNUMBER]={0.0,0.7757};/*一阶模拟巴特沃斯滤波器差分方程系数*/
floatfAn[IIRNUMBER]={0.1122,0.1122};
floatfXn[IIRNUMBER]={0.0};
floatfYn[IIRNUMBER]={0.0};
floatfInput,fOutput;
floatfSignal1,fSignal2;
floatfStepSignal1,fStepSignal2;//步长因子
floatf2PI;
inti,flag;
floatfIn[256],fOut[256];
intnIn,nOut;
main(void)
{
nIn=0;nOut=0;flag=1;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=PI*0.1;
fStepSignal1=2*PI/50;
fStepSignal2=2*PI/2.5;
while
(1)
{
fInput=InputSinWave();//输入波形
fIn[nIn]=fInput;
nIn++;nIn%=256;
fOutput=IIR();//调用iir滤波函数
fOut[nOut]=fOutput;//输出波形
nOut++;
if(nOut>=256)
{
nOut=0;/*请在此句上设置软件断点*/
}
}
}
floatInputSinWave()
{
for(i=IIRNUMBER-1;i>0;i--)
{
fXn[i]=fXn[i-1];
fYn[i]=fYn[i-1];
}
fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;
fYn[0]=0.0;
fSignal1+=fStepSignal1;
if(fSignal1>=f2PI)fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if(fSignal2>=f2PI)fSignal2-=f2PI;
return(fXn[0]);
}
floatInputSquareWave()
{
for(i=IIRNUMBER-1;i>0;i--)
{
fXn[i]=fXn[i-1];
fYn[i]=fYn[i-1];
}
if(flag==1)fXn[0]=1+cos(fSignal2)/10.0;
elsefXn[0]=-1+cos(fSignal2)/10.0;
fYn[0]=0.0;
fSignal1+=fStepSignal1;
if(fSignal1>=PI){fSignal1-=PI;flag=-flag;}
fSignal2+=fStepSignal2;
if(fSignal2>=f2PI)fSignal2-=f2PI;
return(fXn[0]);
}
floatIIR()
{
floatfSum;
fSum=0.0;
for(i=0;i{
fSum+=(fXn[i]*fAn[i]);
fSum+=(fYn[i]*fBn[i]);
}
return(fSum);
}
第五章系统仿真
5.1仿真过程
1实验准备
-设置软件仿真模式,启动CCS
2编译并下载程序
3打开观察窗口:
*选择菜单View->Graph->Time/Frequency…,进行设置
4清除显示:
在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。
5设置断点:
在程序iir.c中有注释“/*请在此句上设置软件断点*/”的语句上设置软件断点。
6运行并观察结果
(1)选择“Debug”菜单的“RUN”项,或按F5键运行程序。
(2)观察“IIR”窗口中时域图形;观察滤波效果。
(由于实验运算复杂,需要等一会才能看到运行完结果。
)
5.2仿真结果
1输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。
如下图:
图5.1正弦波的滤波仿真图
2输入波形为一个低频率的方波与一个高频的余弦波叠加而成,如下图:
第六章结果分析与心得体会
通过观察频域和时域图,得知:
输入波形中的低频波形通过率滤波器,而高频波形责备衰减;正弦波的滤波效果比方波的滤波效果明显。
要改善对方波的滤波效果,可以尝试使用二阶巴特沃斯滤波器,计算系数并修改IIR()函数。
IIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。
IIR滤波器性能的好坏直接影响着DSP的运行速度和精度,对现代电子技术的发展起决定性作用,IIR滤波器的设计在以后的一段相当长的时间里将持续主导DSP,而DSP随着电子技术的不断发展,应用领域愈来愈广泛。
这次课程设计实现了一个简单的IIR滤波器的设计,在熊老师和吴老师老师的精心指导和帮助以及自己上网查找资料,较好的完成了课程设计的任务并达到了理想的目的。
通过这次课程设计使我对DSP芯片有了更深一步的了解,也不断的强化了自己的基础知识。
参考文献
[1]程佩青.数字信号处理教程[M].北京:
清华大学出版社,1999年
[2]张雄伟.DSP芯片的原理与开发应用(第三版)[M].北京:
电子工业出版社,2003年
[3]瑞泰创新.TMS320F2812实验指导书v3.3
[4]苏奎峰.TMS320X281xDSP原理及C程序开发北京:
北京航空航天大学出版社,2008年