DSP课设——正弦波发生器要点_第1页
DSP课设——正弦波发生器要点_第2页
DSP课设——正弦波发生器要点_第3页
DSP课设——正弦波发生器要点_第4页
DSP课设——正弦波发生器要点_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、正弦波发生器摘要数字信号处理(Digital Signal Processing ,简称DSP)是一门涉及许多学 科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数 字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。数字信号处理器( 号变成数字信号以后进行高速实时处理的专用处理器。 的结构和快速实现各种数字信号处理算法的突出优点,DSP)是在模拟信DSP芯片以其独特 发展十分迅速。本文中提出的基于DSP技术设计的正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业

2、控制等领域的信号处理系统中。在本文中简要的概括了一种基于TMS320C5402实现正弦信号发生器的设计 原理与方法,介绍了所设计的正弦信号发生器硬件电路结构和软件程序流程图。 结合DSP硬件特性,通过使用泰勒级数展开法得到设定参数的正弦波形输出, 达到设计目的。该信号发生器弥补了通常信号发生器模式固定, 波形不可编程的 缺点,其具有实时性强,波形精度高,可方便调节频率和幅度、稳定性好等优点。关键字:DSP; TMS320C5402;信号发生器;正弦信号;1设计目的及要求 11.1设计目的 11.2设计内容及要求 12设计方案及原理 22.1总体方案 22.2设计原理 23系统硬件设计 33.1

3、系统硬件框图 33.2 TMS320C5402简介 43.3 D/A 转换部分设计 54系统软件设计及调试 64.1变频调幅的方法 64.2程序设计 64.3程序编写 84.4 CCS 简介 144.5运行步骤及结果 155设计心得 19参考文献 20附录设计程序 21 /步理7 乂彥正弦波发生器1设计目的及要求1.1设计目的DSP课程设计是对数字信号处理、DSP原理及应用等课程的较全面 练习和训练,是实践教学中的一个重要环节。通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先 修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步 巩固、深化和发展。初步培养

4、学生对工程设计的独立工作能力,掌握电子系统设计的一般方法。通过课程设计完成基本技能的训练,如查阅设计资料和手册、程 序的设计、调试等,提高学生分析问题、解决问题的能力。要疋.1. 掌握DSP程序设计的方法以及软件的调试等;2. 掌握CCS软件的使用;3. 学会用CCS仿真模拟DSP芯片,通过CCS软件平台上应用C54X汇编 语言来实现正弦信号发生装置;4. 掌握控制TLC320AIC23的输出信号,使该信号通过滤波放大后输出, 并在点阵液晶中大致显示出幅频图的基本方法和步骤。1.2设计内容及要求本题目DSP通过计算法或者查表的方法,得到正弦信号,然后将数据传递给TLC320AIC23,控制TL

5、C320AIC23的输出信号,该信号通过滤波放大 后输出,并在点阵液晶中大致显示出幅频图。1. DSP与TLC320AIC23接口电路的原理图绘制;2. DSP控制TLC320AIC23的程序编写与调试;3. TLC320AIC23进行D/A的转换,实现信号的输出;4. 控制点阵液晶,实现绘图功能,将幅频图显示出来;5. 按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。6. 在报告中绘制程序的流程图,并文字说明。2设计方案及原理2.1总体方案总体思想是:(1) 基于DSP的特点,本设计采用 TMS320C5402这款DSP芯片作为正弦信号发生器的核心控制芯片。(2 )用泰勒级数展开法

6、实现正弦波信号。(3)利用点阵的绘图功能将正弦波的波形显示出来2.2设计原理泰勒级数展开法是一种有效的方法, 与查表法和查表结合插值法相比,该方需要的存储单元很少,而且精度更高。我们知道一个角度为x的正弦和余弦函数,都可以展开为泰勒级数,且其前五项可以看为:3579x x x x sin(x) = x _3!5x2X2X27!9!2468xxxxcos(x) =1 一 一 一 - 一 一 -2!4!6!8!2x:1 一一2x21 -6 7X21 -8 9X2JJJJ(1)(2)第5页共26程序的设计思想是这样的,正弦波的波形可以看为由无数点组成, 这些点与x轴的每一个角度值相对应,那么我们可以

