1、湘潭大学数字信号处理实验报告第二次正弦信号发生器数字信号处理实验报告(第二次) 学 院: 班 级: 姓 名: 学 号: 指导老师: 完成日期:内容:实验四、正弦信号发生器实验四、正弦信号发生器一、 实验目的1. 掌握利用DSP产生正弦信号的原理2. 熟悉子程序调用的程序结构以及堆栈的使用3. 掌握CCS的图形输出操作二、 实验设备1. 集成开发环境Code Composer Studio(简称CCS)2. 实验代码Sin.s54、Lab.cmd和Lab.gel三、实验内容1. 阅读理解多项式逼近正弦的文档 ,为第一象限内的弧度值。因为,所以只需将第二,三,四象限内的弧度值转换到第一象限即可计算
2、出相应的正弦函数值。由于有限精度,规定弧度值从,其中=0x7FFF,/2=0x4000,=0x8000。利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A中的当前弧度值,以便计算结束后实现增量。正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。自动增长时要注意当超过后必须调整到的范围内才能调用计算子程序,即若。2. 阅读和理解Sin.s54Sin.s54程序如下:;*; SJTU DSP Tech. Center; Copyright (c) 2003 SJTU DSP Tech. Center. All
3、 Rights Reserved.; Description:; TMS320C54x Program for Students Experiment; History:; Date Authors Changes; 2003/08/01 Fu Xuan Created.;*STACK_ADDR .set 0x0500STEP .set 0x0400 ;delta x (must be positive), the more the higher frequency ;T=65536/STEP, f=1/T .bss sin_out, 1 .mmregs .global main .textm
4、ain: stm #STACK_ADDR, SP stm #0x00A8, PMST ;IPTR=0x0080 stm #0x0000, SWWSR ;software wait status register sub A ssbx CPL ;direct address using SP ssbx FRCT ;fraction mode ssbx OVM ;overflow mode ssbx SXM ;sign extension stm #sin_out, AR6sin_loop: pshm AG ;save current x ;ddian OK pshm AH ;ddian OK p
5、shm AL ;ddian OK call calculate_sin ;-pi = x pi, B=A-pi ;ddian OK bc normal_increase, BLT;ddian OK ld #0x8000, A ;A=-pi add B, A ;A=B+(-pi)=x - 2*pinormal_increase: b sin_loop ;ddian OK dead_loop: nop nop nop nop b dead_loop ;*sign .set 0 ;local variablecalculate_sin: frame -1 ;allocate sign nop ;no
6、 direct addressing next frame st #0, sign ;decide sign, 0 for 1st and 2nd quadrant, 1 for 3rd and 4th quadrant xc 2, ALT st #1, sign abs A ;change to 1st and 2nd quadrant sub #0x4000, A, B ;test for 1st quadrant bc first_quadrant, BLEQ;if not change to 1st quadrant sub #0x7fff, A ;As sin(pi-x)=sinx,
7、 let x=pi-x neg A first_quadrant: stm #coef, AR2 stlm A, T ;T=x ld *AR2+, 16, A ;AH=C5 ld *AR2+, 16, B ;BH=C4 rpt #5-1 ;AH=C5*x5+C4*x4+C3*x3+C2*x2+C1*x+0 poly *AR2+ ld sign, B ;pick out sign sfta A, 3 ;make Q15 format nop ;nop for B condition test by xc xc 1, BNEQ ;test sign neg A ;sin(-x)=-sinx fra
8、me 1 ret;* .sect vectorsint_RESET: b main nop nop .space 124*16;sin(x)=0 + 3.140625x + 0.02026367x2 - 5.325196x3 + 0.5446778x4 + 1.800293x5 .datacoef: ;As the max value is -5.325196, so Q12 is used .word 0x1cce ;1.800293 * 4096 .word 0x08b7 ;0.5446778 * 4096 .word 0xaacc ;-5.325196 * 4096 .word 0x00
9、53 ;0.02026367 * 4096 .word 0x3240 ;3.140625 * 4096 .word 0x0000 ;0 .end;end of Sin.s543. 调试正弦波发生器图形观测时选择菜单View-Graph-Time/Frequency,然后设置如下图:4. 加入断点,并选取图形观测,利用动画及时更新 popm AH ;ddian OK 断点设置处 5. 试利用迭代的方法来实现正弦信号发生器得到正弦信号迭代公式:,因为为常数,所以为常数,则利用此公式迭代计算每次只需一次乘法和一次加法。四、实验结果及注意事项1. 需要使用临时数据时,必须用frame语句留出所需空间,
10、使用结束后要将堆栈指针还原以防堆栈内存泄漏。要注意的是frame的下一条指令不能使用直接寻址。2.利用累加器写乘法寄存器T(stlm)之后的下一条指令不能使用T;条件转移指令xc在指令访问阶段判断条件,该条件必须在先于xc指令的2个指令之前产生;条件转移指令bc是在指令执行阶段判断条件,不存在这方面的问题。具体细节请参见数字信号处理系统的应用和设计3.6节和4.5节。3. 在断点及动画运行方式实现正弦波显示的情况下,查找到存储器中对应存储正弦波数据实时更新的数据单元。5.实验结果汇总断点(start address=sin_out,step=0x0400)断点设置截屏断点及探针(start a
11、ddress=sin_out,step=0x0400)断点及探针设置截屏断点(start address=sin_out,step=0x0500)断点及探针(start address=sin_out,step=0x0500)断点(start address=AR6,step=0x0400)断点及探针(start address=AR6,step=0x0400)断点(start address=0X2000,step=0x0400)断点及探针(start address=0X2000,step=0x0400)6.程序流程图五、实验心得这次实验的主要内容包括阅读理解多项式逼近正弦的文档;阅读和理
12、解Sin.s54;调试正弦波发生器;加入断点,并选取图形观测,利用动画及时更新;试利用迭代的方法来实现正弦信号发生器。掌握利用DSP产生正弦信号的原理;熟悉子程序调用的程序结构以及堆栈的使用;掌握CCS的图形输出操作。在实验的过程中还是对前面的操作不是十分熟练,从而会犯一些比较容易出错的错误,从而引起实验的不成功,但是后面在同学和助教的帮助下最终完成了实验。但是总得来讲,我还是在实验之前没有较好地预先熟悉实验的内容,从而在实验的时候比较吃力,因此,我必须在实验之前好好预习一下实验的内容和以前实验的一些基本的操作,这样才会在实验中更快的上手,在实验中我还是学到了不少课外的知识,更加充实了自己的大脑,并将所学的知识学以致用,这样学得就更加轻松,并且不易忘记。这次试验学到了很多,实践与理论的一次经典结合。在本次试验中学会了设置断点以及怎样连接探针,通过这两次实验觉得自己的动手能力有所提高。最后,感谢老师和助教的悉心指导。THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2