正弦波信号发生器课程设计.doc_第1页
正弦波信号发生器课程设计.doc_第2页
正弦波信号发生器课程设计.doc_第3页
正弦波信号发生器课程设计.doc_第4页
正弦波信号发生器课程设计.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010级学生DSP原理及应用课程设计 太 原 理 工 大 学DSP原理及应用课程设计报告书课题名称 正弦波信号发生器姓 名 高占冬学 号 2010001279院、系、部 信息工程专 业 通信1002 正弦波信号发生器课程设计一、 课程设计基础数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。数字信号处理是以众多学科为理论基础,它所涉及的范围极其广泛。如数学领域中的微积分、概率统计、随机过程、数字分析等都是数字信号处理的基础工具。它与网络理论、信号与系统、控制理论、通信理论、故障诊断等密切相关。 一个典型的DSP系统应包括抗混叠滤波器、数据采集A/D转换器、数字信号处理器DSP、D/A转换器和低通滤波器等组成。 x(t)抗混叠滤波器A/D转换器x(n)y(n)y(t)数字信号处理器D/A转换器低通滤波器DSP信号处理过程: 将输入信号x(t)进行抗混叠滤波,滤掉高于折叠频率的分量,以防止信号频谱的混叠; 经采样和A/D转换器,将滤波后的信号转换为数字信号x(n); 数字信号处理器对x(n)进行处理,得数字信号y(n); 经D/A转换器,将y(n)转换成模拟信号; 经低通滤波器,滤除高频分量,得到平滑的模拟信号y(t)。二、 课程设计目的 1、了解DSP对数据的处理能力2、利用DSP实现正弦信号发生器三、 课程设计总体方案1. 总体方案设计 基于DSP的特点,本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。 用泰勒级数展开法实现正弦波信号。 设置波形时域观察窗口,得到其滤波前后波形变化图; 设置频域观察窗口,得到其滤波前后频谱变化图。2. 正弦波信号发生器 正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法。查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。本次主要用泰勒级数展开法来实现正弦波信号。 产生正弦波的算法正弦函数和余弦函数可以展开成泰勒级数,其表达式:取泰勒级数的前5项,得近似计算式:递推公式: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。四、课程设计内容1.用泰勒级数展开法计算sin(x)的值;2.用泰勒级数展开法计算con(x) 的值;3.用泰勒级数展开法产生正弦波。五、课程设计步骤1、用泰勒级数展开法计算sin(x)的值:1在CCS中建立项目:sinx.pjt,装载程序并运行;2在程序sinx.asm中,给出的x的值为pi/4=6487弧度。如果改变x在程序中的值,便可以计算其他角度的正弦值。3执行结果sin(pi/4)=5A81H,存储在数据存储器d_sinx(2003H)单元中。用查看寄存器的方法可以看到此结果。2、用泰勒级数展开法计算cos(x)的值:1在CCS中建立项目:cosx.pjt,装载程序并运行;2在程序cosx.asm中,给出的x的值为pi/4=6487弧度。如果改变x在程序中的值,便可以计算其他角度的余弦值。3执行结果sin(pi/4)=5A82H,存储在数据存储器d_sinx(2003H)单元中。用查看寄存器的方法可以看到此结果。3、用泰勒级数展开法产生正弦波:1在CCS中建立项目:sin.pjt,装载程序;2在程序的适当处加上一个断点。作用:这里定义了一个显示缓冲区dis_buf,将要输出到D/A的数据送到显示缓冲区当中去,以便在CCS图形显示的时候可以从图形显示中得到数据。3打开CCS的图形显示窗口,修改如下参数: Start Address=sin_x、Page=Data、Acquisition Buffer Size=360、Display Data Size=360;DSP Data Type=16-bit signed integer4点击CCS的Debug/Animate运行此程序,就可以在CCS的图形观察窗口看到正弦波的显示。注:Animate运行方式是在遇见断点后继续执行的一种方式,在显示图形是特别方便,显示效果如下:参考程序:* 用泰勒级数开展开式计算一个角度的正弦值 *sin(x)=x(1-x*x/2*3(1-x*x/4*5(1-x*x/6*7(1-x*x/8*9)*.titlesinx.asm.mmregs.defstart .ref sin_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,4.datatable_s:.word01C7H;c1=1/(8*9).word030BH;c2=1/(6*7).word0666H;c3=1/(4*5).word1556H;c4=1/(2*3)d_x.usectsin_vars,1d_squr_x .usectsin_vars,1d_temp.usectsin_vars,1d_sinx.usectsin_vars,1c_1_s.usectsin_vars,1.textSSBXFRCTSTM#d_coef_s,AR4RPT#3MVPD#table_s,*AR4+STM#d_coeff_sAR2STM#d_xs,AR3STM#c_1_s,AR5ST#7FFFH,c_1_sSQUR*AR3+,A;A=x2STA,*AR3;(AR2)=x2|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)=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)STB,*AR3;(d_temp)=x2(1-x2/42(1-x2/72)|LD*AR5,B;B=1MASR*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)=B|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)STH B,d_sinx;sin(theta)RET.end* 用泰勒级数开展开式计算一个角度的正弦值 * cos(x)=1-x*x/2(1-x*x/3*4(1-x*x/5*6(x*x/7*8) *.titlecosx.asm.mmregs.defstart .ref cos_start,d_xc,d_cosxSTACK:.usectSTACK,10start:STM#STACK+10,SPLD#d_xc,DPST#6487H,d_xc;x-d_xcCALLcos_startend:Bendcos_start:.defcos_startd_coef_c .usectcoef_c,4.datatable_c:.word0249H;c1=1/(7*8).word0444H;c2=1/(5*6).word0AABH;c3=1/(3*4).word4000H;c4=1/(1*2)d_xc .usectcos_vars,1d_squr_xc .usectcos_vars,1d_temp_c .usectcos_vars,1d_cosx.usectcos_vars,1c_1_c.usectcos_vars,1.textSSBXFRCTSTM#d_coef_c,AR4RPT #3MVPD#table_c,*AR4+STM#d_coeff,AR2STM#d_xc,AR3STM#c_1_c,AR3ST#7FFFH,c_1_cSQUR*AR3+,A;A=x2STA,*AR3;(AR2)=x2|LD*AR5,B;B=1MASR*AR3+,*AR2+,B,A;A=1-x2/56,T=x2MPYAA;A=T*A=x2(1-x2/56)STHA,*AR3;(d_temp)=x2(1-x2/56)MASR*AR3-,*AR2+,B,A;A=1-x2/30(1-x2/56),T=x2(1-x2/56)MPYA*AR3+;B=x2(1-x2/30(1-x2/56)STB,*AR3;(d_temp)=x2(1-x2/30(1-x2/56)|LD*AR5,B;B=1MASR*AR3-,*AR2,B,A;A=1-x2(1-x2/30(1-x2/56)SFTAA,-1,A;A右移一位即A除以2NEGAMPYA*AR3+;B=-x2/2(1-x2/12(1-x2/30(1-x2/56)MAR*AR3+RETDADD*AR5,16,B;B=1-x2/2(1-x2/12(1-x2/30(1-x2/56)STHB,*AR23;cos(theta)RET.end* * 利用泰勒公式产生正弦波的程序 *.titlesin.asm.mmregs.defstart .ref d_xs,d_sinx,d_xc,d_cosxsin_x:.usectsin_x,360STACK:.usect STACK,10k_theta.set286PA0 .set0start: .textSTM#STACK+10,SPSTM#0,AR0STMk_theta,AR1STM#sin_x,AR7STM#90,BRCRPTBloop1-1LDMAR0,ALD #d_xs,DPSTL A,d_xsSTL A,d_xcCALLsin_startCALLcos_startLD #d_sinx,DPLD d_sinx,16,AMPYAd_cosxSTH B,1,*AR7+MAR*AR0+0loop1:STM#sin_x+89,AR6STM#88,BRCRPTBloop2-1LD*AR6-,ASTLA,*AR7+loop2:STM#179,BRCSTM#sin_x,AR6RPTBloop3-1LD*AR6+,ANEGASTLA,*AR7+loop3:STM#sin_x,AR7 STM#1,AR1 STM #360,BKloop4:PORTW*AR7+0%,PA0Bloop4Endvectors.objsin,obj-o sin.out-m sin.map-e startMEMORYPAGE0:EPROM: org=0E000H,len=1000HVECS: org=0FF80H,len=0080HPAGE0SPRAM: org=0060H,len=0020HDARAM1: org=0080H,len=0010HDARAM2: org=0090H,len=0010HDARAM3: org=0200H;len=0200HSECTIONS.text : EPROM PAGE0.data : EPROM PAGE0STACK : SPRAM PAGE1sin_vars : DARAM1 PAGE1coef_s : DARAM1 PAGE1cos_vars : DARAM1 PAGE1coef_c : DARAM2 PAGE1sin_x : align(512) DARAM3 PAGE1.vectors : VECS PAGE0*六、课程设计总结通过这次课程设计,让了解到书上没有 的知识,进一步了解了DSP的功能,也学会了CC

温馨提示

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

评论

0/150

提交评论