DSP课程设计报告Word文档下载推荐.docx
《DSP课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP课程设计报告Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
二系统分析
利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。
在DSP中采集信号,并且对信号进行频谱分析,滤波等。
通过键盘或者串口命令选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示。
主要功能如下:
(1)对外部输入的模拟信号采集到DSP内存,会用CCS软件显示采集的数据波形。
(2)对采集的数据进行如下算法分析:
①频谱分析:
使用fft算法计算信号的频率。
②对信号进行IIR滤波或FIR滤波,并且计算滤波前后信号的频率。
③外部键盘或者从计算机来的串口命令选择算法功能,并且将结果在LCD上显示。
绘制出DSP系统的功能框图、使用AD(AltiumDesigner)绘制出系统的原理图和PCB版图。
在DSP中采集信号,用CCS软件显示采集的数据波形,以及对采集的数据进行算法分析。
三硬件设计
3.1硬件总体结构
3.2DSP模块设计
3.3电源模块设计
将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;
i