收藏 分销(赏)

-dsp课程设计实验报告总结.doc

上传人:天**** 文档编号:4301516 上传时间:2024-09-04 格式:DOC 页数:16 大小:242.01KB 下载积分:8 金币
下载 相关 举报
-dsp课程设计实验报告总结.doc_第1页
第1页 / 共16页
-dsp课程设计实验报告总结.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
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]; } 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]/(1.0*n; fi[i]=fi[i]/(1.0*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]<0.000001*fabs(fi[i] { if ((fi[i]*fr[i]>0 pi[i]=90.0; else pi[i]=-90.0; } else pi[i]=atan(fi[i]/fr[i]*360.0/6.283185306;//pi为相位 } } 2. 计算频率 void cf(double f[Len] { double max; int no=0; max=f[0]; for(i=0;i<128;i++ { if(f[i]>max { max=f[i];//max为最大幅值 no=i;//最大幅值处对应序数 } } fstop=no*fs/256; 3. FIR滤波 void firdes(double npass //求出窗口函数h { int t; for (t=0; t { h[t] = sin((t-(FLen-1/2.0*npass*pai/(pai*(t-(FLen-1/2.0; } if (t == ((FLen-1/2 h[t]=npass; } //作卷积 for (s=0; s { x[s] = 1.0*(in_x[s] - xavg; pr[s] = x[s]; //输入实部 pi[s] = 0; //输入虚部 for (p=0; p { xmid[FLen-p-1] = xmid[FLen-p-2]; } xmid[0] = x[s]; r = 0; rm= 0; for (j=0; j { r = xmid[j] * h[j]; rm = rm + r; } y[s] = rm; } 4. LCD显示 SendCMD(CLEAR; showperson(; Delay(1; //----------------------------------------------------------- SendCMD(CLEAR; SendCMD(0x0080; //设定DDRAM的地址在第一行 80H delay_100us(; for(i =0;i<16;i++ { SendDat(data_buff3[i]; delay_100us(; asm(" nop "; } asm(" nop "; SendCMD(0x0090; shownum(f1; //------------------------------ SendCMD(0x0088; //设定DDRAM的地址在第二行 90H delay_100us(; for(i =0;i<16;i++ { SendDat(data_buff4[i]; delay_100us(; } SendCMD(0x0098; shownum(f2; 4.3 软件实验效果图 1.去直流 2.滤波前fft 3.滤波后fft 4.窗口函数 五 课程设计总结 在为期两个多星期的综合设计中,重新熟悉了一下AD和CCS软件的操作 。在画原理图时,各元件的连接及封装形式都应参照手册。只有深刻了解各管脚的功能,才能准确快速地画好原理图。画好原理图后,要先编译一下看是否有连接错误。 如果原理图有所改变,可以在PCB中重新导入。如果元器件管脚或IO引脚变绿,可能是间距违反了规定的rule。可以将rule里的间距改小一点。在pcb连线过程中,我发现 移动clk时钟器件,其管脚变绿,但rule并无问题。后经查阅资料,取消了Drc功能,才恢复正常。在连接滤波电容时,将滤波电容靠近其滤波元器件。 在软件设计过程中,前两天一直没有搞清楚设计要求,进展缓慢。首先了结了一下各个模块程序的输入输出变量的含义,只有 这样才能正确地调用各个函数。在计算频率时,其实我只计算了一个频率。输入是一个混频信号,由于左右对称,在128点内可得到两个最大幅度,0到30(或其他分界点亦可,视滤波效果而言),比较一次,30到128,再比较一次。滤波函数仅仅只是计算了窗口函数,故还需将输入信号函数和窗口函数进行卷积得到最终结果。 在编写LCD显示模块程序时,经常出现乱码。Unsigned char类型的字符串数组,一个汉字相当于两个英文字母,如果地址1没有安排好容易出现乱码。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服