实验五-用泰勒级数开展开式计算一个角度的正弦值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五泰勒级数展开法设计正弦
信号发生器
一、实验目的
掌握用泰勒级数展开法求解sin(x)、cos(x)的原理及设计方法
二、实验设备
计算机、ZY130DSP12BD试验箱
三、实验原理
参加教材第六章第四节正弦波信号发生器
四、实验内容
1.用泰勒级数展开法计算sin(x)的值
2.用泰勒级数展开法计算cos(x)的值
3.用泰勒级数展开法产生正弦波
五、实验步骤
1.建立一个项目:点击Project->New ,将项目名称为shiyan4,并将项目保存的d:\文件夹下.
2.建立一个源文件:点击File->New->Source File 可以打开一个文本编辑器窗口,点击保存按钮,保存在和项目相同的一个文件夹下面,保存类型*.asm ,将文件命名为shiyan4.asm.
3 .在项目中添加源文件,在新建了一个源文件后,要想使用CSS 编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键点击shiyan4.pjt,在弹出菜单中选择Add Files,然后将刚才建立的shiyan4.asm文件添加到该项目中去。
4.编写源程序:
在工程管理器中双击shiyan4.asm,将出现的文本编辑窗口,在该文本编辑窗口中输入程序源代码。
(自己完成)
5.编写中断向量表文件
点击File->New->Source File 可以打开一个文本编辑器窗口,点击保存按钮,保存在和项目相同的一个文件夹下面,保存类型*.asm ,将文件命名为vectors.asm, 在工程管理器中右键点击shiyan4.pjt,在弹出菜单中选择Add Files,然后将刚才建立的vectors.asm文件添加到该项目中去。
然后,在工程管理器中双击vectors.asm,将出现的文本编辑窗口,在该文本编辑窗口中输入下面源代码:
.title "vectors.asm"
.ref start
.sect ".vectors"
B start
.end
6.编写链接配置文件
链接配置文件有很多功能,这里介绍最常见的也是必须的两条:1.存储器的分配 2.
标明程序入口.
由于每个程序都需要一个链接文件,每个程序的配置文件根据实际情况的需要都略有不同,下面为本实验的编写的一个配置文件。
点击File->New->Source File 可以打开一个文本编辑器窗口,点击保存按钮,保存在和项目相同的一个文件夹下面,保存类型*.cmd ,将文件命名为shiyan4.cmd, 在工程管理器中右键点击shiyan4.pjt,在弹出菜单中选择Add Files,然后将刚才建立的shiyan4.cmd文件添加到该项目中去。
然后,在工程管理器中双击shiyan4.cmd,将出现的文本编辑窗口,在该文本编辑窗口中输入下面源代码:
vectors.obj /*中断向量的目标文件*/
shiyan4.obj /*产生目标文件*/
-o shiyan4.out /*产生可执行的下载文件,文件名可以根据不同项目而定*/
-m shiyan4.map /*产生存储器映射文件,文件名可以根据不同项目而定*/
-estart /*程序入口*/
MEMORY
{
PAGE 0:
EPROM:org=0090H len=0F70H
VECS: org=0080H len=0010H
PAGE 1:
SPRAM:org=1000H len=1000H
DARAM:org=2000H len=2000H
}
SECTIONS
{
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
.bss :>SPRAM PAGE 1
STACK :>DARAM PAGE 1
.vectors :>VECS PAGE 0
}
7.对项目进行编译和链接
确保shiyan4.asm 、vectors.asm、shiyan4.cmd已经添加到工程后,点击Project-Compile File(或者),在项目编译成功之后点击Project->Build(或者
)选项对该项目进行链接,生成*.OUT文件。
8.转载可执行文件
要让程序代码在DSP内部运行必须需要将生产的*.out文件装载到DSP内部,装载方法是点击:File->Load Program 再选择生产的shiyan4.out文件就可以将程序装载到DSP的内部存储器中。
9.运行程序并查看结果
(1) 首先打开预查看的数据空间,点击view->Memory ,弹出”Memory Window Options”对话框,把预查看地址(address)改为0x1000.
(2)点击OK按钮,然后点击Debug-Run 让程序在DSP内部运行,最后点击Debug-Halt ,在观察“Memory”对话框,验证结果是否正确。
10.建立其它项目工程文件
注意:每个工程中,vectors.asm不需要修改,但*.cmd文件内容需要修改:
(1)*.cmd 的文件名需要与工程名对应的.比如工程名为shiyan4.pjt,则cmd文件名为shiyan4.cmd
(2)在.cmd文件中
编写人:黄忠
***************************************************
* 用泰勒级数开展开式计算一个角度的正弦值 *
*sin(x)=x(1-x*x/2*3(1-x*x/4*5(1-x*x/6*7(1-x*x/8*9))))*
******************************************************
.title "sinx.asm"
.mmregs
.def start
STACK: .usect "STACK",10
start: STM #STACK+10,SP
LD #d_x,DP
ST #6487H,d_x ;x-->d_x
CALL sin_start
end: B end
sin_start:
.def sin_start
d_coeff .usect "coeff",4
.data
table: .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_x .usect "sin_vars",1
d_squr_x .usect "sin_vars",1
d_temp .usect "sin_vars",1
d_sinx .usect "sin_vars",1
c_1 .usect "sin_vars",1
.text
SSBX FRCT
STM #d_coeff,AR5
RPT #3
MVPD #table,*AR5+
STM #d_coeff,AR3
STM #d_x,AR2
STM #c_1,AR4
ST #7FFFH,c_1
SQUR *AR2+,A ;A=x^2
ST A,*AR2 ;(AR2)=x^2
||LD *AR4,B ;B=1
MASR *AR2+,*AR3+,B,A ;A=1-x^2/72,T=x^2
MPYA A ;A=T*A=x^2(1-x^2/72)
STH A,*AR2 ;(d_temp)=x^2(1-x^2/72)
MASR *AR2-,*AR3+,B,A ;A=1-x^2/42(1-x^2/72),T=x^2(1-x^2/72)
MPYA *AR2+ ;B=x^2(1-x^2/42(1-x^2/72))
ST B,*AR2 ;(d_temp)=x^2(1-x^2/42(1-x^2/72))
||LD *AR4,B ;B=1
MASR *AR2-,*AR3+,B,A ;A=1-x^2/20(1-x^2/42(1-x^2/72))
MPYA *AR2+ ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))
ST B,*AR2 ;(d_temp)=B
||LD *AR4,B ;B=1
MASR *AR2-,*AR3+,B,A ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))) MPYA d_x ;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))) STH B,d_sinx ;sin(theta)
RET
.end
vectors.obj
sinx.obj
-O sinx.out
-m sinx.map
-estart
MEMORY
{
PAGE 0:
EPROM: org=0090H,len=0F70H VECS: org=0080H,len=0010H PAGE 1:
SPRAM: org=1000H,len=1000H DARAM: org=2000H,len=2000H }
SECTIONS
{
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
STACK :>SPRAM PAGE 1
sin_vars :>DARAM PAGE 1
coeff :>DARAM PAGE 1
.vectors :>VECS PAGE 0
}
.。