您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > DSP课设报告-函数信号发生器的设计
华北水利水电大学NorthChinaUniversityofWaterResourcesandElectricPowerDSP技术与应用课程设计题目函数信号发生器的设计课程名称DSP技术与应用学院信息工程学院专业通信工程目录摘要一、实验目的............................................1二、实验要求............................................1三、实验原理............................................11、功能简介..........................................12、相应波形简介......................................1四、实验步骤............................................21、相应波形程序的编写................................22、程序的调用、调试、运行............................2五、实验结果............................................41、三角波形..........................................42、正弦波形..........................................43、方波波形..........................................5六、结论和体会..........................................6摘要信号发生器是一种信号发生装置,广泛应用与日常生活以及各种工作中,一般区分为函数信号发生器及任意波形发生器,本次课程设计主要是基于TMS320-DSP设计的函数信号发生器,通过不同参数的设置,它能产生某些特定的周期性时间函数波形,例如方波、正弦波、三角波、任意信号的波形,由于其简单便于操作以及各种强大的计算功能,除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域。本次课程设计主要是通过TMS320系列DSP来进行相应信号的设计,同时并采用MATLAB仿真的源代码及输出波形,在实验过程中学习并掌握其性能、结构原理、指令系统及编程方法。从而达到本次课程设计的要求。关键字:函数信号发生器TMS320-DSPMATLAB方波三角波正弦波随机信号波-1-一、实验目的学习函数发生器的工作原理和应用,理解TMS320-DSP结构原理和编程方法;利用汇编语言MATLAB语言与开发环境进行函数信号发生器相应语言的编写;掌握CCS集成开发环境的常用开发、调试功能的使用,最后通过CCS完成信号波形的发生器;二、实验要求通过本次对函数信号发生器的课程设计,学习函数发生器的工作原理,通过对CCS的操作,进一步加深对DSP芯片TMS320C54x的结构以及其工作性能的理解和掌握,为了使设计更加合理便于操作,可以通过使用汇编语言或C语言并借助于MATLAB对程序进行设计和编辑。最后完成相应波形的设计以及相应的波形图。三、实验原理1、功能简介本次对函数信号发生器的课程设计是基于DSP的函数信号发生器设计与仿真,用使用汇编语言或C语言并借助于MATLAB设计出相应数字波形发生器。此次设计中我们主要对方波、正弦波、三角波、任意信号的波形进行了设计。在对矩形、三角、正弦等信号这类函数型信号进行设计时,首先要先对其进行运算和相应参数的设置。首先先对一个周期中的波形进行量化离散,在DSP存储器中开辟一个缓冲区用来存放这些个量化值,当一个周期输出结束后,再从缓冲区起始处重新开始读取信号量化值输出,反复操作便可得到连续的信号波形。2、相应波形简介在常用的产生正弦波的方法主要有两种,查表法和泰勒级数展开法。但在应用时主要采用泰勒级数展开法,因为和查表法相比,需要的存储单元更少,而且精度高。一个角度为的正弦和余弦函数,都可以展开成泰勒级数,取其前五项进行近似为:-2-)))981(541(321(!9!7!5!3sin2229753xxxxxxxxx)))871(651(431(!21!8!6!4!21cos22228642xxxxxxxx在正弦信号发生器的设计中,首先以前面的算法计算(间隔为5.0)的sin和cos值,再利用cossin22sin求出90~0的sin值(j间隔为1)。然后,通过复制,获得的正弦值,重复输出该值就可以得到正弦波。对于三角波,首先在前1/4周期内定义一个斜率为k满足k×1/4T,产生前1/4个周期的三角波,然后通过复制得到一个周期的三角波,储存在存储器中,最后重复输出该值就可以得到三角波。对于方波,首先定义一个周期的存储空间,在前半个周期中输出幅度1,后半个周期输出0,然后重复输出该值就可以得到方波。四、实验步骤1、相应波形程序的编写我们对波形进行分析和处理之后,为了简化程序,先设计一个存储单元,用来存储每种波形的一个周期的点数,然后在后续程序中再进行调用。程序存储单元设计的程序:sin_x:.usectsin_x,360;为sin_x保留360个存储单元STACK:.usectSTACK,10;为堆栈空间分配10个存储单元.bsscount,1;计数单元为1.bssoutput,1800;为OUTPUT分配1800个单元具体的各个波形的设计程序见附录页。2、程序的调用、调试、运行1)在桌面上点击SetupCCS2图标,双击进入,会有如下界面选择图中所示的仿真器的型号,完成操作后,按saveandquit进行下一步。2)选择菜单项Project→Open,找到相应的fountionout.pjt文件并打开。如图:-3-3)对程序进行调用、调试、运行点击工具栏按钮CCS重新编译、汇编和连接工程中的所有文件,有关此过程的信息显示在窗口底部的信息框中。选择File→LoadProgram,选择刚重新编译过的程序fountionout.out-4-修改参数然后得出实验波形五、实验结果1、三角波形2、正弦波形-5-3、方波波形-6-六、结论和体会很多时候我们对各种知识的学习主要是来自于课本上,很少将这些知识运用到实际应用中,从而使自己的知识掌握的不牢固。所以我很珍惜学校提供的宝贵的课设机会,因为不仅可以检验自己的能力,而且可以让自己加深对知识的学习和掌握。通过本次对函数信号发生器的课程设计,巩固了对课本知识的学习,同时对函数发生器的工作原理有了进一步的了解和掌握,通过对CCS的操作,我进一步加深对DSP芯片TMS320C54x的结构以及其工作性能的理解和掌握,掌握了如何通过CCS完成信号波形的发生器的设计。自己也掌握了更多的知识,为接下来的实验和学习打下了良好的基础。当然在实验中也遇到了很多的问题,实验开始前,对于老师的要求同时实现多个波形的的信号发生器,我们组不知道如何操作,因为不同的波对应不同的波形,不同的波形需要不同的程序和参数,这样需要设计很长的一段程序,并且来回修改参数可能会导致波形混乱。最后查阅课本资料以及对波形的分析,我们先对波形进行量化处理,先设计一个存储单元,用来存储每种波形的一个周期的点数,然后在后续程序中再进行分别调用,最后使其复制循环得到合适的波形数目,并且可以通过对相应参数和量化点的选择来完成对波形频率的修改。同时为了使设计更加合理便于操作,在老师和同学的帮助下,以及对汇编语言的学习,我们使用汇编语言对程序进行设计、编辑和调用。最后成功完成相应波形的设计以及相应的波形图。获益匪浅,自己不仅掌握了更多的知识,而且为接下来的实验和学习打下了良好的基础。参考文献:【1】陈金鹰,DSP技术与应用,机械出版社【2】张雄伟,DSP芯片的原理及开发应用,电子工业出版社【3】孙宗瀛,TMS320C54xDSP原理设计及应用,清华大学出版社-7-附录:.titlefountionout.asm;为汇编语言原程序命名.mmregs.def_c_int00.globalsinx,d_xs,d_sinx,cosx,d_xc,d_cosx,sinx_out,rect_out,tria_outsin_x:.usectsin_x,360STACK:.usectSTACK,10interval.set1.bsscount,1.bssoutput,1800_c_int00:ST#0,*(count)STM#STACK+10,SPSTM#1,AR7CMPMAR7,#3;#3产生方波BCrect_sub,TCCMPMAR7,#2;#2产生三角波BCtria_sub,TCCMPMAR7,#1;#1产生正弦信号BCsin_sub,TCnopnopend:bendsin_sub:nopnopCALLsinx_outBconrect_sub:nopnopCALLrect_outnopnopBcontria_sub:nopnopCALLtria_out存储单元的设计选取一个周期输入点360输出点数1800存储在存储单元里的一个周期波形的子函数的调用-8-nopnopBconcon:STM#sin_x,AR5STMinterval,AR0STM#360,BKSTM#output,AR2loop4:MVDD*AR5+0%,*AR2+ADDM#1,*(count)CMPM*(count),1800NOPNOPBCdone,tcbloop4done:bdone*产生sin函数sinx_out:k_stheta.set286;theta=pi/360(0.5deg.).textSTMk_stheta,AR0;AR0--k_sthetaSTM0,AR1;AR1=xSTM#sin_x,AR6STM#90,BRC;fromsin0---sin90(deg)RPTBloop1-1LDMAR1,ALD#d_xs,DPSTLA,@d_xsSTLA,@d_xcCALLsinx;(d_sinx)=sin(x)CALLcosx;(d_cosx)=cos(x)LD#d_sinx,DPLD@d_sinx,16,A;A=sin(x)MPYA@d_cosx;B=sin(x)*cos(x)STHB,1,*AR6+;AR6--2*sin(x)*cos(x)MAR*AR1+0;每次增加0.5loop1:STM#sin_x+89,AR7;sin(91)---sin(179)STM#88,BRCRPTBloop2-1LD*AR7-,ASTLA,*AR6+loop2:STM#179,BRC;sin(180)---sin(359)-9-STM#sin_x,AR7RPTBloop3-1LD*AR7+,ANEGASTLA,*AR6+loop3:RET*sin(theta)=x(1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9))))sinx:.defd_xs,d_sinx.datatable_s.word01c7h;1/(8*9).word030bh;1/(6*7).word0666h;1/(4*5).word1556h;1/(2*3)d_coef_s.usectcoef_s,4d_xs.usectsin_vars,1d_squr_xs.usectsin_vars,1d_temp_s.usectsin_vars,1d_sinx.usectsin_vars,1c_1_s.usectsin_vars,1.textSSBXFRCTSTM#d_coef_s,AR5RPT#3MVPD#table_s,*AR5+STM#d_coef_s,AR3STM#d_xs,AR2STM#c_1_s,AR4ST#7FFFh,c_1_s;7fffh==1SQUR*AR2+,ASTA,*AR2||LD*AR4,BMASR*AR2+,*AR3+,B,AMP
本文标题:DSP课设报告-函数信号发生器的设计
链接地址:https://www.777doc.com/doc-5692506 .html