DSP第二次实验报告.docx
- 文档编号:11779079
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:12
- 大小:447.68KB
DSP第二次实验报告.docx
《DSP第二次实验报告.docx》由会员分享,可在线阅读,更多相关《DSP第二次实验报告.docx(12页珍藏版)》请在冰点文库上搜索。
DSP第二次实验报告
DSP实验报告(第二次实验)
实验四、正弦信号发生器
学院:
信息工程学院
班级:
11级通信工程3班
姓名:
李慧
学号:
指导老师:
姚志强
完成日期:
2014.4.12
验四、正弦信号发生器
一、实验目的
1.掌握利用DSP产生正弦信号的原理
2.熟悉子程序调用的程序结构以及堆栈的使用
3.掌握CCS的图形输出操作
二、实验设备
1.集成开发环境CodeComposerStudio(简称CCS)
2.实验代码Sin.s54、Lab.cmd和Lab.gel
三、实验内容
1.阅读理解多项式逼近正弦的文档
2.阅读和理解Sin.s54
3.调试正弦波发生器
4.加入断点,并选取图形观测,利用动画及时更新
5.试利用迭代的方法来实现正弦信号发生器
四、实验结果和提示
1.
,
为第一象限内的弧度值。
因为
,所以只需将第二,三,四象限内的弧度值转换到第一象限即可计算出相应的正弦函数值。
由于有限精度,规定弧度值从
,其中
=0x7FFF,
/2=0x4000,
=0x8000。
利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A中的当前弧度值,以便计算结束后实现
增量。
正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。
自动增长时要注意当
超过
后必须调整到
的范围内才能调用计算子程序,即若
。
2.需要使用临时数据时,必须用frame语句留出所需空间,使用结束后要将堆栈指针还原以防堆栈内存泄漏。
要注意的是frame的下一条指令不能使用直接寻址。
3.注意事项:
利用累加器写乘法寄存器T(stlm)之后的下一条指令不能使用T;条件转移指令xc在指令访问阶段判断条件,该条件必须在先于xc指令的2个指令之前产生;条件转移指令bc是在指令执行阶段判断条件,不存在这方面的问题。
具体细节请参见《数字信号处理系统的应用和设计》3.6节和4.5节。
4.图形观测时选择菜单View->Graph->Time/Frequency,然后设置如下图:
确定并设置好断点后(断点位置要设置对,几个地方都可以,可多尝试几次)
我自己设置的断点如图所示:
使用Debug->Animate就可以观察到动画输出的结果如图:
从图中可以观察到正弦波的周期。
使用Debug->Run就可以观察动画输出的结果如下图所示:
从两种运行方式可以看出:
用Animate方式是动态动画输出,而用Run方式是单步运行,动画输出不连续。
5.
得到正弦信号迭代公式:
,因为
为常数所以
为常数,则利用此公式迭代计算每次只需一次乘法和一次加法。
6.尝试不用断点,而用探针ProbePoint的方式显示并观察图形。
同样需要比较两种运行方式在探针形式下有无区别。
设置探针如下:
在Animate方式下图形输出如下图所示:
在Run方式下:
从动画输出结果看,设置探针在两种方式下没有什么区别,都是动态运行。
7.在断点及动画运行方式实现正弦波显示的情况下,查找到存储器中对应存储正弦波数据实时更新的数据单元。
五、实验心得
通过此次实验我掌握利用DSP产生正弦信号的原理,熟悉子程序调用的程序结构以及堆栈的使用,掌握CCS的图形输出操作,本次实验内容有阅读和理解Sin.s54;调试正弦波发生器;加入断点,并选取图形观测,利用动画及时更新;对比前两次实验,难度有所增加,但是在老师和助教的精心指导下,顺利完成实验,几次实验之后,我认识到实验之前预习的必要性,所以以后的实验中,我会争取做到每一次实验都提前预习。
附录:
实验程序
;******************************************************************************
;SJTUDSPTech.Center
;Copyright(c)2003SJTUDSPTech.Center.AllRightsReserved.
;
;Description:
;TMS320C54xProgramforStudentsExperiment
;
;History:
;DateAuthorsChanges
;2003/08/01FuXuanCreated.
;******************************************************************************
STACK_ADDR.set0x0500
STEP.set0x0900;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.x+0.x^2-5.x^3+0.x^4+1.x^5
.data
coef:
;Asthemaxvalueis-5.,soQ12isused
.word0x1cce;1.*4096
.word0x08b7;0.*4096
.word0xaacc;-5.*4096
.word0x0053;0.*4096
.word0x3240;3.*4096
.word0x0000;0
.end
;endofSin.s54
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 第二次 实验 报告