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

上传人:ch****o 文档编号:146807862 上传时间:2022-08-31 格式:DOCX 页数:16 大小:29.70KB
收藏 版权申诉 举报 下载
DSP正弦函数计算程序的编写_第1页
第1页 / 共16页
DSP正弦函数计算程序的编写_第2页
第2页 / 共16页
DSP正弦函数计算程序的编写_第3页
第3页 / 共16页
资源描述:

《DSP正弦函数计算程序的编写》由会员分享,可在线阅读,更多相关《DSP正弦函数计算程序的编写(16页珍藏版)》请在装配图网上搜索。

1、摘要泰勒级数展开法作为一种数学方法,在科研和平时的数据处理方面应用的很广泛。尤其是在通信、仪器仪表和工业控制等领域应用更为广泛。在科技高速发展的今天,对函数的计算不仅要求有很高的精度,还对计算的时间又很高的要求,必须在很短的时间内完成数据的处理,否则根本不能完成大批量数据的实时性计算和处理。介于DSP芯片运算速度快的特点,用DSP芯片完成这些算法已越来越受到重视。产生正弦波,分别是查表法和泰勒级数展开法。查表法应用于精度要求不很高的场合,而泰勒级数展开法是一种比查表法更为有效的方法。它能精确的计算出一个角度的正弦和余弦值,且占用的储存空间较小,体现了它的优越性。关键词: DSP 泰勒级数 正弦

2、波目录摘要I1、正余弦信号发生器的实现原理11.1、正弦波信号发生器12、正弦波的实现22.1、计算一个角度的正弦值22.2、计算一个角度的余弦值43、 正弦波的实现84、链接文件105、调试结果12总结13参考文献141、正余弦信号发生器的实现原理1.1、正弦波信号发生器泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。本次主要用泰勒级数展开法来实现正弦波信号。 正弦函数和余弦函数可以展开成泰勒级数,其表达式: 取泰勒级数的前5项,得近似计算式:递推公式: sin(nx) = 2cos(x)sin(n-1)x-sin(n-2

3、)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.1、计算一个角度的正弦值计算一个角度x的正弦值,可利用泰勒级数的展开式,采用子程序的调用方式来实现。在调用前先在数据存储器d_xs单元中存放x的弧度值,计算结果存放在d_sinx单元中。程序中要用到一些存储单元存放数据和变量,存储单元的分配如下:d_xs:x; d_squr_xs: x2 d_temp_s:暂存; d_sinx:计算结果sinx c_1_s:7FFFh (数

4、值1);d_coef_s :泰勒系数存储单元分配图:xd_xsd_squr_xsd_temp_sd_sinxc_1_sd_coef_stable_sc1=1/(8*9) x2c2=1/(6*7)c3=1/(4*5)sinxc4=1/(2*3)(7FFFH)(c1=01c7H)(c2=030BH)(c3=0666H)(c4=1556H)数据存储器 程序存储器表1计算正弦值存储单元分配程序清单sinx.asm: .title “sinx.asm” .mmregs .def start .ref sin_start,d_xs,d_sinx STACK: .usect “STACK”,10start:

5、 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 “coef_s”,4 .data table_s: .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_xs .usect “sin_vars”,1 d_squr_xs .usect “sin_vars”,1 d_temp_s .

6、usect “sin_vars”,1 d_sinx .usect “sin_vars”,1 c_1_s .usect “sin_vars”,1 .text SSBX FRCT STM #d_coef_s,AR4 RPT #3 MVPD #table_s,*AR4+ STM #d_coef_s,AR2 STM #d_xs,AR3 STM #c_1_s,AR5 ST #7FFFH,c_1_s SQUR *AR3+,A ;求x的平方值 ST A,*AR3 ;x平方值存入(AR3) | LD *AR5,B;B=1 MASR *AR3+,*AR2+,B,A ;A=1-x2/72,T=x2 MPYA A;

