DSP课程设计报告.docx
- 文档编号:6101749
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:11
- 大小:118.25KB
DSP课程设计报告.docx
《DSP课程设计报告.docx》由会员分享,可在线阅读,更多相关《DSP课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
DSP课程设计报告
CompanyDocumentnumber:
WTUT-WT88Y-W8BBGB-BWYTT-19998
DSP课程设计报告
数据采集处理和控制系统设计
一课程设计要求
1.基本DSP硬件系统设计要求
①基本DSP硬件系统以TMS320C54x系列为核心处理器,包括最小系统、存储器扩展、显示器、键盘、AD、DA等电路模块;
②硬件设计画出主要芯片及电路模块之间的连接即可,重点考查电路模块方案设计与系统地址分配;
③设计方案以电路示意图为主,辅以必要的文字说明。
2.基本软件设计要求
①看懂所给例程,画出例程输出波形示意图;
②修改例程程序,使之输出其它波形,如方波、三角波、锯齿波等均可;
③设计方案以程序实现为主,辅以必要的文字说明。
3.课程设计报告要求
①硬件系统设计:
设计思路、设计系统功能、主要芯片选型及使用方法、设计方案说明、电路示意图
②软件系统设计:
示例程序功能解读及输出波形示意图、设计软件功能、设计思路、实现源码(带程序注释)
③报告总结
二系统分析
利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。
在DSP中采集信号,并且对信号进行频谱分析,滤波等。
通过键盘或者串口命令选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示。
主要功能如下:
(1)对外部输入的模拟信号采集到DSP内存,会用CCS软件显示采集的数据波形。
(2)对采集的数据进行如下算法分析:
①频谱分析:
使用fft算法计算信号的频率。
②对信号进行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;i<=n-1;i++)
{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;
}
for(it=0;it<=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;
for(it=0;it<=(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;
}
}
if(l!
=0)
for(i=0;i<=n-1;i++)
{fr[i]=fr[i]/*n);
fi[i]=fi[i]/*n);
}
if(il!
=0)
for(i=0;i<=n-1;i++)
{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 { xmid[m]=; } for(m=0;m { xmean=x[m]+xmean; } xmean=*xmean/Length; for(m=0;m { x[m]=x[m]-xmean; } for(m=0;m { for(p=0;p { xmid[h_Len-p-1]=xmid[h_Len-p-2]; } xmid[0]=x[m]; r=; rm=; for(j=0;j { 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] { k1=r; } } for(r=20;r<64;r++) { 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]/; } for(j=0;j<256;j++) { pr[j]=data_buff[j]-sum; pi[j]=; } } FIR滤波器设计函数: voidfirdes(doublenpass)//求h(n) { intt; for(t=0;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); for(j=0;j<256;j++) { 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设计打下基础。 通过查阅资料以及老师同学的帮助,解决了课程设计中遇到的难题,也学习到了很多知识,将理论运用于实践。 感谢老师和同学的大力帮助,使我顺利完成了此次课程设计。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 课程设计 报告