DSP课程设计报告Word下载.docx
《DSP课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《DSP课程设计报告Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
②对信号进行IIR滤波或FIR滤波,并且计算滤波前后信号的频率。
③外部键盘或者从计算机来的串口命令选择算法功能,并且将结果在LCD上显示。
绘制出DSP系统的功能框图、使用AD(AltiumDesigner)绘制出系统的原理图和PCB版图。
在DSP中采集信号,用CCS软件显示采集的数据波形,以及对采集的数据进行算法分析。
三硬件设计
硬件总体结构
DSP模块设计
电源模块设计
将5V电源电压转换为和电源
时钟模块设计
此处由外部晶振提供时钟信号
存储器模块设计
DSP上只有一个读写控制信号引脚,而FLASH有两个引脚,将读、写分开,故在OE上接一个非门电路,实现高时读,低时写。
FLASH上的地址线和数据线与DSP上的地址线、数据线相连
JATG模块设计
TMS320VC5416最小系统PCB版图
板上包括了支持TMS320VC5416独立运行的时钟电路、复位电路、Flash模块、JTAG仿真接口电路以及电源模块等。
为节省空间和材料,部分器件放在了反面。
四软件设计
正弦波信号发生器
所给例程输出波形为正弦波,波形如下图所示:
三角波(方波)信号发生器
********************************************************************
****************三角波信号发生程序(括号内为方波)******************
********************************************************************
.mmregs
.defstart
k1.usect"
k"
1
outdata1.set0800h(0800h)
outdata2.set09ffh(0fffh)
outdata3.set0affh(0fffh)
outdata4.set0bffh(0fffh)
outdata5.set0cffh(0fffh)
outdata6.set0dffh(0fffh)
outdata7.set0effh(0fffh)
outdata8.set0fffh(0fffh)
outdata9.set1000h(0fffh)
outdata10.set0fffh(0fffh)
outdata11.set0effh(0fffh)
outdata12.set0dffh(0fffh)
outdata13.set0cffh(0fffh)
outdata14.set0bffh(0fffh)
outdata15.set0affh(0fffh)
outdata16.set09ffh(0fffh)
outdata17.set08ffh(0800h)
outdata18.set07ffh(0000h)
outdata19.set06ffh(0000h)
outdata20.set05ffh(0000h)
outdata21.set04ffh(0000h)
outdata22.set03ffh(0000h)
outdata23.set02ffh(0000h)
outdata24.set01ffh(0000h)
outdata25.set00ffh(0000h)
outdata26.set01ffh(0000h)
outdata27.set02ffh(0000h)
outdata28.set03ffh(0000h)
outdata29.set04ffh(0000h)
outdata30.set05ffh(0000h)
outdata31.set06ffh(0000h)
outdata32.set07ffh(0000h)
ext
start:
stm2000h,sp
nd
//代码段结束
本系统软件总体流程
核心模块及实现代码
FFT算法程序:
voidkfft(doublepr[Length],doublepi[Length],intn,intk,doublefr[Length],doublefi[Length],intl,intil)
{
intit,m,is,i,j,nv,l0;
doublep,q,s,vr,vi,poddr,poddi;
for(it=0;
it<
=n-1;
it++)
{m=it;
is=0;
for(i=0;
i<
=k-1;
i++)
{j=m/2;
is=2*is+(m-2*j);
m=j;
}
fr[it]=pr[is];
fi[it]=pi[is];
}
pr[0]=;
pi[0]=;
pr[1]=cos(p);
pi[1]=-sin(p);
if(l!
=0)pi[1]=-pi[1];
for(i=2;
{p=pr[i-1]*pr[1];
q=pi[i-1]*pi[1];
s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);
pr[i]=p-q;
pi[i]=s-p-q;
}
=n-2;
it=it+2)
{vr=fr[it];
vi=fi[it];
fr[it]=vr+fr[it+1];
fi[it]=vi+fi[it+1];
fr[it+1]=vr-fr[it+1];
fi[it+1]=vi-fi[it+1];
m=n/2;
nv=2;
for(l0=k-2;
l0>
=0;
l0--)
{m=m/2;
nv=2*nv;
=(m-1)*nv;
it=it+nv)
for(j=0;
j<
=(nv/2)-1;
j++)
{p=pr[m*j]*fr[it+j+nv/2];
q=pi[m*j]*fi[it+j+nv/2];
s=pr[m*j]+pi[m*j];
s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);
poddr=p-q;
poddi=s-p-q;
fr[it+j+nv/2]=fr[it+j]-poddr;
fi[it+j+nv/2]=fi[it+j]-poddi;
fr[it+j]=fr[it+j]+poddr;
fi[it+j]=fi[it+j]+poddi;
=0)
{fr[i]=fr[i]/*n);
fi[i]=fi[i]/*n);
if(il!
{pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);
if(fabs(fr[i])<
*fabs(fi[i]))
{if((fi[i]*fr[i])>
0)pi[i]=;
elsepi[i]=;
else
}
卷积程序:
voidConvolveok(//卷积函数
double*x,//原始输入数据
double*h,//冲击响应
double*y,//卷积输出结果
UINT16Leng,//序列长度
UINT16h_Len)
{
UINT16m,p,j;
doubler,rm;
doublexmean=;
doublexmid[100];
for(m=0;
m<
h_Len;
m++)
{
xmid[m]=;
for(m=0;
m<
Leng;
m++)
xmean=x[m]+xmean;
}
xmean=*xmean/Length;
for(m=0;
x[m]=x[m]-xmean;
for(p=0;
p<
p++)
{
xmid[h_Len-p-1]=xmid[h_Len-p-2];
}
xmid[0]=x[m];
r=;
rm=;
for(j=0;
{
r=xmid[j]*h[j];
rm=rm+r;
y[m]=rm;
}
求最大值和次大值函数:
voidmax()
{intk1,k2;
//k1最大值,k2次最大值
intr;
for(r=0;
r<
16;
r++)
{
if(pr[k1]<
pr[r])
{
k1=r;
for(r=20;
64;
if(pr[k2]<
k2=r;
f0=256*k1;
f1=256*k2;
fc=(f0+f1)/2;
归一化函数:
voidavg()
{intj;
sum=;
for(j=0;
j<
256;
j++)
sum+=(data_buff[j]/;
pr[j]=data_buff[j]-sum;
pi[j]=;
FIR滤波器设计函数:
voidfirdes(doublenpass)//求h(n)
intt;
for(t=0;
t<
FLen;
t++)
h[t]=sin((t-(FLen-1)/*npass*/*(t-(FLen-1)/);
if(t==((FLen-1)/2))h[t]=npass;
外部中断2服务函数:
voidinterruptExtInt2(void)
inti1,j;
*(unsignedint*)IFR=0xFFFF;
//清除所有中断标志
data_buff[i1]=port8002&
0x00ff;
i1++;
if(i1==256)
avg();
kfft(pr,pi,256,8,fr,fi,0,1);
max();
npass=fc/;
firdes(npass);
Convolveok(data_buff,h,y,256,51);
yr[j]=y[j];
yi[j]=;
kfft(yr,yi,256,8,Yr,Yi,0,1);
flag=1;
i1=0;
程序运行效果
①采集的数据及其FFT计算结果
②51阶滤波器H(n)波形
③滤波前后信号频谱图:
由滤波前后高低频分量的相对大小证明低通滤波器对高频分量的衰减作用比较强,但没有完全滤出去
④采集数据波形与滤波后波形比较
由图可见滤波后信号中的高频分量得到了较大的衰减,滤波后波形变得平滑。
五课程设计总结
DSP芯片有更适合于数字信号处理的软件和硬件资源,非常适合于通用数字信号处理的开发,为数字信号处理的应用打开了新局面。
学好DSP技术具有非常重要的意义。
通过此次课程设计,我学习到了一个实际的电子系统的完整的设计流程,基本掌握了PCB设计软件AltiumDesigner的使用方法,学会了绘制系统的功能框图、原理图以及PCB版图。
同时掌握了CCS软件的使用和基于TMS320VC5416的DSP程序的编写。
此次课程设计首先绘制系统功能框图,使用AD软件绘制原理图和PCB版图。
在绘制系统功能框图过程中,要设计一个功能完备,能够独立运行的精简DSP硬件系统。
然后再基于此系统功能框图绘制原理图和PCB版图。
在原理图的绘制过程中要充分考虑到所使用的器件及管脚的网络标号,总线的链接等。
因为要绘制PCB版图,故要合理选择各个器件的封装,合理安排各个器件和线的位置,尤其是滤波电容要安放在靠近各个管脚的位置,真正起到滤波的作用。
在使用CCS软件编写程序时要注意变量定义以及函数声明。
通过查阅资料和与老师同学交流后完善了各部分程序。
DSP程序相对难一些,在编写时需要从系统整体来考虑,不断调整算法且保持思路清晰,熟悉各个子程序的功能。
通过此次课程设计,使我对TMS320C54x系列DSP的硬件结构有了较为深刻的认识,也学习到了实际的电子系统的完整的设计流程,熟悉了AD软件和CCS软件的使用方法,对于数字信号处理有了更深刻的认识。
数字信号处理无处不在,这样的课程设计很有意义,对于我们今后的学习与工作都会产生深远影响,为我们独立完成其他DSP设计打下基础。
通过查阅资料以及老师同学的帮助,解决了课程设计中遇到的难题,也学习到了很多知识,将理论运用于实践。
感谢老师和同学的大力帮助,使我顺利完成了此次课程设计。