DSP课程设计总结.doc2 | 您所在的位置:网站首页 › dsp硬件系统设计 › DSP课程设计总结.doc2 |
DSP课程设计总结.doc2
时间:2023.8.6
DSP课程设计总结 (20XX-20XX学年第2学期) 题 目 : DSP课程设计 专业班级 : 电子08-3 学生姓名 : 学 号 : 指导教师 : 设计成绩 : 20XX 年 6 月 目 录 一 设计目的 二 系统分析 2.1设计要求 2.2主要任务 三 硬件设计 3.1 硬件总体结构 3.2 DSP模块设计 3.3 电源模块设计 3.4 时钟模块设计 3.5 存储器模块设计 四 软件设计 4.1 软件总体流程 4.2 核心模块及实现代码 五 课程设计总结 六 参考文献 一 设计目的 1、通过设计一个功能完备,能够独立运行的精简DSP硬件系统,熟悉Altium Designer的开发应用环境,达到熟练掌握如何绘制出系统的功能框图、使用AD(Altium Designer)绘制出系统的原理图和PCB版图的目的。 2、通过数据采集处理和控制系统设计,熟悉软件CCS环境,掌握采集和处理数字信号的方法。 二 系统分析 2.1设计要求 2.1.1设计一个功能完备,能够独立运行的精简DSP硬件系统。绘制出系统的功能框图、使用AD(Altium Designer)绘制出系统的原理图和PCB版图。 2.1.2利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个 率的信号的叠加。在DSP中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示 2.2主要任务 2.2.1在硬件系统设计中,使用word软件或者Visio软件绘制出系统的框图,要求框图能体现:具体的核心芯片(DSP、FLASH等)的名称,芯片互联的主要引脚(地址线,数据线和控制线)。根据设计的硬件系统结构,绘制系统的原理图和绘制系统的PCB板图。 2.2.2在软件设计中,对外部输入的模拟信号采集到DSP内存,会用CCS软件显示采集的数据波形。对采集的数据进行如下算法分析: (1)频谱分析:使用fft算法计算信号的频率。 (1)对信号进行IIR滤波或FIR滤波,并且计算滤波前后信号的频率, 并且将结果在LCD上显示。 三 硬件设计 3.1 硬件总体结构 3.2 DSP模块设计 3.3 电源模块设计 3.4 时钟模块设计 3.5 存储器模块设计 四 软件设计 4.1 软件总体流程 4.2 核心模块及实现代码 4.2.1信号采集并进行AD转换 /* ;*********************************************************************** ;* 北京达盛科技有限公司 ;* 研 发 部 ;* ;* http://www.techshine.com ;* ;*--------------------------------------------- 文件信息 --------------- ;* ;* 文件名称 : IO.C ;* 文件功能 : 该文件为测试数字量输入输出的测试程序,CPU=TMS320VC5402 ;* 接口说明: 输入IN: IO的 8000H 74ls244 ;* 输出OUT: IO的 8001H 74ls273 ;*----------------------------------------------------------------------- */ //------------------头文件-------------------------------------- #include "DspRegDefine.h" //VC5402 寄存器定义 #include "stdio.h" //输入输出头文件 //--------------------------------------------------------------- /* ****************** 宏定义 *************** ************************************************************ */ #define UCHAR unsigned char #define UINT16 unsigned int #define UINT32 unsigned long #define TRUE 1 #define FALSE 0 #define OUTH 0x5555 #define OUTL 0xaaaa #define Length 256 //--------------------------------------------------------------- /* ****************** 端口定义*************** ************************************************************ */ //--------------------------------------------------------- ioport UINT16 port8002; //定义输出io端口为0x8001; /* ********************************************************************** *************** 所使用的函数原型 ***************** ********************************************************************** */ UINT16 i = 0,fft=0; UINT16 data_buff[256]; double buff_data[256]; double data_buffim[256]; double Xr[256]; double Xi[256]; double X[256]; void cpu_init(void); //初始化CPU extern void kfft(double pr[Length],double pi[Length],int n,int k,double fr[Length],double fi[Length],int l,int il); void Delay(int numbers); //延迟 /* ************************************************************************ *********************** 函数定义 ****************** ************************************************************************ */ //-------------------------------------------------------------------- // 函数名称 : void cpu_init(void) // 函数说明 : 初始化CPU // 输入参数 : 无 // 输出参数 : 无 //-------------------------------------------------------------------- void cpu_init(void) { asm(" nop "); asm(" nop "); asm(" nop "); *(unsigned int*)CLKMD=0x0; //switch to DIV mode clkout= 1/2 clkin while(((*(unsigned int*)CLKMD)&01)!=0); *(unsigned int*)CLKMD=0x77ff; //switch to PLL X 1 mode *(unsigned int*)PMST=0x3FF2; *(unsigned int*)SWWSR=0x7fff; *(unsigned int*)SWCR=0x0001; *(unsigned int*)BSCR=0xf800; //-------------------------------------------------------------------- asm(" ssbx intm "); //Disable all mask interrupts *(unsigned int*)IMR=0x0004; //使能int2中断 asm(" rsbx INTM"); //开总中断 *(unsigned int*)IFR=0xffff; //-------------------------------------------------------------------- asm(" nop "); asm(" nop "); asm(" nop "); } /* *********************************************************** - 函数名称 : void Delay(int numbers) - 函数说明 : 延时 - 输入参数 : numbers - 输出参数 : 无 *********************************************************** */ void Delay(int numbers) { int i,j; for(i=0;i<4000;i++) for(j=0;j<numbers;j++); } interrupt void ExtInt2() //中断2中断子程序 { *(unsigned int*)IFR=0xFFFF; data_buff[i] = port8002 & 0x00ff; i++; if(i == 256) { i = 0; } } /* ************************************************************ ****************** 主函数 ******************* ************************************************************ */ void main() { //--------------CPU初始化-------------------------------- cpu_init(); for(;;) { } //---------------------程序结束----------------------- 4.2.2 使用fft算法计算信号的频率。 void kfft(double pr[Length],double pi[Length],int n,int k,double fr[Length],double fi[Length],int l,int il) { 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; } } 使用FFT进行运算后的波形 4.3求系统单位脉冲响应h(n) void firdes(double npass) { int t; for (t=0; t<FLen; t++) { h[t] = sin((t-(FLen-1)/2.0)*npass*pi)/(pi*(t-(FLen-1)/2.0)); } if (t == ((FLen-1)/2)) h[t]=npass; } 4.4对信号进行FIR滤波 interrupt void int2() { in_x[m] = port8002; in_x[m] &= 0x00FF; m++; intnum = m; if (intnum == Len) { intnum = 0; xmean = 0.0; for (i=0; i<Len; i++) { xmean = in_x[i] + xmean; } xmean = 1.0*xmean/Len; for (i=0; i<Len; i++) { x[i] = (double)(in_x[i] - xmean); } for (i=0; i<Len; i++) { for (p=0; p<FLen; p++) { xmid[FLen-p-1] = xmid[FLen-p-2]; } xmid[0] = x[i]; r = 0; rm= 0; for (j=0; j<FLen; j++) { r = xmid[j] * h[j]; rm = rm + r; } y[i] = rm; } m=0; flag = 1; } } 滤波后的波形 五 课程设计总结 通过这次数字信号课程设计,我觉得学到了很多东西。它让我懂得了什么是课程设计,为我们以后的毕业设计打下了一些基础。更重要的是通过这次课程设计,我多少清楚了在以后的工作中我们这个专业能做些什么,也为我们以后的工作积累了一些经验,很有意义。 在课程设计开始时,我还不是很明白我们到底要做些什么,或者说怎么去实现。因为不知道DSP原理图和PCB图,也没接触过protel DXP软件和CCS软件。但是大家都差不多,都会有这种感觉的。车到山前必有路,有路必有大众车。在宋博士的一步步带领和指导下,我们也几乎能跟上,比如,在课程设计一中,在老师的指导下,我至少明白了我们到底要做些什么,实现步骤是什么,也就是说实验目的和实验步骤明确了。由于还不熟悉软件的使用,所以具体实现还是遇到很多问题,比如说课程设计一中遇到了以下问题。一是如何创建自己的原理图并增加到原理图库个中,二是封装元件时,对不同的元件要用什么来封装,特别是对电容和非们的封装。三是布线时由于布局不好,所以布线虽然完成了,但布线很不整齐紧凑。等等一些问题。最后在老师和同学的指导和帮助下,但几乎解决了。特别是布线这一环节中,我花了很多时间进行了第二次布线,虽然还是不是十分完美,但感觉比第一次好多了,毕竟有了第一次布线的经验。最后再画板铺铜,总算完成了。至少知道了设计一个硬件系统,需要先设计结构框图,再画出原理图,再进行布线,最后画板铺地铺电源层等。 第二个软件设计实验比较难,主要是算法的实现比较难。比如FFT变换的实现和卷积的实现等。但在老师的讲解下,大部分都明白了,至于fft的实现,以后再研究。至少明白了这个课程设计的流程,即先进行采集外部信号并进行A/D转换,将转换后的信号采集到DSP内存,会用CCS软件显示采集的数据波形,使用fft算法计算信号的频率对信号进行卷积运算IIR滤波或FIR滤波等。 老师说过,如果我们这次课程设计能拿到九十分以上还找不到工作的话,他负责给我们找,。确实,如果我们能把这个课程设计做出来,并且几乎弄懂了,那以后找工作真不愁了。通这次课程设计,把理论运用于实践,使得我们加深了对理论知识的理解,锻炼了思考问题分析问题和解决问题的能力,收益很多,特别是把PCB板画出了,很高兴。这次实践为我们以后的毕业设计打下了一些基础,也为我们以后的工作积累了一些经验。 这次课程设计,我们四个班几乎都是有宋博士你带领,并且连续工作四个小时,所以老师你辛苦了。 六 参考文献 《DSP系统设计和BIOS编程即应用实例》机械工业出版社 赵加祥 《跟我学Protel DXP电路设计与制版》人民邮电出版社 甘登岱 更多相关推荐: 建筑结构课程设计设计总结工程结构设计心得课程设计对学生而言是其对所学课程内容掌握情况的一次自我验证,从而有着极其重要的意义。通过课程设计能提高学生对所学知识的综合应用能力,能全面检查并掌握所学内容;《建筑结构》从课程性质上讲是一门专业… 课程设计心得体会心得体会通过这次课程设计,让我更加深刻了解课本知识,和以往对知识的疏忽得以补充,在设计过程中遇到一些模糊的公式和专业用语,比如说经济刮板运输机及皮带运输的选择,在选择选择刮板皮带运输选型时,在使用手册时,有的数… 课程设计个人小结个人小结三周的课程设计结束了,我和同学们一起度过了这段忙碌而充实的时光。这次的课程设计深刻的反映出实践是检验真理的唯一标准这句话的真谛。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作… 信息工程学院课程设计总结通过近两周的奋斗,课程设计接近了尾声。经过两周的奋战我的课程设计终于完成了。在没有做课程设计以前觉得课程设计只是对信号与系统这门课程所学知识的单纯总结,但是通过这次做课程设计发现自己的看法有点太片面。课程设计不… 课程设计心得体会(通用)课程设计心得体会通用通过此次课程设计使我更加扎实的掌握了有关方面的知识在设计过程中虽然遇到了一些问题但经过一次又一次的思考一遍又一遍的检查终于找出了原因所在也暴露出了前期我在这方面的知识欠缺和经验不足实践出真知... 课程设计总结模板两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合… 万能课程设计心得体会2个1两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了… asp net 课程设计小结课程设计小结又过去了一周这次aspnet的课程设计中学习到了很多通过这次的课程设计检验和巩固了我平时所学的知识让我知道了平时学习中的不足教会了我如何去完整地完成简单的系统在设计的过程之中遇见问题是一定的有时候就... 数据结构课程设计总结KC021CHANGZHOUINSTITUTEOFTECHNOLOGY课程设计说明书课程名数据结构课程设计题目一元多项式运算系统二级学院计算机信息工程学院专业软件工程班级10软件一学号10030431姓名指导教... 课程设计心得嵌入式系统开发课程设计题目基于6410ARM的嵌入式WEB服务器的移植院系信息工程学院专业班级11计科特色班学生姓名邵飞飞学号1142157115设计地点13号楼605指导教师王华本起止时间20xx年4月21日... 课程设计心得感想体会29篇课程设计心得感想体会在做实验前一定要将课本上的知识吃透因为这是做实验的基础否则在老师讲解时就会听不懂这将使你在做实验时的难度加大浪费做实验的宝贵时间比如做应变片的实验你要清楚电桥的各种接法如果你不清楚在做实验时... 课程设计心得课程设计心得篇一课程设计心得本学期实时测量技术实验以电子设计大赛的形式老师命题学生可以选择老师的题目也可以自己命题并且组队操作其他的事情包括设计总体方案硬件电路软件设计焊接调试等工作趣味性强同时也可以学到很多东... 课程设计设计总结(40篇) |
CopyRight 2018-2019 实验室设备网 版权所有 |