太原理工现代科技DSP课程设计正弦信号发生器.doc_第1页
太原理工现代科技DSP课程设计正弦信号发生器.doc_第2页
太原理工现代科技DSP课程设计正弦信号发生器.doc_第3页
太原理工现代科技DSP课程设计正弦信号发生器.doc_第4页
太原理工现代科技DSP课程设计正弦信号发生器.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

太原理工大学现代科技学院DSP硬件电路设计基础 课程设计设计名称 正弦信号发生器的设计 专业班级 学 号 姓 名 指导教师 同 组 人 太原理工大学现代科技学院专业班级学生姓名课程名称正弦信号发生器的设计设计名称正弦信号发生器的设计设计周数1.5周指导教师设计任务主要设计参数1. 掌握产生正弦波的方法;2. 学习正弦信号发生器的DSP实现原理;5. 学习使用CCS的波形观察窗口观察输入/输出信号波形和频谱变化情况。设计内容设计要求用DSP汇编语言及C语言进行编程,实现正弦信号发生器。主要参考资 料邹彦等DSP原理及应用北京:电子工业出版社2007年电气与电子信息类本科规划教材李利等DSP原理及应用北京:中国水利水电出版社2007年21世纪高等院校规划教材学生提交归档文件课程设计报告课程设计任务书注:1.课程设计完成后,学生提交的归档文件应按照:封面任务书说明书图纸的顺序进行装订上交(大张图纸不必装订) 2.可根据实际内容需要续表,但应保持原格式不变。 日期: 2015.12.18一、设计名称:正弦信号发生器的设计二、设计目的:1.通过实验掌握DSP的软件开发过程。2.学会应用汇编语言进行程序设计,在此集成开发环境下完成工程项目的创建,程序编写,编译,链接,调试以及数据的分析。3.学会用CCS(CodeComposerStudio)仿真模拟DSP芯片,通过CCS软件平台上应用C54X汇编语言来实现正弦信号发生装置。三、设计内容:用DSP汇编语言及C语言进行编程,实现正弦信号发生器。四、设计原理:编写一个产生正弦波信号的程序,在CCS软件下进行模拟运行,观察输出结果设计原理:本实验产生正弦波的方法是泰勒级数展开法。泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。求一个角度的正弦值和余弦值取泰勒级数的前5项,得近似计算式: 五、设计总体方案:利用计算一个角度的正弦值和余弦值程序可实现正弦波,其实现步骤如下:第一步:利用sin和cos子程序计算0度45度(间隔为0.5)的正弦和余弦值。第二步:利用sin(2x)=2sin(x)cos(x)公示,计算0度90度的正弦值(间隔为1度)。第三步:通过复制,获得0度到359度的正弦值。第四步:将0度到359度的正弦值重复从PA口输出,便可得到正弦波。六、源程序:程序(1) .mmregs .def start .def d_xs,d_sinx,d_xc,d_cosx,sinx,cosxsin_x: .usect sin_x,360STACK: .usect STACK,10Hk_theta .set 286 ;theta=pi/360(0.5deg)start: .text STM #STACK+10H,SP STM k_theta,AR1;设置增量 STM 0,AR0;AR0=X=0 STM #sin_x,AR6 ;AR6指向sin_x STM #90,BRC;设置重复次数,计算sin0到sin90 RPTB loop1-1 LDM AR0,A LD #d_xs,DP STL A,d_xs STL A,d_xc CALL sinx ;调用sinx子程序计算x的正弦值 CALL cosx ;调用cos子程序计算x的余弦值 LD #d_sinx,DP LD d_sinx,16,A ;累加器A=sin(x) MPYA d_cosx ;累加器B=sin(x)*cos(x) STH B,1,*AR6+ ; 结果放置到AR6所指向的单元 MAR *AR0+1loop1: STM #sin_x+89, AR7 ;AR7指向sin_x*89单元 STM #88,BRC ;设置重复次数,计算sin91到sin179 RPTB loop2-1 LD *AR7-,A STL A,*AR6+loop2: STM #179,BRC ;计算sin180到sin359 STM #sin_x,AR7 RPTB loop3-1 LD *AR7+,A;AR7指向sin_x单元 NEG A STL A,*AR6+loop3: STM #sin_x,AR6 ;AR6指向sin_x单元 STM #1,AR0 STM #360,BK B loop3sinx: .def d_xs,d_sinx .datatable_s .word 01C7H ;C1=1/(8*9) .word 030BH ;C2=1/(6*7) .word 0666H ;C3=1/(4*5) .word 1556H ;C4=1/(2*3)d_coef_s .usect coef_s,4d_xs .usect sin_vars,1d_squr_xs .usect sin_vars,1d_temp_s .usect sin_vars,1d_sinx .usect sin_vars,1d_l_s .usect sin_vars,1 .text SSBX FRCT STM #d_coef_s,AR5 RPT #3 MVPD #table_s,*AR5+ STM #d_coef_s,AR3 STM #d_xs,AR2 STM #d_l_s,AR4 ST #7FFFH,d_l_s SQUR *AR2+,A ;A=x2 ST A,*AR2 ;(AR2)=x2 |LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x2/72,T=x2 MPYA A ;A=T*A=x2(1-x2/72) STH A,*AR2 ;(d_temp)=x2(1-x2/72) MASR *AR2-,*AR3+,B,A ;A=1-x2/42(1-x2/72);T=x2(1-x2/72) MPYA *AR2+ ;B=x2(1-x2/42(1-x2/72) ST B,*AR2 ;(d_temp)=x2(1-x2/42(1-x2/72) |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/20(1-x2/42(1-x2/72) MPYA *AR2+ ;B=x2(1-x2/20(1-x2/42(1-x2/72) ST B,*AR2 ;(d_temp)=B |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/6(1-x2/20(1-x2/42(1-x2/72) MPYA d_xs ;B=x(1-x2/6(1-x2/20(1-x2/42(1-x2/72) STH B,d_sinx RETcosx: .def d_xc,d_cosxd_coef_c .usect coef_c,4 .datatable_c .word 0249H ;C1=1/(7*8) .word 0444H ;C2=1/(5*6) .word 0AABH ;C3=1/(3*4) .word 4000H ;C4=1/2d_xc .usect cos_vars,1d_squr_xc .usect cos_vars,1d_temp_c .usect cos_vars,1d_cosx .usect cos_vars,1c_l_c .usect cos_vars,1 .text SSBX FRCT STM #d_coef_c,AR5 RPT #3 MVPD #table_c,*AR5+ STM #d_coef_c,AR3 STM #d_xc,AR2 STM #c_l_c,AR4 ST #7FFFH,c_l_c SQUR *AR2+,A ;A=x2 ST A,*AR2 ;(AR2)=x2 |LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x2/56,T=x2 MPYA A ;A=T*A=x2(1-x2/56) STH A,*AR2 ;(d_temp)=x2(1-x2/56) MASR *AR2-,*AR3+,B,A ;A=1-x2/30(1-x2/56); T=x2(1-x2/56) MPYA *AR2+ ;B=x2(1-x2/30(1-x2/56) ST B,*AR2 ;(d_temp)=x2(1-x2/30(1-x2/56) |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/12(1-x2/30(1-x2/56) SFTA A,-1,A ;-1/2 NEG A MPYA *AR2+ ;B=-x2/2(1-x2/12(1-x2/30(1-x2/56) MAR *AR2+ RETD ADD *AR4,16,B ;B=-x2/2(1-x2/12(1-x2/30(1-x2/56) STH B,*AR2 RET程序(2) MEMORY PAGE 0: EPROM: org=0E000H, len=1000H VECS: org=0FF80H, len=0080H PAGE 1: SPRAM: org=0060H, len=0020H DARAM1: org=0080H, len=0010H DARAM2: org=0090H, len=0010H DARAM3: org=0200H, len=0200H SECTIONS .text : EPROM PAGE 0 .data : EPROM PAGE 0 STACK : SPRAM PAGE 1 sin_vars : DARAM1 PAGE 1 coef_s : DARAM1 PAGE 1 cos_vars : DARAM2 PAGE 1 coef_c : DARAM2 PAGE 1 sin_x : align(512) DARAM3 PAGE 1 .vectors :VECS PAGE 0 .end七、课程设计操作1.在桌面双击CCStudio,在Familu下选择C54XX,platform下选择simulator,选中C5402芯片,单击Add记载,之后点击Save&Quit进入操作页面。2.在Project菜单中选择New项,在Project中输入chenkaisin。3.执行菜单file/New/source files,输入程序(1)的源程序,保存名为chenkaisin.asm。4.再次执行菜单file/New/source files,输入程序(2)的源程序,保存名为chenkaisin.cmd。5.在chenkaisin.pjt下的source加载保存的两个文件。6.选择菜单命令ProjectRebuild All,对工程重新编译、汇编和链接,检测无错误会生成.out文件。7.选择菜单命令FileLoad Program,在当前目录的Debug目录下选择chenkaisin.out并打开,将Build生成的程序加载到DSP中。8.选择菜单命令DebugRun或在Debug工具栏上单击Run按钮,运行该程序。9.选择菜单命令Viewgraphtime/frequency.10.在打开的Graph property dialog 窗口下将strat address 中输入sin_x,在acquisition buffer size 中输入360,在Display Data Size中也输入360,在DSP Data TYpe中选择16-bit signed interger,执行OK。11.实验操作部分截图八、实验结果及分析由此图可以看出,此编程成功展示了一个周期内的正弦信号,表示该程序能在C5402中成功的实现正弦波信号的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论