湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx

上传人:b****0 文档编号:17167580 上传时间:2023-07-22 格式:DOCX 页数:14 大小:597.38KB
下载 相关 举报
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第1页
第1页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第2页
第2页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第3页
第3页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第4页
第4页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第5页
第5页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第6页
第6页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第7页
第7页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第8页
第8页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第9页
第9页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第10页
第10页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第11页
第11页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第12页
第12页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第13页
第13页 / 共14页
湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx

《湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx》由会员分享,可在线阅读,更多相关《湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx(14页珍藏版)》请在冰点文库上搜索。

湘潭大学数字信号处理实验报告第二次正弦信号发生器.docx

湘潭大学数字信号处理实验报告第二次正弦信号发生器

数字信号处理实验报告(第二次)

学院:

班级:

姓名:

学号:

指导老师:

完成日期:

 

内容:

实验四、正弦信号发生器

 

实验四、正弦信号发生器

一、实验目的

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的图形输出操作。

在实验的过程中还是对前面的操作不是十分熟练,从而会犯一些比较容易出错的错误,从而引起实验的不成功,但是后面在同学和助教的帮助下最终完成了实验。

但是总得来讲,我还是在实验之前没有较好地预先熟悉实验的内容,从而在实验的时候比较吃力,因此,我必须在实验之前好好预习一下实验的内容和以前实验的一些基本的操作,这样才会在实验中更快的上手,在实验中我还是学到了不少课外的知识,更加充实了自己的大脑,并将所学的知识学以致用,这样学得就更加轻松,并且不易忘记。

这次试验学到了很多,实践与理论的一次经典结合。

在本次试验中学会了设置断点以及怎样连接探针,通过这两次实验觉得自己的动手能力有所提高。

最后,感谢老师和助教的悉心指导。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2