7、利用 DS处理器处理大量重复计算的优势来计算,x轴每一点对应的y轴的值(在x轴取360个点来进行逼近),由于 程序的编制采用小数形式,其弧度大于1的正弦值得不到,这就对正弦波的产生造成了障碍。可由于正弦波的特殊的对称形式给程序的编制找到了出口。sin的弧度为0.7854<1,即0二4之间的任意正弦、余弦值可以利用汇编程序得到N的正弦曲线与二2又可以利用公式:sin2=2sin : cos得到0二2之间的正弦值。而。二2之间二之间的正弦曲线通过x这条轴左右对称,那么就可以得到二的正弦值,而0二的正弦曲线的相反数通过x =戛这条轴与二 2二左右对称。这样二2二的正弦值也得到了。一个周期内完整

8、的正弦波就得到了 正弦波产生的流程图如下:图2.1正弦波产生的流程图3系统硬件设计3.1系统硬件框图该正弦信号发生器的硬件结构框图如图 3.1所示,主要由TMS320C5402芯 片,D/A转换器,独立键盘等几部分组成。图3.1 DSP系统硬件框图3.2 TMS320C5402 简介本次设计中采用的是TI公司性价比良好的TMS320C5402芯片,这款芯片 它采用修正的增强型哈佛结构,程序和数据分开存放,内部具有8组高度并行总 线,一组程序总线、3组数据总线和4组地址总线,从而保证完成并行指令操作。 40位算术逻辑单元ALU以及17位X17位并行乘法器与40位专用加法器相连, 可用于非流水线式

9、单周期乘法/累加运算。双地址生成器,包括 8个辅助寄存器 和2个辅助寄存器算术运算单元RARU,使得周期定点指令的执行时间达到100MIPS。片上集成有192K存储空间:64K字程序空间、64K数据空间、64K字I/O 空间,它具有23条外部程序地址线,可寻址1M字的外部程序空间,因此增设 了额外的存储映射程序技术扩展寄存器 XPC,以及6条扩展程序空间寻址指令, 整个程序空间分成16页。同时可寻址64K外部数据空间、64K外部I/O空间。 RAM包括两种类型,一是只可以一次寻址的SARAM,二是可以两次寻址的DARAM。此外,还有数据存储器0页映射的25个特殊功能寄存器。同时,该芯片还有高度

10、专业化的指令系统,具有功耗小、高度并行等优点。 此外,其支持C语言和汇编语言混合编程,高效的流水线操作和灵活的寻址方 式使其适合高速实时信号处理。正弦波发生器 /歹揑Z 乂#丨3.3 D/A转换部分设计McBSP(Multi-channel Buffered Serial)即多通道缓冲串口,包括一个数据通 道和一个控制通道。数据通道通过 DX引脚发送数据、DR引脚接收数据。控制 通道完成的任务包括内部时钟的产生、 帧同步信号的产生、对这些信号的控制以 及多通路的选择等。此外还负责产生中断信号送往 CPU,产生同步事件信号通 知DMA控制器。控制信息则是通过控制通道以时钟和帧同步信号的形式传送。

11、数模转换芯片采用TLC320AD50C其是TI公司出品的一块将A / D和D/ A转换功能集成在一起的接口芯片,采用百技术在低系统成本下实现高精度的 A/ D和D / A转换。该芯片由一对16 bit同步串行转换通道组成,在 A / D之 后有一个抽取滤波器,在 D/A之前有一个插值滤波器。TLC320AD50C可以与TMS320C5402 DSP的McBSP无缝串行连接进行数 据采集、存储和处理。SCLK输出时钟,M /S主从模式选择(H为高电平,为主 机模式),DIN串行输入,DOUT串行输出,FS帧同步信号输出,对应DSP的各 相应引脚。McBSP和D/A芯片的硬件电路连接如图3.2所示

