dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx

上传人:b****4 文档编号:6228130 上传时间:2023-05-06 格式:DOCX 页数:24 大小:273.62KB
下载 相关 举报
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第1页
第1页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第2页
第2页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第3页
第3页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第4页
第4页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第5页
第5页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第6页
第6页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第7页
第7页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第8页
第8页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第9页
第9页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第10页
第10页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第11页
第11页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第12页
第12页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第13页
第13页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第14页
第14页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第15页
第15页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第16页
第16页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第17页
第17页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第18页
第18页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第19页
第19页 / 共24页
dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx

《dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。

dsp课程设计报告数据采集处理和控制系统设计大学论文Word格式文档下载.docx

将5V电源电压转换为3.3V和1.6V电源

3.4时钟模块设计

此处由外部晶振提供时钟信号

3.5存储器模块设计

DSP上只有一个读写控制信号引脚,而FLASH有两个引脚,将读、写分开,故在OE上接一个非门电路,实现高时读,低时写。

FLASH上的地址线和数据线与DSP上的地址线、数据线相连

3.6JATG模块设计

3.7TMS320VC5416最小系统PCB版图

板上包括了支持TMS320VC5416独立运行的时钟电路、复位电路、Flash模块、JTAG仿真接口电路以及电源模块等。

为节省空间和材料,部分器件放在了反面。

四软件设计

4.1正弦波信号发生器

所给例程输出波形为正弦波,波形如下图所示:

4.2三角波(方波)信号发生器

********************************************************************

****************三角波信号发生程序(括号内为方波)******************

********************************************************************

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

//定义输出数据

 

.text

start:

stm2000h,sp

//置堆栈指针

stm#k1,ar2

//将操作数#k1装入ar2

st#outdata1,*ar2

//将数据送到*ar2

nop

begin:

st#outdata1,*ar2

portw*ar2,0bfffh

//将*ar2内容从D/A转换器输出

rpt#7fffh

//等待一段时间

st#outdata2,*ar2

st#outdata3,*ar2

st#outdata4,*ar2

st#outdata5,*ar2

st#outdata6,*ar2

st#outdata7,*ar2

st#outdata8,*ar2

st#outdata9,*ar2

st#outdata10,*ar2

st#outdata11,*ar2

st#outdata12,*ar2

st#outdata13,*ar2

st#outdata14,*ar2

st#outdata15,*ar2

nop

st#outdata16,*ar2

st#outdata17,*ar2

st#outdata18,*ar2

st#outdata19,*ar2

st#outdata20,*ar2

st#outdata21,*ar2

st#outdata22,*ar2

st#outdata23,*ar2

st#outdata24,*ar2

st#outdata25,*ar2

st#outdata26,*ar2

st#outdata27,*ar2

st#outdata28,*ar2

st#outdata29,*ar2

st#outdata30,*ar2

st#outdata31,*ar2

st#outdata32,*ar2

bbegin

//循环输出32个数据

.end

//代码段结束

4.3本系统软件总体流程

4.4核心模块及实现代码

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]=1.0;

pi[0]=0.0;

p=6.283185306/(1.0*n);

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]/(1.0*n);

fi[i]=fi[i]/(1.0*n);

if(il!

{pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);

if(fabs(fr[i])<

0.000001*fabs(fi[i]))

{if((fi[i]*fr[i])>

0)pi[i]=90.0;

elsepi[i]=-90.0;

else

pi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;

}

卷积程序:

voidConvolveok(//卷积函数

double*x,//原始输入数据

double*h,//冲击响应

double*y,//卷积输出结果

UINT16Leng,//序列长度

UINT16h_Len)

{

UINT16m,p,j;

doubler,rm;

doublexmean=0.0;

doublexmid[100];

for(m=0;

m<

h_Len;

m++)

{

xmid[m]=0.0;

}

for(m=0;

m<

Leng;

m++)

xmean=x[m]+xmean;

}

xmean=1.0*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=0.0;

rm=0.0;

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=250000.0/256*k1;

f1=250000.0/256*k2;

fc=(f0+f1)/2;

归一化函数:

voidavg()

{intj;

sum=0.0;

for(j=0;

j<

256;

j++)

sum+=(data_buff[j]/256.0);

pr[j]=data_buff[j]-sum;

pi[j]=0.0;

FIR滤波器设计函数:

voidfirdes(doublenpass)//求h(n)

intt;

for(t=0;

t<

FLen;

t++)

h[t]=sin((t-(FLen-1)/2.0)*npass*3.1415926)/(3.1415926*(t-(FLen-1)/2.0));

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/250000.0;

firdes(npass);

Convolveok(data_buff,h,y,256,51);

yr[j]=y[j];

yi[j]=0.0;

kfft(yr,yi,256,8,Yr,Yi,0,1);

flag=1;

i1=0;

4.5程序运行效果

采集的数据及其FFT计算结果

51阶滤波器H(n)波形

滤波前后信号频谱图:

由滤波前后高低频分量的相对大小证明低通滤波器对高频分量的衰减作用比较强,但没有完全滤出去

采集数据波形与滤波后波形比较

由图可见滤波后信号中的高频分量得到了较大的衰减,滤波后波形变得平滑。

五课程设计总结

DSP芯片有更适合于数字信号处理的软件和硬件资源,非常适合于通用数字信号处理的开发,为数字信号处理的应用打开了新局面。

学好DSP技术具有非常重要的意义。

通过此次课程设计,我学习到了一个实际的电子系统的完整的设计流程,基本掌握了PCB设计软件AltiumDesigner的使用方法,学会了绘制系统的功能框图、原理图以及PCB版图。

同时掌握了CCS软件的使用和基于TMS320VC5416的DSP程序的编写。

此次课程设计首先绘制系统功能框图,使用AD软件绘制原理图和PCB版图。

在绘制系统功能框图过程中,要设计一个功能完备,能够独立运行的精简DSP硬件系统。

然后再基于此系统功能框图绘制原理图和PCB版图。

在原理图的绘制过程中要充分考虑到所使用的器件及管脚的网络标号,总线的链接等。

因为要绘制PCB版图,故要合理选择各个器件的封装,合理安排各个器件和线的位置,尤其是滤波电容要安放在靠近各个管脚的位置,真正起到滤波的作用。

在使用CCS软件编写程序时要注意变量定义以及函数声明。

通过查阅资料和与老师同学交流后完善了各部分程序。

DSP程序相对难一些,在编写时需要从系统整体来考虑,不断调整算法且保持思路清晰,熟悉各个子程序的功能。

通过此次课程设计,使我对TMS320C54x系列DSP的硬件结构有了较为深刻的认识,也学习到了实际的电子系统的完整的设计流程,熟悉了AD软件和CCS软件的使用方法,对于数字信号处理有了更深刻的认识。

数字信号处理无处不在,这样的课程设计很有意义,对于我们今后的学习与工作都会产生深远影响,为我们独立完成其他DSP设计打下基础。

通过查阅资料以及老师同学的帮助,解决了课程设计中遇到的难题,也学习到了很多知识,将理论运用于实践。

感谢老师和同学的大力帮助,使我顺利完成了此次课程设计。

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2