7、A=T*A STH A,*AR3 ;(d_temp_s)= x2(1-x2/72) MASR *AR3-,*AR2+,B,A ;A=1-x2/42(1-x2/72);T=x2(1-x2/72) MPYA *AR3+ ;B= x2(1- x2/42(1- x2/72)) ST B,*AR3 ;(d_temp_s)= x2(1- x2/42(1- x2/72) | 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) ST B,*AR3 ;(d

8、_temp_s)= | LD *AR5,B ;B=1 MASR *AR3-,*AR2,B,A ;A=1-x2/6(1-x2/20(1-x2/42(1-x2/72) MPYA d_xs ;B=x(1-x2/6(1-x2/20(1-x2/42(1-x2/72) STH B,d_sinx ;sin(theta) RET .end2.2、计算一个角度的余弦值计算余弦值与计算正弦值相同。存储单元分配图:xd_xcd_squr_xcd_temp_cd_cosxc_1_cd_coef_ctable_sc1=1/(7*8) x2c2=1/(5*6)c3=1/(3*4)cosxc4=1/2(7FFFH)(c1=

9、00249H)(c2=0444H)(c3=0AABH)(c4=4000H)数据存储器 程序存储器表2 计算余弦值存储单元分配程序清单cosx.asm:.title “cosx.asm”.mmregs.def _c_int00.ref cos_start,d_cosxSTACK: .usect “STACK”,10_c_int00: STM # STACK+10,sp LD #d_xc,DP ST #6487h,d_xc CALL cos_startend: B endcos_start: .def cos_startd_coeff .usect “coef_c”,4 .dataTable .w

10、ord 0249h; c1=1/(7*8).Word 0444h; c2=1/(5*6).Word 0aahh; c3=1/(3*4).word 4000h; c4=1/2d_x .usect “cos_vars”,1d_squr_x .usect “cos_vars”,1d_temp .usect “cos_vars”,1d_cosx .usect “cos_vars”,1c_1 .usect “cos_vars”,1 .text SSBX FRCT STM #d_coef_c,AR4 Rpt #3 MVPD #table_c,*AR4+ STM #d_coef_c,AR2 STM #d_x

11、c,AR3 STM #c_1_c,AR5 ST #7FFFH,c_1_c SQUR *AR3+.A;求x的平方值 ST A,*AR3;x平方值存入(AR3) | LD *AR5,B;B=1 MASR *AR3-,*AR2+,B,A;A=1-x2/56,T=x2 MPYA A;A=T*A STH A,*AR3;(d_temp_c)=x2(1-x2/56) MASR *AR-,*AR3+,B,A;A=1-x2/30(1-x2/56);T=x2(1-x2/56) MPYA *AR3+;B= x2(1- x2/30(1- x2/56)) ST B,*AR3 ;(d_temp_s)= x2(1- x2/

12、30(1- x2/56) |LD *AR5,B;B=1 MASR *AR3-,*AR2,B,A;;A=1-x2/12(1-x2/30(1-x2/56) SFTA A,-1,A;-1/2 NEG A MPYA *AR3+;B=-x2/2(1-x2/12(1-x2/30(1-x2/56) MAR *AR2+ RETD ADD *AR5,16,B;B=1-x2/2(1-x2/12(1-x2/30(1-x2/56) STH B,*AR3 RET .end3、 正弦波的实现利用计算一个角度的正弦值和余弦值程序公式可实现正弦波,步骤如下:第一步:利用sin_start 和cos_start子程序,计算0o

13、45o(间隔为0.5o)的正弦和余弦值。第二步:利用sin(2x)=2sin(x)cos(x),计算0-90o的正弦值(间隔为1o).第三步:通过复制,获得0-359o的正弦值。第四步:将0-359o的正弦值重复从PA口输出,便可得到正弦波。程序清单sin.asm:.title “sinx_asm”.mmregs.def start.ref d_xs,sinx,d_sinx,d_xc,cosx,d_coxsin_x:.usect“sin_x”,360STACK.usect“STACK”,10k_theta.286;theta=pi/360PA0.set0Start:.textSTM#STACK

14、+10,SPSTM#0,AR0;AR0=x=0STMk_theta,AR1;设置增量STM#sin_x,AR7;AR7指向sin_xSTM#90,BRC;设置重复次数,计算sin0-sin9RPTBloop-1LDMAR0,ALD#d_xs,DPSTLA,d_xsSTLA,d_xcCALLsin_startCALLcos_startLD#d_sinx,DPLDd_sinx,16,A;求得sinx加载累加器AMPYAd_cosx;计算sinx*cosx,结果存BSTHB,1,*AR7+;计算2*sinx*cosx,结果存AR7MAR*AR0+0Loop1:STM#sin_x+89,AR6;AR6

15、指向sin_x+89STM #88,BRC;设置重复次数,计算sin91至sin197RPTBloop2-1LD*AR6-,ASTLA,*AR7+Loop: STM #179,BRC;设置重复次数,计算sin180至sin359STM#sin_x,AR6;AR6指向sin_xRPTBloop3-1LD*AR6+,ANEGASTLA,*AR7+Loop3_:STM#sin_x,AR7;AR7指向sin_xSTM #1,AR1STM#360,BK;设置缓冲区长度Loop4:PORTW*AR7+0%,PA0 ;输出正弦值Bloop4;循环输出,产生正弦波.end4、链接文件链接命令文件是将链接的信息

16、放在一个文件中,这在多次使用同样的链接信息时,可以方便地调用。在命令文件中可使用两个十分有用的伪指令MEMORY和SECTIONS,用来指定实际应用中的存储器结构和地址的映射。在命令行中不能使用这两个伪指令,命令文件为ASC文件,可包含一下内容:(1)输入文件名,用来指定目标文件、存档库或其他命令文件。注意,当命令文件调用其他文件时,该调用语句必须是最后一句,连接器不能从被调用的命令文件中返回。(2)连接器选项,他们在命令文件中的使用方法于在命令行中相同。(3)MEMORY和SECTIONS链接伪指令,MEMORY用来指定目标存储器结构,SECTIONS用来控制段的构成于地址分配程序中所用到的

17、链接文件sinc.cmdvectors.objsinx.obj-o sin.out-msin.map-e startMEMORY PAGE 0: EPROM: org=0E000h, len=1000h VECS: org=0FF80h, len=0080h PAGE 1: SPRAM: org=0060h, len=0020h DARAM1: org=0080h, len=0010h DARAM2: org=0090h, len=0010h DARAM3: org=0200h, len=0200hSECTIONS .text :EPROM PAGE 0 .data :EPROM PAGE 0

18、 STACK :SPRAM PAGE 1 sin_vars :DARAM1 PAGE 1 coef_s :DARAM1 PAGE 1 cos_vars :DARAM2 PAGE 1 coef_c :DARAM2 PAGE 1 sin_x : align(512) DARAM3 PAGE 1 .vectors :VECS PAGE 05、调试结果第一次叠代计算结果:A=004E4510A4 B=007FFF0000T=4EF3 AR2=0061AR3=1428 AR4=0094 SP=0089第二次叠代计算结果:A=007E230000 B=004DCCCA72T=4EF3 AR2=0093AR

19、3=0095 AR4=0094 SP=0089第三次叠代计算结果:A=007C1B0000 B=004C8C0F42T=4EF3 AR2=0094AR3=0095 AR4=0094 SP=0089 第四次叠代计算结果:A=00733D0000 B=0013356EFCT=1556 AR2=0094AR3=0094 AR4=0094 SP=008A总结一周的课程设计很快结束了,从刚接触课程设计时的无从下手,到最后的完成,收获了很多。让我认识到DSP这门课的应用特别广泛,也看到了自己的DSP在实际课程中学的是多么的肤浅。在完成设计的同时,很好的学习CCS5000的操作。我相信这些都会是我以后的学习和工作中不可或缺的宝贵知识。设计中很累但很快乐。学到了很多,充实了很多!参考文献1. DSP原理及应用 电子工业出版社 邹彦主编2. DSP实用技术苏涛 卢光跃 张林让 编著3.TMS320C54XDSP应用程序设计与开发 刘益成 主编

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!