湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx
《湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx》由会员分享,可在线阅读,更多相关《湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx(14页珍藏版)》请在冰豆网上搜索。
湘潭大学数字信号处理实验报告第二次正弦信号发生器
数字信号处理实验报告(第二次)
学院:
班级:
姓名:
学号:
指导老师:
完成日期:
内容:
实验四、正弦信号发生器
实验四、正弦信号发生器
一、实验目的
1.掌握利用DSP产生正弦信号的原理
2.熟悉子程序调用的程序结构以及堆栈的使用
3.掌握CCS的图形输出操作
二、实验设备
1.集成开发环境CodeComposerStudio(简称CCS)
2.实验代码Sin.s54、Lab.cmd和Lab.gel
三、实验内容
1.阅读理解多项式逼近正弦的文档
,
为第一象限内的弧度值。
因为
,所以只需将第二,三,四象限内的弧度值转换到第一象限即可计算出相应的正弦函数值。
由于有限精度,规定弧度值从
,其中
=0x7FFF,
/2=0x4000,
=0x8000。
利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A中的当前弧度值,以便计算结束后实现
增量。
正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。
自动增长时要注意当
超过
后必须调整到
的范围内才能调用计算子程序,即若
。
2.阅读和理解Sin.s54
Sin.s54程序如下:
;******************************************************************************
;SJTUDSPTech.Center
;Copyright(c)2003SJTUDSPTech.Center.AllRightsReserved.
;Description:
;TMS320C54xProgramforStudentsExperiment
;History:
;DateAuthorsChanges
;2003/08/01FuXuanCreated.
;******************************************************************************
STACK_ADDR.set0x0500
STEP.set0x0400;deltax(mustbepositive),themorethehigherfrequency
;T=65536/STEP,f=1/T
.bsssin_out,1
.mmregs
.globalmain
.text
main:
stm#STACK_ADDR,SP
stm#0x00A8,PMST;IPTR=0x0080
stm#0x0000,SWWSR;softwarewaitstatusregister
subA
ssbxCPL;directaddressusingSP
ssbxFRCT;fractionmode
ssbxOVM;overflowmode
ssbxSXM;signextension
stm#sin_out,AR6
sin_loop:
pshmAG;savecurrentx;ddianOK
pshmAH;ddianOK
pshmAL;ddianOK
callcalculate_sin;-pi<=x<=pi;ddianOK
sthA,*AR6;storesin(x),addprobepoint;ddianOK
popmAL;ddianOK
popmAH;ddianOK断点设置处
popmAG;ddianOK
add#STEP,A;adddelta;ddianOK
sub#0x7fff,A,B;testifx>pi,B=A-pi;ddianOK
bcnormal_increase,BLT;ddianOK
ld#0x8000,A;A=-pi
addB,A;A=B+(-pi)=x-2*pi
normal_increase:
bsin_loop;ddianOK
dead_loop:
nop
nop
nop
nop
bdead_loop
;******************************************************************************
sign.set0;localvariable
calculate_sin:
frame-1;allocatesign
nop;nodirectaddressingnextframe
st#0,@sign;decidesign,0for1stand2ndquadrant,1for3rdand4thquadrant
xc2,ALT
st#1,@sign
absA;changeto1stand2ndquadrant
sub#0x4000,A,B;testfor1stquadrant
bcfirst_quadrant,BLEQ;ifnotchangeto1stquadrant
sub#0x7fff,A;Assin(pi-x)=sinx,letx=pi-x
negA
first_quadrant:
stm#coef,AR2
stlmA,T;T=x
ld*AR2+,16,A;AH=C5
ld*AR2+,16,B;BH=C4
rpt#5-1;AH=C5*x^5+C4*x^4+C3*x^3+C2*x^2+C1*x+0
poly*AR2+
ld@sign,B;pickoutsign
sftaA,3;makeQ15format
nop;nopforBconditiontestbyxc
xc1,BNEQ;testsign
negA;sin(-x)=-sinx
frame1
ret
;******************************************************************************
.sect"vectors"
int_RESET:
bmain
nop
nop
.space124*16
;sin(x)=0+3.140625x+0.02026367x^2-5.325196x^3+0.5446778x^4+1.800293x^5
.data
coef:
;Asthemaxvalueis-5.325196,soQ12isused
.word0x1cce;1.800293*4096
.word0x08b7;0.5446778*4096
.word0xaacc;-5.325196*4096
.word0x0053;0.02026367*4096
.word0x3240;3.140625*4096
.word0x0000;0
.end
;endofSin.s54
3.调试正弦波发生器
图形观测时选择菜单View->Graph->Time/Frequency,然后设置如下图:
4.加入断点,并选取图形观测,利用动画及时更新
popmAH;ddianOK断点设置处
5.试利用迭代的方法来实现正弦信号发生器
得到正弦信号迭代公式:
,因为
为常数,所以
为常数,则利用此公式迭代计算每次只需一次乘法和一次加法。
四、实验结果及注意事项
1.需要使用临时数据时,必须用frame语句留出所需空间,使用结束后要将堆栈指针还原以防堆栈内存泄漏。
要注意的是frame的下一条指令不能使用直接寻址。
2.利用累加器写乘法寄存器T(stlm)之后的下一条指令不能使用T;条件转移指令xc在指令访问阶段判断条件,该条件必须在先于xc指令的2个指令之前产生;条件转移指令bc是在指令执行阶段判断条件,不存在这方面的问题。
具体细节请参见《数字信号处理系统的应用和设计》3.6节和4.5节。
3.在断点及动画运行方式实现正弦波显示的情况下,查找到存储器中对应存储正弦波数据实时更新的数据单元。
5.实验结果汇总
断点(startaddress=sin_out,step=0x0400)
断点设置截屏
断点及探针(startaddress=sin_out,step=0x0400)
断点及探针设置截屏
断点(startaddress=sin_out,step=0x0500)
断点及探针(startaddress=sin_out,step=0x0500)
断点(startaddress=AR6,step=0x0400)
断点及探针(startaddress=AR6,step=0x0400)
断点(startaddress=0X2000,step=0x0400)
断点及探针(startaddress=0X2000,step=0x0400)
6.程序流程图
五、实验心得
这次实验的主要内容包括阅读理解多项式逼近正弦的文档;阅读和理解Sin.s54;调试正弦波发生器;加入断点,并选取图形观测,利用动画及时更新;
试利用迭代的方法来实现正弦信号发生器。
掌握利用DSP产生正弦信号的原理;熟悉子程序调用的程序结构以及堆栈的使用;掌握CCS的图形输出操作。
在实验的过程中还是对前面的操作不是十分熟练,从而会犯一些比较容易出错的错误,从而引起实验的不成功,但是后面在同学和助教的帮助下最终完成了实验。
但是总得来讲,我还是在实验之前没有较好地预先熟悉实验的内容,从而在实验的时候比较吃力,因此,我必须在实验之前好好预习一下实验的内容和以前实验的一些基本的操作,这样才会在实验中更快的上手,在实验中我还是学到了不少课外的知识,更加充实了自己的大脑,并将所学的知识学以致用,这样学得就更加轻松,并且不易忘记。
这次试验学到了很多,实践与理论的一次经典结合。
在本次试验中学会了设置断点以及怎样连接探针,通过这两次实验觉得自己的动手能力有所提高。
最后,感谢老师和助教的悉心指导。