dsp正弦函数计算程序的编写

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书

题目正弦函数计算程序的编写

专业、班级学号姓名

主要内容、基本要求、主要参考资料等:

1、参考课本,正弦函数的泰勒级数展开式及C54X Mnemonic Instruction

Set.pdf ,编写正弦函数的计算程序。

2、要求程序能够进行3次以上的叠代运算,计算一个数的正弦值。

3、要求用汇编语言书写,其中汇编语言源文件要求具有已初始化段,未

初始化段,代码段的定义。

4、完成上述要求程序的编写并在CCS5000编译连接通过并验证计算结

果,设计完成后要求每人上交一份课程设计说明书,说明书要求包含有课程设计任务书,各文件的说明,各文件里关键语句的说明。说明书要求字迹工整、叙述清楚。

5、发挥部分,如时间可行,增加设计成为一个完整的项目(附加一个命

令文件和一个向量表文件)。并验证结果。

6、时间:一周。

完成期限:

指导教师签名:

课程负责人签名:

2013 年 12 月 30 日

目录

引言 (2)

1 正余弦的泰勒级数展开式 (3)

2 存储空间的分配 (4)

3 迭代法计算正弦值 (5)

3.1、迭代法正弦值的计算流程图 (5)

3.1、正弦函数计算程序 (7)

4 复位向量文件和链接文件 (9)

4.1、复位向量文件 (9)

4.2、链接文件 (9)

5 调试结果 (10)

6 设计体会 (12)

参考文献 (12)

引言

正弦作为一种数学方法,在科研和平时的数据处理方面应用的很广泛。尤其是在通信、仪器仪表和工业控制等领域应用更为广泛。在科技高速发展的今天,对函数的计算不仅要求有很高的精度,还对计算的时间又很高的要求,必须在很短的时间内完成数据的处理,否则根本不能完成大批量数据的实时性计算和处理。介于DSP芯片运算速度快的特点,用DSP芯片完成这些算法已越来越受到重视。

通常有两种方法可以产生正弦波,分别是查表法和泰勒级数展开法。查表法应用于精度要求不很高的场合,而泰勒级数展开法是一种比查表法更为有效的方法。它能精确的计算出一个角度的正弦和余弦值,且占用的储存空间较小,体现了它的优越性。

1 正余弦的泰勒级数展开式

高等数学中,正弦函数和余弦函数可以展开的泰勒级数,其表达试如下:

-+-+-=!

x !x !x !x x x 9753)sin(9

753 (1) -+-+-=!

x !x !x !x x 86421)cos(8

642 (2) 若要计算一个角度x 的正弦和余弦值,可取泰勒级数的前五项进行计算。

x !x !x !x x x 9753)sin(9

753+-+-= ⎪⎪⎭

⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛----=9*817*615*413*212222x x x x x (3) !

x !x !x !x x 86421)cos(8

642+-+-= ⎪⎪⎭⎫ ⎝

⎛⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛----=8*716*514*31212222

x x x x (4) 由式(3)和(4)可得导出递推公式,即

])2sin[(])1sin[()cos(2)sin(x n x n x nx ---=

])2cos[(])1sin[()cos(2)cos(x n x n x nx ---=

由递推公式可以看出,在计算正弦和余弦值时,不仅需要已知cos(x),而且需要x n )1sin[(-、x n )2sin[(-和x n )2cos[(-。

2 存储空间的分配

在正弦函数的计算程序所需要的存储空间有四个已初始化的数据段table_s 与若干个程序段组成的已初始化段和九个存储空间未初始化段,分别为:d_xs 、d_squr_xs 、d_temp_s 、d_sinx 、c_1_s 、d_coef_s(4个存储空间)。其存储空间分布如下:

计算正弦值存储单元分配

3 迭代法计算正弦值

3.1、迭代法正弦值的计算流程图

其中n a 随迭代次数的变化而变化1a =

9*81、2a =6*71、3a =4*51、4a =2

*31

(1) 执行第一次迭代:

||DL *AR5,B

迭代法正弦值的计算流程图

MASR *AR3+,*AR2+,B,A

MPYA A

STH A,*AR3

执行结果: d_temp_s= ⎪⎪⎭⎫ ⎝⎛-8*7122

x x (2) 执行第二次迭代:

MASR *AR3-,*AR2+,B,A

MPYA *AR3+

ST B,*AR3

执行结果:

d_temp_s= ⎪⎪⎭⎫ ⎝

⎛⎪⎪⎭⎫ ⎝⎛--8*717*61222x x x 执行第三次迭代:

||DL *AR5,B

MASR *AR3-,*AR2+,B,A MPYA *AR3+

ST B,*AR3

执行结果:

d_temp_s= ⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛---8*717*614*512222

x x x x 执行第四次迭代:

||DL *AR5,B

MASR *AR3-,*AR2+,B,A

STM #d_xs,AR3

执行结果: d_temp_s= ⎪⎪⎭

⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛----8*717*614*512*312222x x x x x 即可粗略的求的sinx 的值为d_temp_s 中的值

相关文档
最新文档