无限冲激响应滤波器IIR算法硬件实现DSP论文.docx

上传人:b****8 文档编号:23648380 上传时间:2023-05-19 格式:DOCX 页数:21 大小:663.99KB
下载 相关 举报
无限冲激响应滤波器IIR算法硬件实现DSP论文.docx_第1页
第1页 / 共21页
无限冲激响应滤波器IIR算法硬件实现DSP论文.docx_第2页
第2页 / 共21页
无限冲激响应滤波器IIR算法硬件实现DSP论文.docx_第3页
第3页 / 共21页
无限冲激响应滤波器IIR算法硬件实现DSP论文.docx_第4页
第4页 / 共21页
无限冲激响应滤波器IIR算法硬件实现DSP论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

无限冲激响应滤波器IIR算法硬件实现DSP论文.docx

《无限冲激响应滤波器IIR算法硬件实现DSP论文.docx》由会员分享,可在线阅读,更多相关《无限冲激响应滤波器IIR算法硬件实现DSP论文.docx(21页珍藏版)》请在冰豆网上搜索。

无限冲激响应滤波器IIR算法硬件实现DSP论文.docx

无限冲激响应滤波器IIR算法硬件实现DSP论文

摘要

20世纪60年代以来,随着大规模集成电路、数字计算机等信息技术的飞速发展,数字信号处理(DigitalSignalProcessing,DSP)技术应运而生并得到快速发展。

在过去的20多年时间里,DSP在理论和应用方面不断地进步和完善,在越来越多的应用领域中迅速取代传统的模拟信号处理方法,并开辟出出许多新的应用领域。

目前数字信号处理技术已经在通信、雷达、航空航天、工业控制、生物医学控制、生物医学工程、网络及家电领域得到极为广泛的应用,数字化时代正在到来。

1928年,美国德州仪器公司(TexasInstrumentsIncorporation,简称TI公司)推出该公司的第一款DSPs芯片,很快DSPs芯片就以其数字器件特有的稳定性、可重复性、可大规模集成和易于实现DSP算法等优点,为数字信号处理技术带来了更大的发展和应用前景。

采用各种类型DSPs实现系统的数字化处理和控制已经成为未来发展的趋势,并且睡着DSPs运算能力的不断提高,数字信号处理的研究重点由最初的非实用转向高速实时应用。

本文主要是应用TI公司生产的一款芯片TMS320F2812DSPs来实现无限冲击响应滤波器(IIR)算法。

本文的主要工作可归结如下:

1、介绍无限冲激响应滤波器(IIR)实现的原理。

2、详细分析无限冲激响应滤波器(IIR)算法。

3、画出无限冲激响应滤波器(IIR)实现的硬件框图及软件流程图。

4、实验调试过程及步骤。

5、分析在CCS软仿真及硬仿真环境下实验结果。

6、反汇编一个小程序及对DSPs实现IIR算法理解。

7、对学习DSPs理论课及做实验的心得体会。

通过软件仿真及硬件实现结果表明,用DSPs实现无限冲激响应滤波器(IIR)算法能够很好的达到预期的效果。

关键词:

IIR,,DSPs,无限冲激响应,CCS,滤波器

引言

硬件实现无限冲激响应滤波器(IIR)算法有多种方法,本文介绍用TI公司生产的一款芯片TMS320F2812DSPs来实现无限冲激响应滤波器(IIR)算法,其中涉及无限冲激响应滤波器(IIR)算法软件仿真和硬件实现。

通过实验分析,我们可以看出实验结果和理论结果符合的很好,因此MS320F2812DSPs可以很好的实现无限冲激响应滤波器的滤波特性。

实验原理

1、无限冲激响应数字滤波器的理论基础。

2、模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝赛尔滤波器)。

3、数字滤波器系数的确定方法。

4、根据要求设计低通IIR滤波器

要求:

低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30的dB,采样频率25kHz。

设计:

-确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。

模拟边缘频率为:

fp1=1000kHz,fs1=12000kHz,阻带边缘衰减为:

-20logδsdB=30dB。

-用Ω=2лf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1,Ωs1

Ωp1=2лfp1/fs1=2л1000/25000=0.08л弧度

