dsp课程设计实验报告总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP课程设计总结(2013-2014学年第2学期)
题目:
专业班级:电子1103
学生姓名:万蒙
学号:11052304
指导教师:
设计成绩:
2014 年6 月
目录
一设计目的----------------------------------------------------------------------3 二系统分析----------------------------------------------------------------------3 三硬件设计
3.1 硬件总体结构-----------------------------------------------------------3
3.2 DSP模块设计-----------------------------------------------------------4
3.3 电源模块设计----------------------------------------------------------4
3.4 时钟模块设计----------------------------------------------------------5
3.5 存储器模块设计--------------------------------------------------------6
3.6 复位模块设计----------------------------------------------------------6
3.7 JTAG模块设计--------------------------------------------------------7 四软件设计
4.1 软件总体流程-----------------------------------------------------7
4.2 核心模块及实现代码---------------------------------------8
五课程设计总结-----------------------------------------------------14
一、设计目的
设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP 控制程序。
二、系统分析
1.1设计要求
硬件要求:
(1)使用TMS320VC5416作为核心芯片。
(2)具有最简单的led控制功能。
(3)具有存放程序的外部Flash芯片。
(4)外部输入+5V电源。
(5)绘制出系统的功能框图。
(6)使用AD(Altium Designer)绘制出系统的原理图和PCB版图。
软件要求:
利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示。
三、硬件设计
3.1 硬件总体结构
3.2 DSP总体结构
3.3 电源模块设计
3.4 时钟模块设计
3.5 存储器模块设计
3.6复位模块设计
3.7 JTAG模块设计
四、硬件设计
4.1 软件总体流程
4.2核心模块及实现代码
1.采集数据去直流
in_x[m] = port8002 & 0x00ff;//读取数据
m++;
intnum = m;
if (intnum == Len) //以256个点为采样周期{
intnum = 0;
xavg = 0.0;
for (s=0; s { xavg = in_x[s] + xavg; //归一化处理} xavg = xavg/Len;//采样均值 for (s=0; s { x[s] = 1.0*(in_x[s] - xavg); } 1.FFT变换 void kfft(double pr[Len],double pi[Len],int n,int k,double fr[Len],double fi[Len],int l,int il) //pr为实部,pi为虚部,k为蝶形运算级数 { int it,m,is,i,j,nv,l0; double p,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<=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];