




免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 任 务 书题目 正弦函数计算程序的编写 专业、班级 学号 姓名主要内容、基本要求、主要参考资料等:1、 参考课本,正弦函数的泰勒级数展开式及C54X Mnemonic Instruction Set.pdf ,编写正弦函数的计算程序。2、 要求程序能够进行3次以上的叠代运算,计算一个数的正弦值。3、 要求用汇编语言书写,其中汇编语言源文件要求具有已初始化段,未初始化段,代码段的定义。4、 完成上述要求程序的编写并在CCS5000编译连接通过并验证计算结果,设计完成后要求每人上交一份课程设计说明书,说明书要求包含有课程设计任务书,各文件的说明,各文件里关键语句的说明。说明书要求字迹工整、叙述清楚。5、 发挥部分,如时间可行,增加设计成为一个完整的项目(附加一个命令文件和一个向量表文件)。并验证结果。6、 时间:一周。完 成 期 限: 2011.12.26-2012.01.06 指导教师签名: 课程负责人签名: 2011 年 12 月 25 日摘要本设计基于C54x DSP(数字信号处理器)汇编语言,给出了一种通过计算正弦函数的泰勒级数展开式来计算任意角度正弦值的程序设计方法。通过分析推导正弦函数的泰勒级数展开式,本设计在程序结构上采用子程序调用的设计方式,具体实现算法上采用迭代法,充分利用C54x DSP在乘加运算上的优越性能,大大提高了正弦函数计算的精度和效率。关键词:汇编;泰勒级数;迭代法II目录摘要I1 概述11.1正弦函数的应用11.2正弦函数的产生方法11.2.1查表法11.2.2泰勒级数展开法12 设计原理22.1 泰勒级数展开法原理22.2 采用DSP实现正弦函数计算的原理22.2.1 内存分配32.2.2 程序设计原理33 正弦函数计算程序设计43.1 软件开发环境43.2 程序流程图43.3 程序结构分析53.3.1 迭代法程序流程图53.3.2 迭代法汇编程序分析63.4 关键语句说明73.4.1 主程序中的关键语句73.4.2 sin子程序中的关键语句84 程序调试结果85 课程设计总结及体会95.1 课程设计总结95.2 设计体会10参考文献11附录 正弦函数计算程序清单12正弦函数计算程序的编写1 概述1.1 正弦函数的应用正弦函数是三角函数的一种,作为一种数学工具,其不仅应用于科学研究领域,在通信、仪器仪表和工业控制领域的信号处理系统中也被广泛应用。作为一种重要的信号处理方法,在科技高速发展的今天,不仅要求正弦函数的计算有较高的精度,也对其计算的实时性提出了很高的要求。因此研究出一种速度快、精度高的正弦函数计算方法非常必要。基于此,本设计给出一种采用数字信号处理器(DSP)的正弦函数计算方法,通过对DSP软件编程来保证正弦函数计算的速度与精度。1.2 正弦函数的产生方法采用DSP来产生正弦函数,通常有两种方法:一种是查表法,另一种是泰勒级数展开法。下面分别介绍这两种产生正弦信号的方法的优缺点。1.2.1 查表法查表法是产生比较普遍采用的方法,其具有处理速度快,调频调相容易,精度高等优点,但需要很大的存储器容量。因此,查表法常用于对存储容量不敏感,需要快速产生正弦信号,且对产生信号的精度要求较高的场合。1.2.2 泰勒级数展开法泰勒级数展开法需要的存储空间小,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。基于泰勒级数展开法的上述优点,本设计采用该种方法来进行正弦函数计算程序的编写,在下一章本设计给出泰勒级数展开法的原理,这里不再赘述。2 设计原理2.1 泰勒级数展开法原理一个角度为的正弦函数和余弦函数,可以展开成泰勒级数。在高等数学中,其表达式为 (2-1-1) (2-1-2)若要计算一个角度为的正弦值和余弦值,可取泰勒级数前5项进行近似计算,即 (2-1-3) (2-1-4)由式(2-1-3)和式(2-1-4)可推导出计算一个角度为的正弦值和余弦值的公式,即 (2-1-5) (2-1-6)由式(2-1-5)和式(2-1-6)的递推公式可知,在计算一个角度为的正弦值时,不仅需要的值,而且还需要已知和。2.2 采用DSP实现正弦函数计算的原理根据正弦函数与余弦函数的泰勒级数展开法的原理,本设计将给出一种基于DSP的设计方法,通过软件编程来实现计算任意角度的正弦值。采用DSP来实现正弦函数计算,涉及到内存分配、变量设置以及子程序调用等问题,这在进行软件设计时需要特别注意。2.2.1 内存分配在进行正弦函数软件设计之前,需要对DSP做好内存分配工作,本设计针对数据存储器和程序存储器的分配如图2-1所示。图2-1 正弦函数计算程序内存分配情况上图数据存储器中,d_xs单元中存放的弧度值,d_squr_xs单元存放的平方值,d_sinx单元存放计算结果,在d_coef_s连续的四个单元中存放系数。2.2.2 程序设计原理正弦函数的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器大量重复计算的优势来计算x轴上每一点对应的y值(在x轴抽取N个点进行逼近)。整个正弦函数计算程序由主程序和基于泰勒级数展开法的sin函数子程序构成,详见本设计的程序设计部分。3 正弦函数计算程序设计3.1 软件开发环境本设计的程序设计是基于CCS C5000 1.20软件开发环境的,该软件是TI公司推出的为开发C5000系列DSP软件的集成开发环境,是目前应用最广泛的DSP开发环境之一。它提供了环境配置、源文件编译、编译连接、程序调试、跟踪分析等功能环节,并把软硬件开发工具集成在一起,使程序的编写、汇编、软硬件仿真和调试等开发工作在统一的环境中进行,从而加速软件开发过程。本设计采用模拟仿真的方法,通过C54x汇编语言编程来实现正弦函数计算程序的设计,所建立工程名为sin_cal.mak,主要包含sinx.asm源文件。3.2 程序流程图本设计的程序设计部分分为主程序设计和sin子程序设计,通过主程序调用sin子程序的程序结构来完成正弦函数的计算。图3-1和3-2分别给出了主程序和sin子程序的流程图。 图3-1 主程序流程图 图3-2 sin子程序流程图3.3 程序结构分析本设计在sin子程序中采用迭代法来计算x的正弦值,该部分为本设计的核心内容,本节将对该部分程序的结构进行详细分析和说明。3.3.1 迭代法程序流程图本设计采用四次迭代法计算x的正弦值,迭代算法程序流程图如图3-3所示,图中所涉及的变量均为2.2.1小节内存分配中所定义的变量。图3-3 迭代法程序流程图3.3.2 迭代法汇编程序分析本小节根据上一小节的程序流程图来具体给出实现正弦函数计算的汇编程序代码,并加以分析说明。1、复制系数表在内存分配中,本设计将计算正弦函数的系数表放在了程序存储器的四个连续的单元中,在进行迭代计算之前需要执行相应的汇编代码将系数复制到数据存储器中,具体实现的汇编代码及分析如下:STM#d_coef_s,AR4;将d_coef_s的单元地址送到AR4中RPT#3;重复执行下一条指令(3+1)次MVPD#table_s,*AR4+;将系数复制到数据存储空间执行完上述代码之后,数据存储器中以d_coef_s为首地址的连续的四个存储单元中将分别存储有c1、c2、c3、c4的具体值。2、计算x的平方值在数据存储器中,存放x的平方值的单元为d_sque_xs,实现求x的平方的汇编代码如下:STM#d_xs,AR3;将x的地址送AR3SQUR*AR3+,A; 求x的平方值STA,*AR3; x的平方值存入(AR3)执行完上述代码之后,AR3所指向的内存单元将存放有x平方的值。3、第一次迭代计算|LD*AR5,B; B=1MASR*AR3+,*AR2+,B,A; A=1-x2/72,T=x2MPYAA; A=T*A=x2(1-x2/72)STHA,*AR3; (d_temp_s)=x2(1-x2/72)执行结果为(d_temp_s)=x2(1-x2/72)。4、第二次迭代计算MASR*AR3-,*AR2+,B,A; A=1-x2/42(1-x2/72); T=x2(1-1-x2/72)MPYA*AR3+; B=x2(1-x2/42(1-x2/72)STB,*AR3; (d_temp_s)=x2(1-x2/42(1-x2/72)执行结果为(d_temp_s)=x2(1-x2/42(1-x2/72)。5、第三次迭代计算|LD*AR5,B; B=1 MASR*AR3-,*AR2+,B,A; A=1-x2/20(1-x2/42(1-x2/72)MPYA*AR3+; B=x2(1-x2/20(1-x2/42(1-x2/72)STB,*AR3;(d_temp_s)=x2(1-x2/20(1-x2/42(1-x2/72)执行结果为(d_temp_s)=x2(1-x2/20(1-x2/42(1-x2/72)。6、第四次迭代计算|LD*AR5,B; B=1MASR*AR3-,*AR2,B,A; A=1-x2/6(1-x2/20(1-x2/42(1-x2/72)MPYAd_xs; B=x(1-x2/6(1-x2/20(1-x2/42(1-x2/72)上述代码计算结果存入累加器B中,执行以下代码,最终的计算结果将存入d_sinx数据存储单元中:STHB,d_sinx; sin(theta)从以上实现迭代算法的程序代码不难看出,用DSP汇编语言来实现正弦函数泰勒级数展开式的计算非常方便,并且占用很少的内存,如果要求更高的精度,只需多几步迭代即可,在这方面体现了采用DSP实现正弦函数计算的优越性。3.4 关键语句说明由于本设计的代码量比较大,这里不再一一列出解释,具体的源程序清单详见附录。本节将着重对对sinx.asm汇编源文件下的主程序可sin子程序中的关键语句进行分析说明。3.4.1 主程序中的关键语句堆栈段大小定义语句:STACK:.usect“STACK”,10;定义堆栈段大小为10字程序输入x的值:ST#5478H,d_xs;将6478H送到数据存储器的d_xs单元调用sin子程序语句:CALLsin_start;调用sin子程序进行迭代计算3.4.2 sin子程序中的关键语句在第3.3节中已经对sin子程序中的迭代算法程序进行了结构分析,这里仅对其中某些关键语句的功能进行说明。系数与x2的计算及结果传递:MASR*AR3+,*AR2+,B,A; A= rnd(B-(*AR3)*( *AR2); T=(*AR3)Rnd表示舍入计算,该语句为实现迭代算法的关键语句,累加器A中存放计算结果,累加器B存放的是上一次迭代计算的结果,同时将下一次的计算因子放入暂存器T中。4 程序调试结果本设计所编写的正弦函数计算程序在CCS C5000 1.20软件开发环境下编译后,无错误出现,将sin_cal.out文件加载并运行程序后,内存情况如图4-1所示。图4-1 程序运行后的内存情况由图4-1可知,本设计所编写的程序的运行结果为5A81H,即6487H的正弦值为5A81H。从该图中我们也可以清楚地查看到其他数据存储器单元中的内容,如存放x的平方值的d_squr_xs内存单元中的值为4EF3H。5 课程设计总结及体会在本次DSP处理器应用课程设计中,我针对所设计的课题查阅了很多资料,从中吸收了很多对自己本次课程设计非常有用的设计思想。虽然在设计过程中遇到很多问题,但我通过认真分析和查阅资料,把问题都一一解决了。这在一定程度上提高了我分析问题解决问题的能力。5.1 课程设计总结我所设计的题目是正弦函数计算程序的编写,通过该题目可以看出,要完成该题目的设计,需要熟悉C54x系列DSP汇编语言,并且还要熟悉CCS DSP软件开发环境。设计该题目之前要明确以下几点:1、正弦函数计算方法设计者需要查找资料了解采用处理器来进行正弦函数的计算有哪些方法,即确定设计算法,并比较这些方法的优缺点,从中选择最佳的实现方法来进行该题目的设计,明确了这一点设计者才能有目的地选择实现该方法的汇编语句。2、算法分析在进行程序编写之前,设计者需要了解计算正弦函数的算法原理,在不明白院里的情况写进行程序编写是很难编写出优质的程序代码。3、程序结构选择在编写程序之前需要想清楚采用怎样的程序结构来实现软件设计效率较高,一般的程序设计结构是模块化设计,即通过主程序调用子程序的方法来实现。本设计通过主程序调用正弦函数计算子程序的程序结构,取得了较好的设计效果。以上几点是我对该设计题目设计思路的总结,由此可以看出,设计该题目需要设计者熟悉正弦函数的计算方法,并能够熟练应用C54x汇编语言进行程序设计,这在一定程度上提高了设计者的DSP程序设计能力。5.2 设计体会通过对该题目的设计,我对DSP处理器应用技术有了一定的了解,然而本设计仅仅是基于软件仿真的模拟设计,要想做到实际设计的程度,还需要继续深入系统的学习DSP处理器应用技术。在本次课程设计中,我体会最深的是设计算法的实现。一个优越的设计算法不仅能够大大降低程序设计的难度,更重要的是能够实现较高的计算精度和计算效率,这在需要处理海量数据时尤为重要,因此在今后的学习当中,我不仅要在软件设计方面深入学习,在设计算法方面也要深入的研究。参考文献【1】 邓琛等. DSP芯片技术及工程实例. 北京航空航天大学出版社,2010.【2】 刘益成. TMS320C54x DSP应用程序设计与开发.北京航空航天大学出版社,2002.【3】 同济大学数学系. 高等数学(第六版 下册). 高等教育出版社,2007.【4】 TMS320C54x Assembly Language Users GuideM.Texas Instruments Inc,2001.【5】 TMS320C54x Programmers Guide. Texas Instruments Inc,2001.【6】 TMS320C54x Assembly Language Tools Users Guide. Texas Instruments Inc,2002.【7】 TMS320C54x,TMS320LC54x,TMS320VC54x Fixed-Point Digital Signal Processor. Texas Instruments Inc,1999.附录 正弦函数计算程序清单.title sinx.asm.mmregs.defstart.refsin_start,d_xs,d_sinxSTACK:.usectSTACK,10start:STM#STACK+10,SPLD#d_xs,DPST#6487H,d_xs;x-d_xsCALLsin_startend:Bendsin_start: .defsin_startd_coef_s.usectcoef_s,4.datatable_s:.word01C7H;c1=1/(8*9).word030BH;c2=1/(6*7).word0666H;c3=1/(4*5).word1556H;c4=1/(2*3)d_xs.usectsin_vars,1d_squr_xs.usectsin_vars,1d_tenmp_s.usectsin_vars,1d_sinx.usect
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天然香肠调料创新创业项目商业计划书
- 在社区开设食用油专卖店创新创业项目商业计划书
- 建筑智能化停车管理系统创新创业项目商业计划书
- 超高压输电线路张力架线施工技术手册
- 小学数学趣味微课堂设计
- 促进工作落实心得体会范例
- 2025年江西农商联合银行金融科技人才招聘25人考前自测高频考点模拟试题及答案详解(名校卷)
- 公司财务费用预算编制指南
- 大班主题活动设计与实施方案
- 公路建设外观质量检测标准与评判细则
- 《分众传媒公司介绍》课件
- 物资编码基础知识
- 管桩试桩方案
- 血液科医师晋升副(主)任医师难治性伯基特淋巴瘤病例分析专题报告
- 癌性疼痛中西医结合诊疗指南
- 冷库建设工程施工进度计划及保证措施
- 建筑设计行业2024年财务挑战解析
- 慢性病防治健康教育知识讲座
- 中国石化加油站视觉形象(VI)标准手册-课件
- 退费账户确认书
- 国家开放大学《政治学原理》章节自检自测题参考答案
评论
0/150
提交评论