12、。TMS320C5402TL C3 20AD 50CBCLKB.0SCLKBCLKXOHM/SBDRODOUTBDXODINBFSROBFSXOFS图3.2 McBSP和D/A芯片的硬件连接图第#页共26正弦波发生器第11页共264系统软件设计及调试4.1变频调幅的方法(1)16位定时模块C5402 DSP芯片片内定时器是一个软件可编程的计数器,它包括以下 3个16 位存储器映射寄存器:定时寄存器 TIM,定时器周期寄存器PRD和定时控制寄 存器TCR。片内定时器中,4位的预定标计数器PSC和16位定时计数器TIM组 成一个20位的计数器,定时器每个 CPU时钟周期减1,每次计数器减到0将产生

13、 定时器中断(TINT),同时PSC和TIM重新载入预设的值。定时器中断 TINT的 速率可由式计算。TINTrate(3)1 1tc u v tc TDDR 1 (PRD 1)(2) 变频调幅实现方法调幅的实现相对简单,只需在所有采样值前乘以一个调幅因子A1就可得到相应的正弦波幅值 A。而调频的实现必须依赖于 C5402芯片内的16位定时器。DSP芯片不断向D/A芯片送出采样值,然后经模数转换后可在示波器上观察到 连续的正弦波形。先预设要产生的正弦信号频率为f,根据正弦波生成原理可知, 向D/A送出采样值的间隔,即向D/A送值的周期T1=T/N(N为采样点数), 那么向D/A送值的频率为f1

14、=NXf,即向D/A送值的频率是期待产生的正弦 波信号频率的N倍。因此,为了能够调节产生正弦信号的频率,实际上改变向D/A芯片送值的 频率即可。而改变向D/A芯片送值的频率就得用到C5402芯片内的16位定时器。 根据式(3)将需要的频率值换算成PRD内的初值和TDDR的初值,并将该初值分 别置入PRD和TDDR。4.2程序设计软件系统采用模块化结构设计,主要包括DSP主程序,中断程序和键盘驱动 程序。DSP系统的主程序流程图如图4.1所示。先对系统进行检测、配置 McBSP 端口等,开启中断调用键盘驱动程序读取键值并处理,进入中断后根据相应的键值设置相应的信号参数,并通过 D/A转换,产生不

15、同幅度、频率的正弦波。图4.1主程序流程图中断程序流程图如图4.2所示。首先根据键盘的按键值选择已设置好的正弦波的幅度与频率,然后按具体步骤执行便可以得到所需正弦波。图4.2中断程序流程在CCS开发环境下编程,通过仿真器将程序下载到 DSP芯片中,选择不同的按 键产生相应的中断,即可在示波器中观察到相应的正弦波形。所产生的波形具有 精度高,幅值稳定的特点,同时具有较强的实时性和灵活性。4.3程序编写1、正弦波的实现计算一个角度的正弦值利用泰勒级数的展开式,可计算一个角度x的正弦值,并采用子程序的调用 方式。在调用前先在数据存储器 d_xs单元中存放x的弧度值,计算结果存放在 d_si nx单元

16、中。实现计算一个角度的正弦值的程序片段如下:sinx:.defd_xs,d_s inx.datatable_s.word01C7H;3= 1/(8*9).word030BH;C2=1/(6*7).word0666H;C3=1/(4*5).word1556H;C4=1/(2*3)d_coef_s.usect"coef_s",4d_xs.usect"sin_vars",1d_squr_xs.usect"sin_vars",1d_temp_s.usect"sin_vars",1d_si nx.usect"sin

17、_vars",1d_s.usect"sin_vars",1.textSSBXFRCTSTM#d_coef_s,AR5;move coeffs table_sRPT#3MVPD#table_s,*AR5+STM#d_coef_s,AR3STM#d_xs,AR2STM#d_s,AR4ST#7FFFH,d丄sSQUR*AR2+,A;A=xA2STA,*AR2;(AR2)=xA2|LD*AR4,B;B=1MASR*AR2+,*AR3+,B,A;A=1-xA2/72,T=xA2MPYAA;A=T*A=xA2(1-xA2/72)STHA,*AR2;(d_temp)=xA2(1

