dsp课程设计iir算法的软硬件实现.docx
《dsp课程设计iir算法的软硬件实现.docx》由会员分享,可在线阅读,更多相关《dsp课程设计iir算法的软硬件实现.docx(11页珍藏版)》请在冰豆网上搜索。
dsp课程设计iir算法的软硬件实现
《DSP》课程设计
题目:
IIR算法的软硬件实现
学生姓名:
胡国庆
学号:
112
专业:
电子信息工程
院(系):
信息工程学院
IIR算法的软硬件实现
摘要:
本课题通过软件设计IIR数字滤波器,并对所设计的滤波器进行仿真:
应用DSP集成开发环境—CCS调试程序,用TMS320F2812实现IIR数字滤波。
具体工作包括:
对IIR数字滤波器的大体理论进行分析和探讨。
应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。
通过硬件液晶显示模块验证明验结果,并对相关问题进行分析。
关键词:
数字滤波器;DSP;TMS320F2812;无穷冲激响应滤波器(IIR)。
引言:
21世纪是数字化的时期,随着信息处置技术的飞速进展,数字信号处置技术慢慢进展成为一门主流技术。
相关于模拟滤波器,数字滤波器没有漂移,能够处置低频信号,频率特性可做成超级接近于理想的特性,且精度能够达到很高,容易集成等。
这些优势决定数字滤波器的应用愈来愈普遍。
数字滤波器是数字信号处置中最重要的组成部份之一,被普遍应用于语音图像处置、数字通信、谱分析、模式识别、自动操纵等领域。
实验原理
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=π弧度
Ωs1=2πfs1/fs=2π12000/25000=π弧度
-计算预扭曲模拟频率以幸免双线性变换带来的失真。
由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒。
wp1=2fstan(Ωp1/2)=弧度/秒
ws1=2fstan(Ωs1/2)=弧度/秒
-由已给定的阻带衰减-20logδs确信阻带边缘增益δs。
因为-20logδs=30,因此logδs=-30/20,δs=
-计算所需滤波器的阶数:
因此,一阶巴特沃斯滤波器就足以知足要求。
-一阶模拟巴特沃斯滤波器的传输函数为:
H(s)=wp1/(s+wp1)=(s+
由双线性变换概念s=2fs(z-1)/(z+1)取得数字滤波器的传输函数为:
因此,差分方程为:
y[n]=[n-1]+[n]+[n-1]
硬件框图
程序流程图
调试进程与步骤:
一、软件实现
1.实验预备
-设置软件仿真模式。
-启动CCS
2.感动工程,阅读程序,工程目录为D:
\dsp\t6\iir\
3.编译并下载程序
4.打开观看窗口:
*选择菜单View->Graph->Time/Frequency…,进行如下设置:
*选择菜单View->Graph->Time/Frequency…,进行如下设置:
5.清除显示:
在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。
6.设置断点:
在程序中有注释“/*请在此句上设置软件断点*/”的语句上
置软件断点。
7.运行并观看结果
⑴选择“Debug”菜单的“RUN”项,或按F5键运行程序。
⑵观看“IIR”窗口中时域图形;观看滤波成效。
实验结果
输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。
如图:
通过观看频域和时域图,得知:
输入波形中的低频波形通过了滤波器,而高频部份那么被衰减。
附IIR算法相对应C语言编程及汇编程序
/*===========================================
=============================================*/
#include""//DSP281xHeaderfileIncludeFile
#include""//DSP281xExamplesIncludeFile
#include""
#include""
#defineIIRNUMBER2
#defineSIGNAL1F1000
#defineSIGNAL2F4500
#defineSAMPLEF10000
#definePI
floatInputWave();
floatIIR();
floatfBn[IIRNUMBER]={,};
floatfAn[IIRNUMBER]={,};
floatfXn[IIRNUMBER]={};
floatfYn[IIRNUMBER]={};
floatfInput,fOutput;
floatfSignal1,fSignal2;
floatfStepSignal1,fStepSignal2;
floatf2PI;
inti;
floatfIn[256],fOut[256];
intnIn,nOut;
main(void)
{
nIn=0;nOut=0;
f2PI=2*PI;
fSignal1=;
fSignal2=PI*;
//fStepSignal1=2*PI/30;
//fStepSignal2=2*PI*;
fStepSignal1=2*PI/50;
fStepSignal2=2*PI/;
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)/;
fYn[0]=;
fSignal1+=fStepSignal1;
if(fSignal1>=f2PI)fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if(fSignal2>=f2PI)fSignal2-=f2PI;
return(fXn[0]);
}
floatIIR()
{
floatfSum;
fSum=;
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.设置CodeComposerStudio在硬件仿真(Emulator)方式下运行
3.启动CodeComposerStudio
选择菜单Debug->ResetCPU。
4.感动工程文件
工程目录:
D:
\dsp\t7\mixerfir\
5.编译、下载程序,选择菜单Debug->GoMain,使程序运行到main函数入口位置。
6.观看窗口
-打开源程序,查看源代码。
7.运行程序观看结果
按CTR操纵板的K6键,实现滤波显示,K7键实现混频显示,按K8实现键A、B两信号源分屏显示。
8.观看动态成效,调剂信号源输出,观看滤波器输出
改变信号源输入的波形、频率参数,观看动态成效。
9.退出CCS
实验结果
按CTR操纵板的K6键,实现滤波显示,K7键实现混频显示,按K8实现键A、B两信号源分屏显示。
本实验是低通滤波,按K6键后将信号源B的波形滤掉
结果分析
通过无穷冲激响应滤波器(IIR)算法的硬件实现与软件实现IIR算法相对照,所设计的IIR滤波器收到较好的成效,完成了设计要求。
心得体会:
我在教师认真负责的指导下,顺利地完成了关于DSP芯片TMS320F2812的八个实验,并从中收成很多。
王忠勇教师曾给咱们讲DSPs芯片及DSP系统与信息类专业的一些课程有许多联系,和DSP本身的许多特点。
可是并非能明白得教师所讲的内容,感觉很抽象,不明白从何处入手,但随着课程学习慢慢接近尾声,与此同时开始的实践实验,自己才慢慢深切全面的了解DSP,理论水平取得了必然程度的提高,但同时也处在一些问题。
DSP设计涉及到多门课程的相关知识,这需要咱们在课程的学习进程中,常常回忆一些基础理论知识,通过认真试探与分析,达到解决问题的目的。
在那个进程中,我不仅温习了以前的一些知识,而且通过理论联系实际,对相关知识点有了更深层次的熟悉。
从课前温习相关实验内容、原理到课题论文的完成,我收成了很多,学到了很多,收成颇丰。
在那个进程中,我温习了数字滤波器的原理和设计方式,对DSP编程有了更深的熟悉和把握了必然的编程能力。
团结是成功的基石。
在这几回的实验进程中,团队协作的精神得以充分的表现。
当碰着困难的时候,同窗与同窗之间,同窗与指导教师之间有了专门好的交流和沟通,这也是实验能够认真完成的一重要因素。
另外,我要感激指导教师们和高年级的学长们,因为这些实验是在他们认真负责的态度下完成的。
实验进程中他们在软件操作和相关理论、算法等方面给了咱们耐心的指导,正是由于他们的付出,才能使咱们顺利完成实验。
从他们身上我明白了做事要有严谨认真、勤于动脑,勤于实践的态度。