IIR算法的软硬件实现.docx

上传人:b****4 文档编号:3487919 上传时间:2022-11-23 格式:DOCX 页数:12 大小:160.63KB
下载 相关 举报
IIR算法的软硬件实现.docx_第1页
第1页 / 共12页
IIR算法的软硬件实现.docx_第2页
第2页 / 共12页
IIR算法的软硬件实现.docx_第3页
第3页 / 共12页
IIR算法的软硬件实现.docx_第4页
第4页 / 共12页
IIR算法的软硬件实现.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

IIR算法的软硬件实现.docx

《IIR算法的软硬件实现.docx》由会员分享,可在线阅读,更多相关《IIR算法的软硬件实现.docx(12页珍藏版)》请在冰豆网上搜索。

IIR算法的软硬件实现.docx

IIR算法的软硬件实现

DSP原理及应用

实验报告

 

专业:

通信工程

姓名:

学号:

指导教师:

IIR算法的软硬件实现

摘要

本实验学习了DSP的几种算法及硬件的应用,具体工作包括:

对IIR数字滤波器的基本理论进行分析和探讨。

应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。

通过硬件液晶显示模块验证试验结果,并对相关问题进行分析。

引言

随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为一门主流技术。

相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等。

这些优势决定数字滤波器的应用越来越广泛。

数字滤波器是数字信号处理中最重要的组成部分之一,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。

实验目的

1.掌握设计IIR数字滤波器的原理和方法

2.熟悉IIR数字滤波器特征

3.了解IIR数字滤波器的设计方法

实验设备

Pc兼容机一台,操作系统为windows2000,安装codecomposerstudio2.0软件。

实验原理

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

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

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

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

要求:

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

设计:

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

模拟边缘频率为:

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

-20logδs=30dB

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

Ωp1=2πfp1/fs=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δs确定阻带边缘增益δs。

因为-20logδs=30,所以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.3307y[n-1]+0.3346x[n]+0.3346x[n-1]

硬件框图

软件流程图

调试过程与步骤:

IIR算法的软件实现实验步奏

1.实验准备

-设置软件仿真模式。

-启动CCS

2.打开工程,浏览程序,工程目录为D:

\dsp\t6\iir\iir.pjt

3.编译并下载程序

4.打开观察窗口:

*选择菜单View->Graph->Time/Frequency…,进行如下设置:

*选择菜单View->Graph->Time/Frequency…,进行如下设置:

5.清除显示:

在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。

6.设置断点:

在程序iir.c中有注释“/*请在此句上设置软件断点*/”的语句上

置软件断点。

7.运行并观察结果

⑴选择“Debug”菜单的“RUN”项,或按F5键运行程序。

⑵观察“IIR”窗口中时域图形;观察滤波效果。

实验结果

输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。

如图:

通过观察频域和时域图,得知:

输入波形中的低频波形通过了滤波器,而高频部分则被衰减。

附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,0.7757};

floatfAn[IIRNUMBER]={0.1122,0.1122};

floatfXn[IIRNUMBER]={0.0};

floatfYn[IIRNUMBER]={0.0};

floatfInput,fOutput;

floatfSignal1,fSignal2;

floatfStepSignal1,fStepSignal2;

floatf2PI;

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();

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);

}

/*========================================*/

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

SETCSXM

MOVWDP,#0xFE00

MOVACC,@0<<1

MOVLXAR4,#0x3F801E

ADDL@XAR4,ACC

MOVLACC,*+XAR4[0]

MOVLXAR4,#0x3F801A

MOVL*-SP[2],ACC

MOVACC,@0<<1

ADDL@XAR4,ACC

MOVLACC,*+XAR4[0]

LCRFS$$MPY

MOVL*-SP[2],ACC

MOVLACC,*-SP[4]

LCRFS$$ADD

MOVL*-SP[4],ACC

MOVWDP,#0xFE00

INC@0

MOVAL,@0

CMPBAL,#2

SBL6,LT

L7:

MOVLACC,*-SP[4]

SUBBSP,#4

LRETR

/*======================================

=======================================*/

IIR算法的硬件实现

1.实验准备

⑴连接实验设备。

⑵准备信号源进行AD输入。

①取出2根实验箱附带的信号线(如右图,两端均为单声道语音插头)。

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

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

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

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

④设置波形输出A:

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

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

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

⑤设置波形输出B:

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

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

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

注意:

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

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

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

3.启动CodeComposerStudio2.21

选择菜单Debug->ResetCPU。

4.打开工程文件

工程目录:

D:

\dsp\t7\mixerfir\mixerfir.pjt

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

6.观察窗口

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

7.运行程序观察结果

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

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

9.退出CCS

实验结果

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

本实验是低通滤波,按K6键后将信号源B的波形滤掉

结果分析

通过无限冲激响应滤波器(IIR)算法的硬件实现与软件实现IIR算法相对比,所设计的IIR滤波器收到较好的效果,完成了设计要求。

心得体会

DPS这门课汇聚了多门课的精髓所在,把很多课程的理论上升到了实验的程度,在老师及助教的指导下,我们完成了本学期需求的八个dsp实验,在实验中我们逐步深入了解了这门课的真正意义,同时也让我们把多门学科融会贯通,形成了完整的理论体系。

通过这次实验对TMS320F2812xDSP软件仿真及调试有了初步的了解与认识因为做实验的时候都是按照实验指导书按部就班的与真正的理解和掌握还是有些距离的。

但是这也为我们日后运用这些知识打下了基础我觉得实验中遇到的问题不要急于问老师或者同学先自己想办法分析原因想办法解决这样对自身的提高更多吧。

通过做实验把学习的知识利用起来也对这门课程更加有兴趣了。

在这几次的实验过程中,团队协作的精神得以充分的体现。

当遇到困难的时候,同学与同学之间,同学与指导老师之间有了很好的交流和沟通,这也是实验能够认真完成的一重要因素。

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

当前位置:首页 > 表格模板 > 合同协议

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

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