Ωs1=2лfs1/fs=2л12000/25000=0.96л弧度

-计算预扭曲线模拟频率以避免双线性变换带来的失真。

由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒

wp1=2fstan(Ωp1/2)=6316.5弧度/秒

ws1=2fstan(Ωs1/2)=794727.2弧度/秒

-由已给定的阻带衰减-20logδsdB确定阻带边缘增益δs。

因为-20logδsdB=30dB,所以logδs=-30/20,δs=0.03162

-计算所需滤波器阶数:

因此,一阶巴特沃斯滤波器就满足要求。

-一阶巴特沃斯滤波器的传输函数为:

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].

 

硬件框图

 

因此,差分方程为:

y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1].

硬件框图

 

F2812-A评估板原理图

 

实验中用到的主要硬件模块

软件流程图

 

 

 

 

 

调试过程和步骤

1.实验准备

(1)连接实验设备。

(2)准备信号源进行AD输入。

1)取出2根实验箱附带的信号线。

2)用1根信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCIN0”插座,注意插头要插牢、到底。

这样,信号源波形输出A的输出波形即可送到ICETEK-F2812A板的AD输入通道0.

3)用1根信号线连接实验箱左侧信号源的波形输出B端口和“A/D输入”模块的“ADCIN1”插座,注意插头要插牢、到底。

这样,信号源波形输出A的输出波形即可送到ICETEK-F2812A板的AD输入通道1.

4)设置波形输出A:

-向内侧按波形频率选择按钮,直到标有正弦波的指示灯亮。

-上下调节波形频率选择按钮,直到标有100-1KHz的指示灯亮。

-调节幅值调整旋钮,将波形输出A的幅值调到适当位置。

5)设置波形输出B:

-向内侧按波形频率选择按钮,直到标有正弦波的指示灯亮。

-上下调节波形频率选择按钮,直到标有1K-10KHz的指示灯亮。

-调节幅值调整旋钮,将波形输出B的幅值调到适当位置。

注意:

由于模数输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在0—3V之间。

必须用示波器检测信号范围,保证最小值0V,最大值3V,否则容易损坏DSP芯片的模数采集模块。

2.设置CodeComposerStudio2.21在硬仿真(Emulator)方式下运行。

3.启动CodeComposerStudio2.21

选择菜单Debug->ResetCPU。

4.打开工程文件

工程目录:

D:

\dsp\t8\mixeiir\mixeriir.pjt

5.编译、下载程序,选择菜单Debug->GoMain,使程序运行到main函数的入口位置。

6.观察窗口

-打开IIR.c,查看源代码。

7.观察程序运行结果

按CTR控制板的K6键,实现滤波显示,K7键实现混频显示,按K8键实现A、B两信号源分屏显示。

8.观察动态效果,调节信号源输出,观察滤波器输出,改变信号源输入的波形、频率参数,观察动态效果。

9.退出CCS。

 

实验结果

一、软仿真环境下的实验结果

 

1.作如下设置及得到的波形图

图1

 

2.作如下设置得到的波形图

 

图2

 

3.作如下设置得到的波形图

 

图3

 

4.作如下设置得到的波形图

 

图4

 

4.把四幅图片放着一起比较如下

 

图5

二、硬仿真环境下的实验结果

1.按CTR控制板的K6键观察到的波形

 

图6

2.按K7键观察到的波形

图7

3.按K8键观察到的波形

图8

实验结果分析

1.软仿真结果分析

--图1是信号经过调制后的模型,毛刺代表其高频分量。

--图3是图1中信号的频域图形,从频域可以看出,其频谱既含有低频分量,又含有高频分量。

--图2调制信号经过无限冲击响应滤波器(IIR)滤波之后得到的波形。

--图4图2中信号的频域图形,从频域可以看出,经过无限冲击响应滤波器(IIR)滤波之后只剩下低频分量,高频分量几乎衰减为0。

--图5把四幅图放在一块比较,可以显而易见的看出图形滤波前后的差别,经比较可以看出,在软仿真条件下,用TMS320F2812DSPs来实现的无限冲击响应滤波器(IIR)具有较好的滤波性能。

