DSP正弦函数计算程序
更新时间:2024-01-15 21:22:01 阅读量: 教育文库 文档下载
- 正弦函数的定积分计算推荐度:
- 相关推荐
课 程 设 计 任 务 书
题目 正弦函数计算程序的编写 专业、班级 学号 姓名 主要内容、基本要求、主要参考资料等:
1、参考课本,正弦函数的泰勒级数展开式及C54X Mnemonic Instruction Set.pdf ,编写正弦函数的计算程序。
2、要求程序能够进行3次以上的叠代运算,计算一个数的正弦值。 3、要求用汇编语言书写,其中汇编语言源文件要求具有已初始化段,未初始化段,代码段的定义。
4、完成上述要求程序的编写并在CCS5000编译连接通过并验证计算结果,设计完成后要求每人上交一份课程设计说明书,说明书要求包含有课程设计任务书,各文件的说明,各文件里关键语句的说明。说明书要求字迹工整、叙述清楚。
5、发挥部分,如时间可行,增加设计成为一个完整的项目(附加一个命令文件和一个向量表文件)。并验证结果。
6、 时间:一周。
完 成 期 限: 2013.12.30---2014.01.10 指导教师签名: 课程负责人签名:
2013 年 12 月 30 日
正弦函数计算程序的编写
目 录
摘要 .................................................................................................................................. 1 1 正余弦的泰勒级数展开式........................................................................................... 2 2 存储空间分配 ............................................................................................................ 3 3 迭代法计算正弦值 ...................................................................................................... 4
3.1流程图 ................................................................................................................ 4 3.2、程序 ................................................................................................................. 6 4 复位向量文件和链接文件........................................................................................... 8
4.1、复位向量 ......................................................................................................... 8 4.2、链接 ................................................................................................................. 8 5 调试 .............................................................................................................................. 9 6 总结 ............................................................................................................................ 11 参考文献 ........................................................................................................................ 11
I
正弦函数计算程序的编写
摘 要
正弦作为一种数学方法,在科研和平时的数据处理方面应用的很广泛。尤其是在通信、仪器仪表和工业控制等领域应用更为广泛。在科技高速发展的今天,对函数的计算不仅要求有很高的精度,还对计算的时间又很高的要求,必须在很短的时间内完成数据的处理,否则根本不能完成大批量数据的实时性计算和处理。介于DSP芯片运算速度快的特点,用DSP芯片完成这些算法已越来越受到重视。通常有两种方法可以产生正弦波,分别是查表法和泰勒级数展开法。查表法应用于精度要求不很高的场合,而泰勒级数展开法是一种比查表法更为有效的方法。它能精确的计算出一个角度的正弦和余弦值,且占用的储存空间较小,体现了它的优越性。
关键词:sin函数 算法
1
正弦函数计算程序的编写
1 正余弦的泰勒级数展开式
高等数学中,正弦函数和余弦函数可以展开的泰勒级数,其表达试如下:
x3x5x7x9sin(x)?x??????? (1)
3!5!7!9!x2x4x6x8cos(x)?1??????? (2)
2!4!6!8!若要计算一个角度x的正弦和余弦值,可取泰勒级数的前五项进行计算。
x3x5x7x9sin(x)?x????
3!5!7!9!222???????x2?xxx??1??1???? (3) ???x1?1??????2*3?4*5??6*7?8*9???????x2x4x6x8cos(x)?1????
2!4!6!8!x2?1?2222??????xxx?1??1??? ??1?(4) ????3*4?5*6?7*8??????由式(3)和(4)可得导出递推公式,即
sin(nx)?2cos(x)sin[(n?1)x]?sin[(n?2)x] cos(nx)?2cos(x)sin[(n?1)x]?cos[(n?2)x]
由递推公式可以看出,在计算正弦和余弦值时,不仅需要已知cos(x),而且需要sin[(n?1)x、sin[(n?2)x和cos[(n?2)x。
2
正弦函数计算程序的编写
2 存储空间分配
在正弦函数的计算程序所需要的存储空间有四个已初始化的数据段table_s与若干个程序段组成的已初始化段和九个存储空间未初始化段,分别为:d_xs、d_squr_xs、d_temp_s、d_sinx、c_1_s、d_coef_s(4个存储空间)。其存储空间分布如下:
数据存储空间 程序存储空间 x d_xs C1=1/(8*9) x^2 d_squr_xs C2=1/(6*7) d_temp_s C3=1/(4*5) Sin(x) d_sinx C1=1/(2*3) 7FFFH c_1_s (C1=01C7H) d_coef_s (C2=030BH) (C3=0666H) (C4=1556H) 计算正弦值存储单元分配
3
table_s
正弦函数计算程序的编写
3 迭代法计算正弦值
3.1流程图
d_temp_s=x 2A=1-d_temp_s*T=d_empty_s an B=A*T d_temp_s=B Sin(x)=d_temp_s 迭代法正弦值的计算流程图
其中an随迭代次数的变化而变化a1=
a4=
111、a2=、a3=、8*97*65*41 3*2
(1) 执行第一次迭代:
4
正弦函数计算程序的编写
||DL *AR5,B
MASR *AR3+,*AR2+,B,A
MPYA A STH A,*AR3 执行结果:
?x2?d_temp_s= x??1?7*8??
??2(2) 执行第二次迭代:
MASR *AR3-,*AR2+,B,A
MPYA *AR3+ ST B,*AR3 执行结果:
2
?x2?x2?????d_temp_s= x??1?6*7?1?7*8?? ????执行第三次迭代:
||DL *AR5,B
MASR *AR3-,*AR2+,B,A MPYA *AR3+ ST B,*AR3 执行结果:
222??????xxx??1??? ??1?d_temp_s= x1???????5*46*77*8??????2执行第四次迭代:
||DL *AR5,B
MASR *AR3-,*AR2+,B,A STM #d_xs,AR3 执行结果:
2?222???????xxxx????1??? ??d_temp_s= x1?1?1??????3*2?5*4?6*7?7*8????????即可粗略的求的sinx的值为d_temp_s中的值
5
正弦函数计算程序的编写
3.2、程序
.title \ .mmregs
.def start
.ref sin_start,d_xs,d_sinx
STACK: .usect \;定义堆栈空间 Start: STM #STACK+10,SP ;给堆栈指针赋值栈顶 LD #d_xs,DP ST #6487H,d_xs CALL sin_start end: B end sin_start:
.def sin_start D_coef_s .usect \ .data
Table_s: .word 01C7H ;C1=01C7H .word 030bH ;C2=030bH .word 0666H ;C3=0666H .word 1556H ;C4=1556H
d_xs .usect \;定义未初始化段 d_squr_xs .usect \d_temp_s .usect \d_sinx .usect \c_1_s .usect \
.text
SSBX FRCT ;设置小数乘法 STM #d_coff_s,AR4 RPT #3
MVPD #table_s,*AR4+ ;c1=1/72,c2=1/42,c3=1/20
;c4=1/6 STM #d_coef_s,AR2 STM #d_xs,AR3
STM #c_1_s,AR5 ;AR5指向C_1_S
6
正弦函数计算程序的编写
(AR3)
ST SQUR ST #7FFFH,c_1_s
*AR3+,A ;求x的平方值 A,*AR3 ;把x平方值放入
||DL *AR5,B ;B=1
MASR *AR3+,*AR2+,B,A ;A=(1-x^2)/72 ;T = x^2
MPYA A ; A=x^2(1-x^2)/72
STH A,*AR3 ; AR3=d_temp_s= x^2(1-x^2)/72
MASR *AR3-,*AR2+,B,A ; A = 1-x^2/42(1-x^2/72)
; T =x^2(1-x^2/72) MPYA *AR3+ ; B = X^2(1-x^2/42(1-x^2/72))
ST B,*AR3 ; AR3=d_temp_s=B ||DL *AR5,B
MASR *AR3-,*AR2+,B,A
;A=1-x^2/20(1-x^2/42(1-x^2/72)
MPYA
*AR3+ ;B=(1-x^2/20(1-x^2/42(1-x^2/72))*x^2
ST B,*AR3
; d_temp_s= B =
(1-x^2/20(1-x^2/42(1-x^2/72))*x^2 ||DL *AR5,B
MASR *AR3-,*AR2+,B,A ;
A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))*x^2
STM #d_xs,AR3 MPYA AR3
;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72
))*x^2)
STH B, d_sinx ; d_sinx=b 的出结果
RET
.end
7
正弦函数计算程序的编写
4 复位向量文件和链接文件
4.1、复位向量
程序中所用的复位向量文件如下: .sect \
.ref start ; C entry point .align 0x80 ; must be aligned on page boundary
RESET: ; reset vector
BD start ; branch to C entry point .end
4.2、链接
链接命令文件是将链接的信息放在一个文件中,这在多次使用同样的链接信息时,可以方便地调用。在命令文件中可使用两个十分有用的伪指令MEMORY和SECTIONS,用来指定实际应用中的存储器结构和地址的映射。在命令行中不能使用这两个伪指令,命令文件为ASCⅡ文件,可包含一下内容:
(1)输入文件名,用来指定目标文件、存档库或其他命令文件。注意,当命令文件调用其他文件时,该调用语句必须是最后一句,连接器不能从被调用的命令文件中返回。
(2)连接器选项,他们在命令文件中的使用方法于在命令行中相同。 (3)MEMORY和SECTIONS链接伪指令,MEMORY用来指定目标存储器结构,SECTIONS用来控制段的构成于地址分配程序中所用到的链接文件如下:
vectors.obj sinx.obj -o a1.out -m a1.map -e start MEMORY {
8
正弦函数计算程序的编写
PAGE 0: EPROG: origin = 0x1400, len = 0x7c00 VECT: origin = 0xff80, len = 0x80 PAGE 1: USERREGS: origin = 0x60, len = 0x1c BIOSREGS: origin = 0x7c, len = 0x4 IDATA: origin = 0x80, len = 0x1380 EDATA: origin = 0x1400, len = 0x8000 EDATA1: origin = 0x9400, len = 0x4c00 }
SECTIONS
{ .vectors: {} > VECT PAGE 0 .sysregs: {} > BIOSREGS PAGE 1 .data: {} > EPROG PAGE 0
.text: {} > EPROG PAGE 0 .cinit: {} > EPROG PAGE 0 .pinit: {} > EPROG PAGE 0 .sysinit: {} > EPROG PAGE 0 .stack: {} > IDATA PAGE 1 .bss: {} > IDATA PAGE 1
.sin_vars: {} > IDATA PAGE 1}
5 调试
第一次叠代计算结果:
A=004E4510A4 B=007FFF0000 T=4EF3 AR2=0061 AR3=1428 AR4=0094 SP=0089
第二次叠代计算结果:
A=007E230000 B=004DCCCA72
9
正弦函数计算程序的编写
T=4EF3 AR2=0093 AR3=0095 AR4=0094 SP=0089
第三次叠代计算结果:
A=007C1B0000 B=004C8C0F42 T=4EF3 AR2=0094 AR3=0095 AR4=0094 SP=0089
第四次叠代计算结果:
A=00733D0000 B=0013356EFC T=1556 AR2=0094 AR3=0094 AR4=0094 SP=008A
10
正弦函数计算程序的编写
6 总结
两周的课程设计很快结束了,从刚接触课程设计时的无从下手,到最后的完成,收获了很多。
参考文献
1. 邹彦.《DSP原理及应用》 电子工业出版社 主编 2. 《DSP实用技术》苏涛 卢光跃 张林让 编著
11
正在阅读:
DSP正弦函数计算程序01-15
罗氏电化学发光质控物包含项目一览表09-14
西子孚信无机房曳引机手动松闸装置07-21
黄骅港客车运行时间10-30
如何分辨数学中易混淆的定义 - 图文12-15
化学知识点:化学物质及其变化02-15
刘老师的课以前我也听过07-28
小王子英文版阅读测试题03-31
县委书记贯彻执行民主集中制剖析材料04-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 正弦
- 函数
- 计算
- 程序
- DSP
- 《用函数观点看一元二次方程》教案
- 党小组考核细则
- 三合一评标法
- 生物膜的流动镶嵌模型 物质跨膜运输的方式 备用习题
- 儿童保健工作制度
- 小学英语外研版六年级下册Module4《Unit1 I cant carry all these things》公开课教师资格证面试试讲教案
- 平塘县委书记臧侃简历
- 关于常宁市油茶产业的调查与思考
- OSPF单区域、多区域
- 电气工程软件训练(三) - Matlab 作业
- 医疗广告审查申请表模板
- 小学二年级数学精题选做系列IV(68)
- 江苏省淮安市2014届高三5月信息卷物理试题 Word版含答案
- 2009 合肥国民经济和社会发展统计公报
- 水污染控制课程设计 - Cass工艺设计(DOC)
- MODBUS从站通讯应用
- 王维开元天宝年间行迹
- 行政领导学网考复习题单选题-4 - 0001
- 干部推荐报告格式
- 公共场所卫生安全承诺书