《Dsp-based Sine Wave 课程设计报告》会员分享,可在线阅读。更多《基于DSP的正弦波发生器课程设计报告(24页珍藏版)》请在人人文库在线搜索。
1.第一章引言DSP引言数字信号处理(ing,简称DSP)是一门学科门类多、应用广泛的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并迅速发展。数字信号处理是一种处理由数字序列表示的现实世界信号的方法,通过使用数学技巧来执行转换或提取信息。在过去的二十年里,信号处理在通信等领域得到了广泛的应用。图 1 是数字信号处理系统的简化框图。该系统首先将模拟信号转换为数字信号,数字信号经过处理后,再转换为模拟信号输出。
2,. 随后,该信号经过采样和A/D转换后成为数字信号x(n)。数字信号处理器继续处理x(n)以获得输出数字信号y(n),其由D/A转换器转换成模拟信号。该信号通过低通滤波器滤除不需要的高频成分,最后输出平滑的模拟信号 y(t)o 图 1.1 数字信号处理系统的简化框图 数字信号处理基于许多学科。涉及的范围极其广泛。例如,在数学领域,微积分、概率统计、随机过程、数值分析等是数字信号处理的基本工具正弦波信号发生器的设计,与网络理论、信号与系统、控制论、通信理论、故障诊断等密切相关, ETC。最近一些新兴学科,如人工智能、模式识别、神经网络等,都离不开数字信号处理。可以说,数字信号处理以众多经典理论体系为理论基础,
3、同时成为一系列新兴学科的理论基础。课题研究的目的和意义科学技术的进步带动了DSP技术的发展,现代控制设备的性能和结构发生了巨大的变化。我们已经进入高速发展的信息时代,DSP技术也成为当今技术的主流之一。广泛应用于各个生产领域。对于本次设计正弦波信号发生器的设计,其目的是了解DSP和DSP控制器的发展过程和特点。(2)较熟练地掌握DSP的结构和DSP硬件器件,以及硬件上各组成部分的基本工作原理。(3)熟悉CCS集成开发环境,并能熟练使用CCS开发系统。(4) 熟悉用C语言和汇编语言编写DSP源程序 (5) 学习DSP程序的调试和编写,用观察变量的方法检查程序的运行情况。(6)掌握工程设计的过程和方法。
4、1.3正弦信号发生器研究中采用的汇编语言编程,极大地方便了程序的编写和调试,加快了程序的运行速度。第二章总体方案分析与设计 2.1总体方案设计。本设计基于DSP的特点,采用一系列DSP作为正弦信号发生器的核心控制芯片。. 用泰勒级数展开法实现正弦波信号。.设置波形的时域观察窗口,获取滤波前后的波形变化图;.设置频域观察窗口,得到滤波前后的频谱变化图。.2 正弦波信号发生器 正弦波信号发生器已广泛应用于通信领域的信号处理系统,仪器仪表和工业控制。通常有两种产生正弦波的方法,即查表法和泰勒级数展开法。查表法是通过查表法实现正弦波,主要用于校验精度
5、要求不高的场合。泰勒级数展开法实现了正弦信号基于泰勒展开的递进计算,可以准确计算出一个角度的正余弦值,而且只需要很小的存储空间。本次主要采用泰勒级数展开法来实现正弦波信号。产生正弦波的正余弦函数可以展开为泰勒级数,表达式:sin(x)3!5!7!9!cos(x)2x2!4x4!6x6!8x8!以泰勒级数为首5项,得到一个近似的计算公式:sin(x)x-3!x(15!2x /one(12 37!9!2x-(14 52x /one(16 72W)cos(x) 1124x x6 x8 x2 !4!6!8!2x7 8) 递推公式:sin(nx)=2cosx)sin(n-1)x-sin(n-2)xcos(
6. nx)=2cosx)sin(n-1)x-cosn-2)x 从递归公式可以看出,在计算正余弦值时,cos(x), sin(n-1)x, sin(n-2)x 和 cosn-2)x。.3 总体方案设计。基于DSP的特点,本设计采用U系列的DSP作为正弦信号发生器的核心控制芯片。. 用泰勒级数展开法实现正弦波信号。.设置波形的时域观察窗口,获取滤波前后的波形变化图;.设置频域观察窗口,得到滤波前后的频谱变化图。第三章硬件设计硬件组成基于DSP 的信号发生器的硬件结构图如图3.1 所示。它主要由DSP主控制器、输出D/A通道和人机界面。图 3.1 基于 DSP 的信号发生器系统控制框图
七、器件部分本系统采用TI公司的处理器。该设备具有外设集成度高、程序存储容量大、A/D转换精度高、运算速度快、I/O口资源丰富等特点。芯片部分集成了32KB FLASH程序存储器、2KB数据/程序RAM、两个事件管理器模块EVE和EVB、16通道A/D转换器、看门狗定时器模块、16位串行外设接口SPI模块、40个可编程或多路复用通用输入输出引脚GPIO和5个外部中断和系统监控模块。芯片中的事件管理模块EV是一个非常重要的部分。SPWM波形的产生和输出由这部分完成,它由两个相同的模块EVA和EVB组成,每个模块包含两个通用的
8、定时器、3个比较器、6~8个PWM发生器、3个捕捉单元和2个正交脉冲编码电路QEP。因为双口有544字,单口有2K字;而本系统的程序只有几KB,使用的RAM也不多,所以不需要考虑内存的扩展,而对于设备的I/O扩展,因为设备有 Up to 40个通用、双向数字I/O GPIO管脚,其大部分基本功能和通用I/O复用管脚,但实际上这个系统只需要17个I/O信号,这样就可以留出超过50%的I/O资源给系统使用,可以说这种方案不浪费系统资源,也为以后的系统升级留有余地。微型输出 D/A 通道是系统的一部分
9、输出通道部分,主要负责波形的输出。该通道入口为PWM8口,可输出SPWM等幅脉冲波形,出口为系统输出端。这样,经过一系列的中间环节,就可以将输出的PWM脉冲波转换成交流正弦波,从而实现正弦波的输出,其功能框图如图3.2所示。图 3.2 输出通道原理结构 图 3.2 中缓冲电路的作用是对 PWM 口的数字输出进行缓冲,并将电压拉高至 5V 左右,供后续模拟电路滤波。该部分电路由两个芯片组成。一件使用三态缓冲器。由于PWM口输出的是3.3V的TTL电平,这样,设计时应选择TTL输入为5V,输出电平为CMOS的转换芯片,如TI的;另一块然后选择TOS
10、HIBA公司生产的光电耦合器6N137;输出端连接的5V微调电源可选用BURR-BROWN公司生产的REF02微调电源输出标准5V电压。减法电路在系统中的主要作用是将0-10V的直流脉动信号转换为-5+5V的正弦交流信号,并使其电压增益为1。本设计采用差分电路实现其功能. 为了简化AD公司通常使用的AD524,可以选择AD524,并且可以将AD524作为电压跟随器连接,并且可以正确选择电阻以满足要求。产生的正弦波信号具有2-5mA的驱动能力,可选用AD624组成末级信号放大电路。AD624是一款高精度、低噪声的仪表放大器。假设连接了一个外部增益电阻,可以获得 1 到 1000 之间的任何增益。
11、增益值,误差小于1%。由于AD624的建立时间只有15步,非常适合在高速数据采集系统中使用。人机界面本地驱动设计 位驱动电路由两块集成电路组成,即位驱动CMOS芯片和将TTL电平转换为CMOS电平的电平转换芯片。平板转换芯片共用一块本地使用4通道,输出通道使用3通道。其主要作用是将DSP输出的3.3VTTL电平与电平进行匹配,从而以CMOS电平驱动位驱动器。根据动态扫描显示要求,位驱动需要选择每路输出和灌电流大于200mA的芯片。因此,本设计选用TI的LED大电流驱动器件。
12、用四个独立按键分别接PF3-PF6端口,用四个220Q上拉电阻接VCC。所谓独立式就是每个独立的按键直接一一接在I/O输入线上,读取按键值时直接读取I/O口,通过读取每个按键的状态键值的一部分。位二进制位来响应,所以这种方法也叫一维直读法。这种方法的密钥校验软件比较简单,但占用的I/O线较多。一般在键数较少的时候使用。但是,由于DSP芯片有足够的I/O接口可用,可以大大方便设计。在设计时可以充分利用这一特性来连接硬件。至于减少按键震动的措施,它可以在软件中完成。第四章软件设计 4.1 流程图 系统软件可以按照模块化设计的思想编写,包括主程序、常数计算程序、占空比计算程序和一些相应的功能子程序。
13.程序,主程序用于调用各种功能子程序,初始化变量,查询键盘,判断显示数据是否需要刷新,判断是否有脉冲发送等,具体方案见流程图如图4.1所示。20MHz的晶振,程序中要在N-1个脉冲周期计算占空比,在N个脉冲周期输出波形,这就要求设计时要在一个脉冲周期内完成计算,如果选择哪一个?在倍频下,执行一次只需要50ns。假设输出一个400Hz的正弦波,即每个2.5m的周期需要产生200个脉冲。这样,也就是说,一个脉冲需要12.5s。执行 2500/50=250 条指令。然而,执行一个占空比计算程序只需要几十条指令,在软件开销方面可以实现该算法。4.2 正弦信号发生器程序清单;Th
14. ;sin(theta)=x(1-xA2/2*3(1-xA2/4*5(1-xA2/6*7(1-xA2/8*9));cos(theta)=1- xA2/2*3(1-xA2/4*5(1-xA2/6*7(1-xA2/8*9));sin(2*theta)=2*sin(theta)*cos(theta)。 .asm...,d_xs,,cosx,d_xc,:.,360S
15.大头钉:.,...#STACK+10,,,#sin_x,#90,-,ALD#d_xs,,:STMA,#,,16,,1,*AR6+*AR1+0#sin_x+89 ,:op3:STM
16. ::.def..word.word#88,-1*AR7-,AA,*AR6+#179,BRC#sin_x,-1*AR7+,AAA,*AR6+#sin_x,AR6#1,AR0#360 ,bk*AR6+0%,,,,,,,,1FRCT#,AR5#3#,*AR5+#,AR3#d_xs,AR2
17. #c_l_s,AR4#7FFFh,c_l_s*AR2+,AA,*AR2*AR4,B*AR2+,*AR3+,B,A AA,*AR2*AR2-,*AR3+,B,A*AR2+B,* AR2*AR4,B*AR2-,*AR3+,B,A*AR2+B,*AR2*AR4,B.word....usect.|AST||:d_coe
18. *AR2-,*AR3+,B,,.,.,4.data.......,1.,1.,1.,1.,1.#,#3MVPD#,*AR5+STM# d_c
19.oef_c,#d_xc,#c_l_c,AR4ST#7FFFh,*AR2+,ASTA,*AR2|LD*AR4,BMASR*AR2+,*AR3+,B,,**AR2-,*AR3+,B,AMPYA*AR2+ STB ,*AR2|LD*AR4,BMASR*AR2-,*AR3+,B,,-1,*AR2+MAR*AR2+*AR4,16,BSTHB,*.:EPROM:org=,len=:org=, len =
20. AGE1:SPRAM:org=0060h,len=:org=0080h,len=:org=0090h,len=:org=0200h,len=.text:.data:::::::align(512)。:..asm
21. ..sect..end 第5章系统仿真 5.1 CCS工程调试程序的运行控制 在调试程序的过程中,经常需要进行复位、执行、单步执行等操作。这些操作称为程序运行控制。CCS开发环境为调试程序提供了多种运行操作。用户可以使用调试工具栏或调试菜单“Debug”中的相应命令来控制程序的运行。创建一个项目。进入CCS集成开发环境。创建一个新项目。将源程序文件、命令文件、库文件和头文件复制到工程中。点击所有"+项可以查看项目包含的文件。双击每个图标可以打开每个文件。项目的编译 1. 编译工程并设置检测点。将 .out 文件载入目标板。设置探测点。为了
22、检测点选择的数据文件。设置数据文件的属性。将数据文件发送到检测点。关闭“文件I/O对话框” 工程调试及图形显示结果 设置断点 设置输入变量的图形属性 设置输出变量 5.2 仿真波形图 图5.2 仿真波形图 仿真结果表明由系统稳定,抗干扰能力强,频率和幅度调节方便,精度高。该设计方案简单易行,新颖实用,具有推广价值。第6章总结了课程设计中遇到的一些在课堂上从未出现过的问题。通过网络搜索和与同学的交流,极大地促进了设计的进程。并在这个过程中进一步提高自己的创作创新水平,打好基础,拓展所学。而这个课程设计,基于课程的理论知识和网络资料,让我了解了数字信号处理课程
23、随着理解和掌握的深入,我对用CCS软件编程的数字信号处理方法有了更进一步的认识。在理论课程的基础上进行实验实践,是对本课程的深入学习和掌握。在以后的工作和学习中,数字信号处理都是通过计算机仿真来进行的。因此,掌握基于计算机的数字信号处理方法,对以后的工作和学习会有很大的帮助。这样的课程设计对我们的发展有很大的帮助!最后,这次设计的按时完成,离不开老师们的指导和同学们的帮助,在此向他们表示衷心的感谢。参考文献 1 顾维刚.教你学习基于x281x的DSP 航空航天大学,2011.2 奎峰等。原理和C程序开发。航空航天大学,2008.3 奎峰等.TMS32
24. 原则与发展。电子工业,2005.4万山明./2810原理与应用实例。航空航天大学,2007。TI公司,胡光舒等编着。清华大学DSP CPU与外设系,2005。TI公司,胡光舒等编着。DSP 指令和编程指南系列。清华大学,2005.附录DSP程序代码;名词;sin(θ)=x(1-xA2/2*3(1-xA2/4*5(1-xA2/4*5(1-xA2/6*7(1-xA2/8*9));cos( θ)=1-xA2/2*3
25. (1-xA2/4*5(1-xA2/6*7(1-xA2/8*9); sin(2*theta)=2*sin(theta)*cos(theta) e..asm ...,d_xs,,cosx,d_xc,:.,:.,...#STACK+10,,,#sin_x,#90,-,A
26. LD#d_xs,,,LD#,,16,p1:STMB,1,*AR6+*AR1+0#sin_x+89,:op3:::.def..word.word.word.....使用#88,-1*AR7-,A
27. A,*AR6+#179,BRC#sin_x,-1*AR7+,AAA,*AR6+#sin_x,AR6#1,AR0#360,bk*AR6+0%,,,,,,.,1., 1.|AST||:.
28. T#,AR5#3#,*AR5+#,AR3#d_xs,AR2#c_l_s,AR4#7FFFh,c_l_s*AR2+,AA,*AR2*AR4,B*AR2+,*AR3+,B,AAA,*AR2 *AR2-,*AR3+,B,A*AR2+B,*AR2*AR4,B*AR2-,*AR3+,B,A*AR2+B,*AR2*AR4,B*AR2-,*AR3+,B ,,,,,,,,,1FRCT#
29.,AR5#3#,*AR5+#,AR3#d_xc,AR2#c_l_c,AR4#7FFFh,c_l_c*AR2+,AA,*AR2*AR4,B*AR2+,*AR3+,B,A AA,*AR2* AR2-,*AR3+,B,A*AR2+B,*AR2*AR4,B*AR2-,*AR3+,B,.usect..word.word.word...usect。
30.QURST|AST|,-1,*AR2+MAR*AR2+*AR4,16,BSTHB,*.:EPROM:org=,len=:org=,len=:SPRAM:org=0060h,len=:org =0080h,len=:org=0090h,len=:org=0200h,len=.text:.data:::::align(512).:..asm..sect..end