ccs实现dsp课设iir滤波器.docx
- 文档编号:9590104
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:11
- 大小:231.61KB
ccs实现dsp课设iir滤波器.docx
《ccs实现dsp课设iir滤波器.docx》由会员分享,可在线阅读,更多相关《ccs实现dsp课设iir滤波器.docx(11页珍藏版)》请在冰豆网上搜索。
ccs实现dsp课设iir滤波器
一、设计目的
1、进一步了解滤波器的原理,了解IIR滤波器的设计过程。
2、了解CCS的使用方法,以及掌握基本编程语言。
3、掌握CCS设计IIR滤波器。
4、掌握CCS工程的建立,源文件的汇编、连接以及调试程序,并且观察其输入、输出波形。
二、滤波器的简介
1、数字滤波器原理
数字滤波是数字信号处理的一部分。
数字信号处理主要是研究用数字或符号的序列来表示信号波形,并用数字的方式去处理这些序列,把它们改变成在某种意义上更为有希望的形式,以便估计信号的特征参量,或削弱信号中的多余分量和增强信号中的有用分量。
具体来说,凡是用数字方式对信号进行滤波、变换、调制、解调、均衡、增强、压缩、估值、识别、产生等加工处理,都可纳入数字信号处理领域。
数字信号处理学科的一项重大进展是关于数字滤波器设计方向的研究。
描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。
时域离散系统的频域特性:
其中
、
分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),
是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响应。
输入序列的频谱
经过滤波后
因此,只要按照输入信号频谱的特点和处理信号的目的,适当选择
,使得滤波后的
满足设计的要求,这就是数字滤波器的滤波原理。
2、iir滤波器
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。
IIR滤波器与FIR滤波器相比,具有相位特性差的缺点,但它的结构简单,运算量小,具有经济、高效的特点,并且可以用较少的阶数获得很高的选择性。
因此也得到了较为广泛的应用。
IIR数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现,其差分方程为:
系统函数为:
设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。
三、平台简介
CCS的全称是CodeComposerStudio,它是美国德州仪器公司(TexasInstrument,TI)出品的代码开发和调试套件。
TI公司的产品线中有一大块业务是数字信号处理器(DSP)和微处理器(MCU),CCS便是供用户开发和调试DSP和MCU程序的集成开发软件。
CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。
CCS有两种工作模式,即:
软件仿真器模式:
可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。
硬件在线编程模式:
可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。
CCS的开发系统主要由以下组件构成:
①TMS320C54x集成代码产生工具;
②CCS集成开发环境;
③DSP/BIOS实时内核插件及其应用程序接口API;
④实时数据交换的RTDX插件以及相应的程序接口API;
⑤由TI公司以外的第三方提供的各种应用模块插件。
CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:
①具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;
②含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;
③高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误;
④工程项目管理工具可对用户程序实行项目管理。
在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;
⑤基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;
⑥断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;
⑦探测点工具,可用于算法的仿真,数据的实时监视等;
⑧分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;
⑨数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;
⑩提供GEL工具。
利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等;
四、设计程序
(1)IIR.c
#include"stdio.h"
#include"math.h"
#definesignal_1_f500
#definesignal_2_f10000
#definesignal_sample_f25000
#definepi3.1415926
doublefs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,y;
voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[]);
voidbiir2lpdes(doublefs,doublenlpass,doublenlstop,doublea[],doubleb[])
{
inti,u,v;
doublewp,omp,gsa,t;
wp=nlpass*2*pi;
omp=tan(wp/2.0);
gsa=omp*omp;
for(i=0;i<=2;i++)
{
u=i%2;
v=i-1;
a[i]=gsa*pow(2,u)-sqrt
(2)*omp*v+pow(-2,u);
}
for(i=0;i<=2;i++)
{u=i%2;
b[i]=gsa*pow(2,u);
}
t=a[0];
for(i=0;i<=2;i++)
{a[i]=a[i]/t;
b[i]=b[i]/t;
}
}
voidmain(void)
{
intj,k=0;
intn,x_ad,y_da;
int*px=(int*)0x3000;
int*py=(int*)0x3100;
doublew2,w1,w0;
w2=w1=w0=0.0;
for(;;)
{
InitC5402();/*initializeC5402DSP*/
OpenMcBSP();
fs=16000;
nlpass=0.1;
nlstop=0.3;
biir2lpdes(fs,nlpass,nlstop,a,b);
for(j=0;j<=4;j++)
{
READAD50();
for(n=0;n<=255;n++)
{
px=(int*)(0x3000+n);
x_ad=*px;
x=x_ad/32768.0;
w2=x-a[1]*w1-a[2]*w0;
y=b[0]*w2+b[1]*w1+b[2]*w0;
w0=w1;
w1=w2;
y_da=(int)(y*32768.0);
py=(int*)(0x3100+n);
*py=y_da;
}
WRITEAD50();
k++;
}
}
(2)IIR.asm
STMSPCR1,McBSP1_SPSA
LDMMcBSP1_SPSD,A
AND#0xFFFE,A
STLMA,McBSP1_SPSD
STMSPCR2,McBSP1_SPSA
LDMMcBSP1_SPSD,A
AND#0xFFFE,A
STLMA,McBSP1_SPSD
RPT#5
RET
NOP
NOP
_READAD50:
stm0x00ff,ar3
stm0x3000,ar2
loopa:
ldmMcBSP1_DRR1,b
stlb,*ar2+
banzloopa,*ar3-
_WRITEAD50:
stm0x00ff,ar3
stm0x3100,ar2
loopb:
ldu*ar2+,B
and#0fffeh,b;masktheLSB
stlmB,McBSP1_DXR1
banzloopb,*ar3-
wait:
stm20h,ar3
loop1:
stm020h,ar4
loop2:
banzloop2,*ar4-
banzloop1,*ar3-
ret
(3)IIR.cmd
-lrts2800_ml.lib
-stack400h
-heap100
MEMORY
{
PAGE0:
PROG(R):
origin=0x80000,length=0x10000
PAGE0:
BOOT(R):
origin=0x3FF000,length=0xFC0
PAGE0:
RESET(R):
origin=0x3FFFC0,length=0x2
/*PAGE0:
VECTORS(R):
origin=0x3FFFC2,length=0x3E*/
PAGE1:
M0RAM(RW):
origin=0x000000,length=0x400
PAGE1:
M1RAM(RW):
origin=0x000400,length=0x400
PAGE1:
L0L1RAM(RW):
origin=0x008000,length=0x2000
PAGE1:
H0RAM(RW):
origin=0x3F8000,length=0x2000
}
SECTIONS
{
.reset:
>RESET,PAGE=0
/*vectors:
>VECTORS,PAGE=0*/
.pinit:
>PROG,PAGE=0
.cinit:
>PROG,PAGE=0
.text:
>PROG,PAGE=0
.const:
>L0L1RAM,PAGE=1
.bss:
>L0L1RAM,PAGE=1
.stack:
>M1RAM,PAGE=1
.sysmem:
>M0RAM,PAGE=1
.ebss:
>H0RAM,PAGE=1
.econst:
>H0RAM,PAGE=1
.esysmem:
>H0RAM,PAGE=1
}
六、仿真结果
(1)输入
输入时域图:
输入频域图:
(2)输出
输出时域图:
输出频域图:
七、设计心得、体会
通过这次的DSP课程设计,我深深的体会到了自身的不足,一个软件就让我试了好多次才调出来结果,还不是实际的做一个东西,但是我也加深了对DSP的理解。
了解了CCS的用法,充实了我的知识,让我收益颇丰。
这次课程设计还让我了解了数字滤波器的用处,刚开始时上机时什么都不知道,不知道怎么使用软件,不会建立源文件,,不会汇编,不会连接。
好不容易弄好了以后,运行时总是显示说程序有错误,经过和同学讨论,并仔细的阅读了程序,终于发现了问题,将错误改掉了。
后来请教了老师,才解决了如何出图这一问题。
经过几天的奋斗终于做出来了,当时心情非常的激动,这些让我很有成就感,总之这次课程设计让我充实自己,也让我发现了很多问题和不足,对以前所学的知识理解的不够深刻,对知识点掌握的不够牢靠等,我以后会好好注意这方面。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ccs 实现 dsp iir 滤波器