2.硬仿真结果分析

--图6上面为低频信号,下面为高频信号。

--图7为两信号相乘的结果,即调制的结果。

--图8为调制信号经无限冲击响应滤波器(IIR)的结果。

比较图6和图8我们可以发现,两图的波形几乎完全相同,由此我们可以得出如下结论:

用TMS320F2812DSPs来实现的无限冲击响应滤波器(IIR)具有较好的滤波性能。

 

程序算法分析及反汇编

1、根据自己的理解,给iir.c程序添加备注

 

#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile

#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile

#include"f2812a.h"

#include"math.h"

#defineIIRNUMBER2

#defineSIGNAL1F1000

#defineSIGNAL2F4500

#defineSAMPLEF10000

#definePI3.1415926

floatInputWave();

floatIIR();

floatfBn[IIRNUMBER]={0,0.7757};//定义差分方程y(n)系数,并赋值

floatfAn[IIRNUMBER]={0.1122,0.1122};//定义差分方程x(n)的系数,并赋值

floatfXn[IIRNUMBER]={0.0};//定义输入序列

floatfYn[IIRNUMBER]={0.0};//定义输出序列

floatfInput,fOutput;//定义输入,输出

floatfSignal1,fSignal2;

floatfStepSignal1,fStepSignal2;//定义第一路信号周期,第二路信号周期

floatf2PI;//定义2*pi

inti;

floatfIn[256],fOut[256];

intnIn,nOut;

main(void)

{

nIn=0;nOut=0;

f2PI=2*PI;

fSignal1=0.0;

fSignal2=PI*0.1;

//fStepSignal1=2*PI/30;

//fStepSignal2=2*PI*1.4;

fStepSignal1=2*PI/50;//第一路信号周期

fStepSignal2=2*PI/2.5;//第二路信号周期

while

(1)

{

fInput=InputWave();//输入波形

fIn[nIn]=fInput;

nIn++;nIn%=256;

fOutput=IIR();//IIR滤波

fOut[nOut]=fOutput;//输出波形

nOut++;

if(nOut>=256)

{

nOut=0;/*请在此句上设置软件断点*/

}

}

}

 

floatInputWave()//输入波形函数

{

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]);//返回调制信号

}

floatIIR()

{

floatfSum;

fSum=0.0;

for(i=0;i

{

fSum+=(fXn[i]*fAn[i]);//本程序的算法所在,在此实现滤波

fSum+=(fYn[i]*fBn[i]);//本程序的算法所在,在此实现滤波

}

return(fSum);

}

 

2、本实验实现滤波的算法就是:

y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1].

通过此算法可以滤去信号的高频分量。

3、自己对照着C语言写的汇编语言小程序

 

 

4、实现算法(fSum+=(fXn[i]*fAn[i]);fSum+=(fYn[i]*fBn[i]);)的汇编语言:

IIR:

ADDBSP,#4

MOVBAH,#0

MOVBAL,#0

MOVL*-SP[4],ACC

MOVWDP,#0xFE00

MOV@0,#0

MOVAL,@0

CMPBAL,#2

SBL7,GEQ

L6:

SETCSXM

MOVLXAR4,#0x3F8016

MOVACC,@0<<1

ADDL@XAR4,ACC

MOVLACC,*+XAR4[0]

MOVL*-SP[2],ACC

MOVLXAR4,#0x3F8012

MOVACC,@0<<1

ADDL@XAR4,ACC

MOVLACC,*+XAR4[0]

LCRFS$$MPY

MOVL*-SP[2],ACC

MOVLACC,*-SP[4]

LCRFS$$ADD

MOVL*-SP[4],ACC

 

 

结束语——心得体会

这学期学习了王院长教授DSP原理与应用技术这本书,收获很多。

DSP对我们来说是一门新的知识,是一门综合性很强的专业课程,觉得它学起来应该不是很容易。

这门课一开始,王院长就告诉我们如何学习这门课,因为这门课对我们来说比较陌生,是一门全新的课。

王院长给我们说DSPs是一门实践性很强的课,学生往往在学习过程中和实际开发过程相脱节,因此对DSPs的一些基本概念只停留在文字的解释上,形不成系统的概念,无法与实践的电路相联系。