18、-xA2/72)MASR*AR2-,*AR3+,B,A;A=1-xA2/42(1-xA2/72);T=xA2(1-xA2/72)MPYA*AR2+;B=xA2(1-xA2/42(1-xA2/72)STB,*AR2;(d_temp)=xA2(1-xA2/42(1-xA2/72) |LD *AR4,B;B=1MASR *AR2-,*AR3+,B,A4=1帜八2/20(1帜八2/42(1帜八2/72) MPYA *AR2+;B=xA2(1-xA2/20(1-xA2/42(1-xA2/72)STB,*AR2;(d_temp)=B|LD *AR4,B;B=1MASR *AR2-,*AR3,B,A4=1帜

19、八2/6(1帜八2/20(1帜八2/42(1帜八2/72) MPYA d_xs;B=x(1-xA2/6(1-xA2/20(1-xA2/42(1-xA2/72)STHB,d_si nx;si n( theta)RET计算一个角度的余弦值利用余弦函数展开的泰勒级数的前五项计算一个角度的余弦值,可采用子程序的调用方式来实现。调用前先将 x弧度值放在数据存储器d_xc单元中,计算 结果存放在d_cosx单元中。实现计算一个角度的余弦值的程序片段如下:cosx:.defd_xc,d_cosxd_coef_c.usect"coef_c",4.datatable_c.word0249H;

20、C1=1/(7*8).word0444H;C2=1/(5*6).word0AABH;C3=1/(3*4).word4000H;C4=1/2d_xc.usect"cos_vars",1d_squr_xc.usect"cos_vars",1d_temp_c.usect"cos_vars",1d cosx.usect "cos_vars",1第15页共26正弦波发生器c丄c.usect"cos_vars",1.textSSBXFRCTSTM#d_coef_c,AR5;move coeffs table

21、_cRPT#3MVPD#table_c,*AR5+STM#d_coef_c,AR3STM#d_xc,AR2STM#c_l_c,AR4ST#7FFFH,c_l_cSQUR*AR2+,A;A=xA2STA,*AR2;(AR2)=xA2IILD*AR4,B;B=1MASR*AR2+,*AR3+,B,A;A=1-xA2/56,T=xA2MPYAA;A=T*A=xA2 (1-xA2/56)STHA,*AR2;(d_temp)=xA2(1-xA2/56)MASR*AR2-,*AR3+,B,A;A=1-xA2/30(1-xA2/56);T=xA2(1-xA2/56)MPYA*AR2+;B=xA2(1-xA2

22、/30(1-xA2/56)STB,*AR2;(d_temp)=xA2(1-xA2/30(1-xA2/56)IILD*AR4,B;B=1MASR*AR2-,*AR3+,B,A;A=1-xA2/12(1-xA2/30(1-xA2/56)SFTAA,-1,A;-1/2NEGAMPYA*AR2+;B=-xA2/2(1-xA2/12(1-xA2/30(1-xA2/56)MAR*AR2+RETDADD*AR4,16,B;B=-xA2/2(1-xA2/12(1-xA2/30(1-xA2/56);cos(theta)STH B,*AR2RET正弦波的实现利用计算一个角度的正弦值和余弦值程序可实现正弦波。其实现

23、步骤如下:第一步:利用sin_start和cos_start子程序,计算0 45 (间隔为0.5)的 正弦和余弦值;第二步:利用sin(2x)=2si n(x)cos(x)公式,计算0 90的正弦值(间隔为1); 第三步:通过复制,获得 359的正弦值;第四步:将0 359的正弦值重复从PA 口输出,便可得到正弦波。产生正弦波的程序片段如下:.mmregs .def start.defd_xs,d_si nx,d_xc,d_cosx,si nx,cosxsin_x:.usect"sin_x",360STACK:.usect"STACK",10Hk_the

24、ta.set286 ;start:.textSTM#STACK+10H,SPSTMk_theta,AR0STM0,AR1STM#sin_x,AR6STM#90,BRCRPTBloop1-1LDMAR1,ALD#d_xs,DPSTLA,d_xsSTLA,d_xcCALLsi nxCALLcosx;theta=pi/360(0.5deg);d_si nx=si n(x);d_cosx=cos(x)正弦波发生器loopl:loop2:NEGSTLloop3:STMSTMSTM2“#d_si nx,DPd_si nx,16,A;A=si n(x)d_cosx;B=si n( x)*cos(x)B,1,

25、*AR6+;AR62*s in (x)*AR1+0#sin_x+89, AR7;si n91(deg.)-si n179(deg.)#88,BRCloop2-1*AR7-,AA,*AR6+#179,BRC;si n180(deg.)-si n359(deg.)#sin_x,AR7loop3-1*AR7+,ALDLDMPYASTHMARSTMSTMRPTBLDSTLSTMSTMRPTBLDAA,*AR6+#sin_x,AR6#1,AR0#360,BKloop3;gen erate sin wave*.cmd文件描述输入文件和输出文件,说明系统中有哪些可用存储器、程序段、堆栈及复位向量和中断向量等

26、安排在什么地方。 其中MEMORY就是用来规定目标存储器的模型,通过这条指令,可以定义系统中所包含的各种形式的存储器,以及它们占据的地址范围;SECTION段说明如何将输入段组合成输出段以及在可执行文件中定义输出段、规定输出段在存储器中的位置等。产生正弦波链接命令文件的程序片段如下:MEMORYPAGE 0:EPROM: org=0E000H, le n=1000H第19页共26正弦波发生器VECS:org=0FF80H, le n=0080HPAGE 1:SPRAM:org=0060H,len=0020HDARAM1:org=0080H,len=0010HDARAM2:org=0090H,l

27、en=0010HDARAM3:org=0200H,len=0200HSECTIONS.text:>EPROMPAGE 0.data:>EPROMPAGE 0STACK:>SPRAMPAGE 1sin _vars:>DARAM1PAGE 1coef_s:>DARAM1PAGE 1cos_vars:>DARAM2PAGE 1coef_c:>DARAM2PAGE 1sin_x:alig n(512) > DARAM3.vectors:>VECSPAGE 0PAGE 1在实际应用中,正弦波是通过D/A 口输出的。选择每个正弦周期中的样点数、改变每个

28、样点之间的延迟,就能够产生不同频率的波形,也可以利用软件改 变波形的幅度以及起始相位。4.4 CCS简介本实验是基于CCS开发环境的。CCS是TI公司推出的为开发TMS320系列 DSP软件的集成开发环境,是目前使用最为广泛的 DSP开发软件之一。它提供 了环境配置、源文件编译、编译连接、程序调试、跟踪分析等环节,并把软、硬 件开发工具集成在一起,使程序的编写、汇编、程序的软硬件仿真和调试等开发 工作在统一的环境中进行,从而加速软件开发进程。CCS有两种工作模式:(1) 硬件在线编程模式:可以实时运行在 DSP芯片上,与硬件开发板相结合在线编程和调试应用程序;(2)软件仿真器模式:可以脱离 D

29、SP芯片,在PC机上模 拟DSP的指令集和工作机制,主要用于前期算法实现和调试。本次设计采取硬 件在线编程模式。如图4.3所示T=wrrri-feT二3:.玄=二一3Uu uu图4.3 DSP试验箱4.5运行步骤及结果1运行步骤本次课程设计采用CCS中的C5000。第一步,软件中芯片的选择,如图所示,选择 C5416 XDS510 Emulatorio xdsww zauiLtn-jisw-duh runs工鼻迅迥坷 IKSlQ 311*喘rFwily|*11三| |*11Bndi «ro*j«3!K” I JI”L SZiirifai CJdHfidiMiBr St ud

30、3.n Si-tufp-r利Syriem ConhgurelwtChZrbl曰 HaflrtjyErruiateir Typwqkszq- q3cge Ej.h1 .IB*"化旳53wul«h4r WMru XDCT-10 Bvnl<tM-h InnoAa C DniliiuiiiGn Filr IETMII a DiL4C-ialL<ur K.LU m. Dbikot LpiLdinOmCM J沁*吐 vL db. 1»5LD buliiEdcrK«t M i/tl T-art 0iZ4O.口Lhl I Ji. kld< JiaKl

31、tdiki ±#1些 i E觀A、|aJid QUL图 4.4 set up CCS 界面正弦波发生器图4.5仿真器XDS510的设置第二步,仿真器 C5416 XDS510 Emulator的设置第25页共26第三步,设置完成后,退出set up C5000后可自动打开CCS5000,选择Pr oject下的new,新建工程,如图4.5所示;将DspregDefine.h文件添加到工程sinl cd_54下的Include文件中,rts.lib文件添加到Libraries文件中,将程序的命令链 接文件(.CMD),中断向量表(VECTORS.ASM)添加到Source文件下,如图4

32、. 6所示。图4.6新建工程正弦波发生器3inl匚pj t+ 11DebusAC t£ DSF/BIOS Confic GarLdr-ELtad Filas Include 1= I> spRci gD 4 f i na. h Librai-i ea I罰 rtc. libSom-aen?| ddl ay_l OOue . -eleiti I:杓 Hin54. c 園 VECTORS.ASM ucci3_i i . CMD冋口P! - a-ab&ssl - TiPCfrSCDDy5祖Dy处呃 Ls -blh"-c& 5DD>a -A DM刈.Lk

33、 ECaap l axB,- D Ernm. f "Maj-a Lag*. 0 Rmorkii.asGEL filesPr dJsinlcd_51:- pj t. (Debuc)IJ D AparLdAnt Pi_djL3刊t=3图4.7添加文件到工程第四步 对编写完成的程序进行编译,结果如图4.8所示图4.8编译成功.out第五步 汇编无误后就可将程序下载到实验箱中,点击如图所示命令运文件,再点击run即可在实验箱中得到结果Edit Vi ew Project R 也沁哲 ProfNewOpen.CloseCtrl+O(:七 rl+ST?祁Load Progr 8jtb. .Rel

34、oad FrOigramLoad Symbols卜Rel o ad Syuibiols»Ihiload SymbiDls;图4.9下载程序到实验箱正弦波发生器2仿真结果及分析1/C54S Sinautr»»lVCPV C$41)-0 file Idit Viw Eraiiect Eebuc 5EL Qplig Fefile Tools DgF/EIOS lindw Kelp4凶-1JI XeJxb y-uh. p j t硬:仃怖?呼的忖套套警國口圖轲回却(3團fflS国日叵里FB星& Cj GEL ffcloli PrejectzJ5 shi?u. pj

35、t (Debi.J D«pendlent Frojt II jl Do cumiLlsJ DSr/EiaS Config JadJ Include二)LibrKri e3自 *31 Sotirce国 sin. &3R*1 siav. asm匚因 ciiL and.11-羽1 ao:0.333-/0.667:/0500-0 533:0.167;n"ra.167-0 333-0 500:-0.667;/-0.833-/-1 00;、/c>56 9114171336_ '4'51dITineFilfl C: CEStud.Lo_v3 3HyFrojE

36、tiiyinVEi: Ln”::(25S. -.萌磁,Ok.02D0图4.10仿真结果在CCS集成环境中实现正弦波能够起到防止干扰的作用,同时也大大地减 小了波形的线性失真。同时我们也能从中看出 CCS能够精确地对各个角度进行 计算得出相应的正弦值,幅度和频率易于调节,波形也较为稳定,抗干扰能力较 强。最重要的是这种设计方案简单可行,新颖实用,具有很高的实践和推广价值。 分析:通过不断的发现错误、改正错误和调试,最终得到了所希望的图象,即正弦 波信号。正弦波发生器5设计心得为期两周的DSP课程设计已进入尾声了,在这两周的时间里,我认认真真 地复习了 DSP的相关理论知识。由于基础知识学得不是很

37、扎实,正好利用课程 设计这个机会,对没有掌握好的知识进行一个补习。在刚开始的时候,我首先从最简单的程序开始着手,首先看懂程序是什么意 思,在尝试在这个基础上对程序进行修改 ,看程序是否出错,或者说实验的结 果会有什么样的改变。用这种方法是自己尽快的熟悉这个系统的编程的方式。本次课程设计中遇到一些课堂中从未有过的问题,通过网络查找和同学交 流,大大促进了设计进程。并在过程中进一步提高自身的创作、创新水平,扎实 基础,扩展所学。并且此次课程设计,基于课程理论知识和网上资料,使我对数 字信号处理课程有了更深一步的了解和掌握,对利用CCS软件编程的数字信号处理方法有了进一步的了解。在理论课的基础上进行

38、实验实习,是对本门课程的 深入学习和掌握,在以后的工作学习中,数字信号的处理都是采用计算机仿真的 方法进行测试,因此,掌握基于计算机的数字信号处理方法对以后的工作和学习 有很大的帮助。这样一个课程设计对我们的发展有着极大的帮助!由于基础知识不够扎实,在本次课程设计的过程中,我经常遇到各种难题, 比如说程序看不懂,调试时显示结果与预期不一致等等。 而每当我遇到困难的时 候,老师总会给予我耐心的教导,帮助我发现问题,纠正错误;同学也会很热情 的帮助我修改和完善设计方案。在这样一个良好的环境下,我顺利地完成了本次 DSP课程设计,让我发现了自己所学知识的盲点和漏洞,提升了我的动手能力, 通过实验我基

39、本了解了 DSP应用系统开发方法和设计过程,掌握了汇编源程序 的编辑、汇编和链接过程,熟悉了 CCS集成开发环境,CCS的安装及设置,CCS 集成开发环境,CCS的基本使用,调试应用程序。我成功通过CCS软件应用C54X 汇编语言实现了正弦信号发生装置,这次实验使我能够更真实地体会到DSP的功能和用途。特在此对给予我帮助的老师和同学们表示衷心的感谢!正弦波发生器参考文献1 邹彦.DSP原理及应用M.北京:电子工业出版社,2005,1.2 戴明桢.TMS320C54XDSP结构.原理及应用M.北京航空航天大学出版3 胡圣尧.DSP原理及应用M.东南大学出版社,2008.7.4 清源科技.TMS3

40、20C54XDSP应用程序设计教程M.机械工业出版社,2004,1 清源科技.TMS320C54X硬件开发教程M.机械工业出版社,2003,1.兔歹揑/乂摻正弦波发生器附录设计程序主程序清单:.title"si n.asm";为汇编文件取名为 “ si n.asm.mmregs;定义存储器映像寄存器.def _c_in tOO.refsinx,d_xs,d_sinx,cosx,d_xc,d_cosx 定义标号sin_x:.usect"sin_x",360;为"sin_x"保留360个存储空间STACK:.usect"STAC

41、K",10;为堆栈保留10个存储空间k_theta.set286;theta=pi/360(0.5deg)PAO.set0_c_in tOO.text;定义文本程序代码段STM#STACK+10,SP ;设置堆栈指针STMk_theta,ARO;ARO->K_theta(increment)STM0,AR1;(AR1)=X(rad)STM#sin_x,AR6;AR6- - >sin(x)STM#90,BRC;form sinO(deg.)sin90(deg);重复执行块语句(下条语句开始至loop1-1 )91次RPTBloop1-1LDMAR1,ALD#d_xs,DP;

42、DPd_xsSTLA,d_xs;(A)低 16 位d_xsSTLA,d_xc;(A)低 16 位d_xcCALLsi nx;调用sinx程序CALLcosx;调用conx程序LD#d_si nx,DP;DP d_si nxLDd_si nx,16,A;A=si n(x)第#页共26正弦波发生器2歹乳7 乂摻正弦波发生器MPYAd_cosx;B= sin(x)*cos(x)STHB,1,*AR6+;AR6- - >2*sin(x)*cos(x)MAR*AR1+0;修改辅助寄存器AR1loopl:STM#sin_x+89,AR7; sin91(deg.)-sin 179(deg.)STM#8

43、8,BRC;重复执行下条指令至loop2-1RPTBloop2-1;处90次LD*AR7-,A;(AR7) - A,然后 AR7 减去 1STLA,*AR6+;(A)低 16 位AR6Ioop2:STM#179,BRC;sin 180(deg.)- -sin359(deg.);(BRC)=179,重复执行180次STM#sin_x,AR7;AR7指向sin_x首地址RPTBloop3-1LD*AR7+,A;(AR7) -A,然后 AR7 力卩 1NEGA;累加器变负STLA,*AR6+;A 低 16 位AR6Ioop3:STM#sin_x,AR6;gen erate sin wave AR6指

44、向 sin_xSTM#1,AR0;AR 01STM#360,BK;BK 360Ioop4:PORTW*AR6+0%,PA0; PA0=*AR6+0%,向 PA0 输出数据Bloop47sinx:.defd_xs,d_si nx; 疋义标号 d_xs,d_sinx.data;定义数据代码段table_s.word01c7h;c1=1/(8*9).word030bh;c仁 1/(6*7).word0666h;c仁 1/(4*5).word1556h;c仁 1/(2*3)d_coef_s.usect"coef_s",4;为"coef_s"保留4个存储空间d_x

45、s.usect"sin_vars",1;为d_xs中sin_vars保留1个存储空间第29页共26d_squr_xs.usect"sin_vars",1 ;为d_squr_xs中sin_vars保留1个存储空间d_temp_s.usect"sin_vars",1;为d_temp_s中sin_vars保留1个存储空间d_si nx.usect"sin_vars",1;为d_sinx中sin_vars保留1个存储空间c_l_s.usect"sin_vars",1;为d_xs中sin_vars保留1个

46、存储空间.text;定义代码开始段SSBXFRCT;设置FRCT-1以解决冗余符号位STM#d_coef_s,AR5; AR5 指向 d_coef_s首地址RPT#3;重复下条指令4次MVPD#table_s,*AR5+;table_s中的数复制到AR5指向的单元STM#d_coef_s,AR3; AR3 指向 d_coef_s首地址STM#d_xs,AR2;AR2指向d_xs首地址STM#c_l_s,AR4;AR4指向c_l_s首地址ST#7FFFh,c_l_s;7FFFh c_l_sSQUR*AR2+,A;AR2指向累加器A中的数值求其平方STA,*AR2;(A)左移 16 位AR2|LD

47、*AR4,B;(AR4)左移 16 位BMASR*AR2+,*AR3+,B,A;从累加器 A 中减去(AR2 )*( AR3)MPYAA;操作数与累加器A中高位相乘STHA,*AR2;(A )高 16 位AR2MASR*AR2-,*AR3+,B,A;从累加器 A 中减去(AR2 )*( AR3)MPYA*AR2+;AR2指向的数与累加器A的高16位相乘STB,*AR2;(B)左移 16 位AR2|LD*AR4,B;(AR4)左移 16 位BMASR*AR2-,*AR3+,B,A;从累加器 A 中减去(AR2 )*( AR3)MPYA*AR2+;与累加器A中高16位相乘STB,*AR2;(B)左

48、移 16 位AR2|LD*AR4,B;(AR4 )左移 16 位BMASR*AR2-,*AR3+,B,A;从累加器 A中减去(AR2) * (AR3)MPYAd_xs; d_xs指向的操作数与累加器 A中高16位相乘X#正弦波发生器STHB,d_si nx;(B )高 16 位d_sinxRET;返回COSX:.defd_xc,d_cosx;疋义标号 d_xc,d_cosxd_coef_c.usect"coef_c",4;为coef_c保留4个存储空间.data;定义数据代码段table_c.word0249h;c仁 1/(7*8).word0444h;c2=1/(6*5).wordOaabh;c3=1/(3*4).word4000h;c4=1/2d_xc.usect"cos_vars",1;为d_xc中cos_vars保存1个存储单元d_squr_xc.usect"cos_vars",1;为 d_squr_xc中cos_vars保存1个存储单元d_temp_c.usect"cos_vars",1 ;为

温馨提示

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

评论

0/150

提交评论