太原理工大学DSP课程设计设计题目:正弦信号发生器的设计班级:电信0801班姓名:凌天一、设计目的1、通过实验掌握DSP的软件开发过程2、学会运用汇编语言进行程序设计3、学会用CCS仿真模拟DSP芯片,通过CCS软件平台上应用C54X汇编语言来实现正弦信号发生装置。二、设计原理本实验产生正弦波的方法是泰勒级数展开法。泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。求一个角度的正弦值取泰勒级数的前5项,得近似计算式:x3x5x7x9sin(x)=x-+-+3!5!7!9!2222xxxx=x1-1-1-1-(三、总体方案设计2⨯3(4⨯5(6⨯7(8⨯9))))本实验是基于CCS开发环境的。CCS是TI公司推出的为开发TMS320系列DSP软件的集成开发环境,是目前使用最为广泛的DSP开发软件之一。它提供了环境配置、源文件编译、编译连接、程序调试、跟踪分析等环节,并把软、硬件开发工具集成在一起,使程序的编写、汇编、程序的软硬件仿真和调试等开发工作在统一的环境中进行,从而加速软件开发进程。通过CCS软件平台上应用C54X汇编语言来实现正弦信号发生装置。总体思想是:正弦波的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器处理大量重复计算的优势来计算x轴每一点对应的y的值(在x轴取N个点进行逼近)。整个系统软件由主程序和基于泰勒展开法的SIN子程序组成,相应的软件流程图如图。四、设计内容1、设置在Family下选择C55xx,将看到所有C55xx的仿真驱动,包括软件仿真和硬件仿真;在Platform下选择Simulator,在AvailableFactoryBoards中只显示软件仿真驱动,选中相应的驱动;双击C55xxRev4.0CPUFunctionalSimulator,可以在MySystem下看到所加入的驱动;点击Save&Quit,将保存设置退出SetupCCStudiov3.1并启动运行CCStudio。2、编写汇编源程序sin。3.、建立汇编源程序在CCS环境下,点击file/new/sourcefile菜单命令,打开一个空白文档,将汇编程序输入。单击file/save菜单命令,在D:\programfiles\ti\myprojects下保存文件名为sin,并选择保存类型为*.asm。4、建立链接命令文件。5、创建新的工程文件启动CCS,在Project菜单中选择New项,在Project中输入denglin,CCS将创建一个名为denglin.pjt的工程。6、将文件添加到工程中在工程中添加源文件,执行菜单project/addfilestoproject,把sin文件添加到工程中。7、生成和运行程序(1)选择菜单命令Project→RebuildAll,对工程重新编译、汇编和链接,主窗口下方的信息窗口将显示build进行汇编、编译和链接的相关信息。(2)选择菜单命令File→LoadProgram,在当前目录的Debug目录下选择sin并打开,将Build生成的程序加载到DSP中。(3)选择菜单命令Debug→Run或在Debug工具栏上单击Run按钮,运行该程序。8、观察运行结果点击view/gragh菜单命令观看图像五、主要参数六、源程序汇编源程序sin.mmregs.defstart.defd_xs,d_sinx,d_xc,d_cosx,sinx,cosxsin_x:.usectsin_x,360STACK:.usectSTACK,10Hk_theta.set286;theta=pi/360(0.5deg)start:.textSTM#STACK+10H,SPSTMk_theta,AR0STM0,AR1STM#sin_x,AR6STM#90,BRCRPTBloop1-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)MAR*AR1+0loop1:STM#sin_x+89,AR7;sin91(deg.)-sin179(deg.)STM#88,BRCRPTBloop2-1LD*AR7-,ASTLA,*AR6+loop2:STM#179,BRC;sin180(deg.)-sin359(deg.)STM#sin_x,AR7RPTBloop3-1LD*AR7+,ANEGASTLA,*AR6+loop3:STM#sin_x,AR6;generatesinwaveSTM#1,AR0STM#360,BKBloop3sinx:.defd_xs,d_sinx.datatable_s.word01C7H;C1=1/(8*9).word030BH;C2=1/(6*7).word0666H;C3=1/(4*5).word1556H;C4=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,1d_l_s.usectsin_vars,1.textSSBXFRCTSTM#d_coef_s,AR5;movecoeffstable_sRPT#3MVPD#table_s,*AR5+STM#d_coef_s,AR3STM#d_xs,AR2STM#d_l_s,AR4ST#7FFFH,d_l_sSQUR*AR2+,A;A=x^2STA,*AR2;(AR2)=x^2||LD*AR4,B;B=1MASR*AR2+,*AR3+,B,A;A=1-x^2/72,T=x^2MPYAA;A=T*A=x^2(1-x^2/72)STHA,*AR2;(d_temp)=x^2(1-x^2/72)MASR*AR2-,*AR3+,B,A;A=1-x^2/42(1-x^2/72);T=x^2(1-x^2/72)MPYA*AR2+;B=x^2(1-x^2/42(1-x^2/72))STB,*AR2;(d_temp)=x^2(1-x^2/42(1-x^2/72))||LD*AR4,B;B=1MASR*AR2-,*AR3+,B,A;A=1-x^2/20(1-x^2/42(1-x^2/72))MPYA*AR2+;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))STB,*AR2;(d_temp)=B||LD*AR4,B;B=1MASR*AR2-,*AR3+,B,A;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))MPYAd_xs;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))STHB,d_sinx;sin(theta)RETcosx:.defd_xc,d_cosxd_coef_c.usectcoef_c,4.datatable_c.word0249H;C1=1/(7*8).word0444H;C2=1/(5*6).word0AABH;C3=1/(3*4).word4000H;C4=1/2d_xc.usectcos_vars,1d_squr_xc.usectcos_vars,1d_temp_c.usectcos_vars,1d_cosx.usectcos_vars,1c_l_c.usectcos_vars,1.textSSBXFRCTSTM#d_coef_c,AR5;movecoeffsMASR*AR2-,*AR3+,B,A;A=1-x^2/30(1-x^2/56);T=x^2(1-x^2/56)MPYA*AR2+;B=x^2(1-x^2/30(1-x^2/56))STB,*AR2;(d_temp)=x^2(1-x^2/30(1-x^2/56)table_cRPT#3MVPD#table_c,*AR5+STM#d_coef_c,AR3STM#d_xc,AR2STM#c_l_c,AR4ST#7FFFH,c_l_cSQUR*AR2+,A;A=x^2STA,*AR2;(AR2)=x^2||LD*AR4,B;B=1MASR*AR2+,*AR3+,B,A;A=1-x^2/56,T=x^2MPYAA;A=T*A=x^2(1-x^2/56)STHA,*AR2;(d_temp)=x^2(1-x^2/56)链接命令文件MEMORY{PAGE0:EPROM:org=0E000H,len=1000HVECS:org=0FF80H,len=0080HPAGE1:SPRAM:org=0060H,len=0020HDARAM1:org=0080H,len=0010HDARAM2:org=0090H,len=0010HDARAM3:org=0200H,len=0200H}SECTIONS{.text:EPROMPAGE0.data:EPROMPAGE0STACK:SPRAMPAGE1sin_vars:DARAM1PAGE1coef_s:DARAM1PAGE1cos_vars:DARAM2PAGE1coef_c:DARAM2PAGE1sin_x:align(512){}DARAM3.vectors:VECSPAGE0})||LD*AR4,B;B=1MASR*AR2-,*AR3+,B,A;A=1-x^2/12(1-x^2/30(1-x^2/56))SFTAA,-1,A;-1/2NEGAMPYA*AR2+;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))MAR*AR2+RETDADD*AR4,16,B;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))STHB,*AR2;cos(theta)RET.endPAGE1七、实验结果及分析结果成功生成了正弦波图像,表明改程序能通过TMS320C54x产生正弦信号八、设计总结这次实验把平时书本上生硬的文字变成了活生生的图像,使我对这门学科的基本知识、理论解起来更加方便直观和深刻。通过实验我基本了解了DSP应用系统开发方法和设计过程,掌握了汇编源程序的编辑、汇编和链接过程,熟悉了CCS集成开发环境,CCS的安装及设置,CCS集成开发环境,CCS的基本使用,调试应用程序。我成功通过CCS软件应用C54X汇编语言实现了正弦信号发生装置,这次实验使我能够更真实地体会到DSP的功能和用途。