王院长告诉我们初学者学习这门课时应该把基本概念、逻辑概念、物理概念相互联系起来,学会三者之间的对应。

由于DSPs涉及的内容很多,王院长告诉我们要学会框架是的学习方法,所谓框架是的学习方法,就是要抓住课程主要的知识点,不要一开始就陷入众多的寄存器、汇编指令及片内外设的具体应用中,而应该先掌握DSPs芯片的主要知识体系,切实掌握仿真、实时性、系统等概念的内涵。

在课程学习过程中我体会到,只有按照王院长所说的学习方法才能跟上课的进度,因为书上的内容太多,不可能全部记着,只有主要的知识体系才能掌握。

理论课程结束之后,我们紧接着就开始了实验课。

因为DSPs是一门实践性很强的课程,所以实验课对我们来说是很重要的。

我们一共做了八个实验,在这八个实验的过程中收获了不少经验教训。

我们实验用的软件是CCS,硬件是DSP实验箱。

在做实验过程中一定的看清实验步骤严格按实验步骤操作,不然很轻则造成不必要的麻烦,重则可能导致实验设备的损坏。

做完八个试验后,我的体会是,在做每个实验之前,最好把实验内容看一遍,弄明白实验原理,熟悉实验步骤,这样做实验室才能做到有的放矢。

在软仿真环境下做的实验,有时间的话可以在宿舍先做一遍,在做的过程中如果遇到不能解决的问题,在实验室做实验的时候可以向助教请教解决。

即使在宿舍做实验没有遇到问题,对我们来说也是有好处的,因为在宿舍已经做过一遍,所以在实验室我们可以轻车熟路的做下去,快速的做完规定的实验,剩余的时间我们可以看你做过实验的程序,争取在实验室里把程序给看明白。

在实验室看程序好处多多,当遇到不懂的语句时,我们可以请教助教,如果在其他地方看程序,恐怕就没用这么好的条件了。

做硬仿真实验时,由于宿舍没有试验箱,我们不可能在宿舍做,所以在做硬仿真实验之前,我们一定要做好预习准备工作,在实验过程中要做到细致、小心,因为实践操作是一个很严谨过程,任何一个步骤出现问题,也许就得必须重新开始,这样会很浪费实验时间的。

在实验室中有这个小体会,有时候程序出现问题没办法解决时,可以重启电脑,因为实验室D盘是受保护的,重启后会恢复原来状态,重启后接着做就没事了。

做实验难免要的循规蹈矩、认认真真的的做,开始我觉得实验会很枯燥,但后来发现不是这样的,只要深入进去做,做实验还是有很多乐趣的。

举一个例子来说明,在实验4中第三个小实验是液晶显示器控制现实的实验。

我做到这个实验后,看了一下源程序,发现源程序还是比较容易的,就想尝试着自己在液晶显示器上画点儿东西。

于是我就利用程序里的画直线的函数,修改程序。

先画了一个简单的“十”,看到“十”显示在液晶显示器上上,感觉很兴奋,就又想画一个笑脸,又画了一个“十”字作为眼睛,当两个“十”字成功的显示在液晶显示器上时,感觉我们离成功仅有一步之遥了,我们再接再厉,为笑脸画起“嘴”来,修改程序运行之后,发现和预想的效果不大一样,我们开始找问题,当找到问题,准备重新修改程序时,实验的时间结束了。

虽然没有达到要的效果,但能通过自己改程序,显示出一定的东西,还是觉得很有成就感的。

总之,在学习DSPs理论课和实验中获得了许多东西,有乐趣,有经验,有教训……。

学习理论课教会了我学习这类课的学习方法。

在实验使我对课本上所学的有关DSPs的知识有了更进一步的认识,提高了我的实验技能,锻炼了我的动手能力;更重要的是经过实验课,我体会到做什么事都要有耐心,都要认真做,在实验中如果粗心大意,一个实验花很长时间也不一定能做出来,如果静下心来认真做,很多时候实验可以很快的做出来,因此,在做实验使我感悟到作风严谨,做事细心的重要性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1