广东石油化工学院
DSP综合实验报告
课程名称:DSP系统开发与设计 实验题目:函数信号发生器 学号: 姓名: 班级: 指导老师:
实验日期:2012-6-11至2012-6-15
基于TMS320C54xDSP的函数发生器的设计
一、 设计目的:
1、 了解数字波形产生的原理;
2、 学习用DSP产生各种波形的基本方法和步骤; 3、 掌握DSP与D/A转换器接口的使用。
二、 设计设备
计算机、DSP仿真器、ZYE1801B实验箱、20M示波器
三、 设计原理
波形产生是DSP的重要应用之一。而正弦信号发生器的设计则是波形产生应用的一个重要方面,它在通信领域有着广泛的应用。
通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法。
查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。
泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。
本次主要用泰勒级数展开法来实现正弦波信号。 产生正弦波的算法
正弦函数和余弦函数可以展开成泰勒级数,其表达式:
取泰勒级数的前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。
为了减少使用的存储器,可以采用正弦信号的对称性,复制90~180度的正弦值和180~360度的正弦值。
余弦信号的产生同样可以采用多种方法产生。一是采用公式计算得到,二是采用正弦信号变换得到。 方波信号产生可以通过轮流输出两个不同大小的数值通过A/D转换得到。
四、 设计内容
本设计题目以TMS320C54xDSP为目标器件,设计并实现基于迭代法的“正弦序列生成”算法及其DSP程序。 设计步骤:
1、 熟悉正弦信号发生器的算法以及在DSP系统的实现 2、 熟悉A/D转换的原理及实验箱的链接 3、 掌握A/D转换的程序的编写 4、 编写DSP的正弦信号发生器的程序
5、 编写定时程序产生100HZ、1KHZ、10KHZ的正弦、余弦以及100K、1M的方波信号,每种类型的
波形单周期360个点。
6、 编写按键程序,控制输出。用三个拨码开关对DSP进行输入,输入的0~7对应的8种不同的波形。 7、 用示波器观察各个波形 8、 分析波形失真的原因。
五、 实验步骤
1.熟悉本实验原理。 2.阅读本实验样例程序。
3.依次连接主板上的PC10、PC11、TP32到PC15、PC16、GND;依次连接主板上的PC13、PC14、
M58到插板上的DJ0、DJ1、S12。
4.将计算机与ZYE1801C实验箱通过并口P1相连。
5.运行CCS软件客户软件\\DSP程序\\test19,通过插板上的JP1,JP2,JP3来选择不同的波形。 6.用示波器观察DA0的输出波形。
六、设计的硬件结构框图
3位数字量输入12位数字量输出模拟量输出 七、 实验代码 DSP芯片 D/A转换器 先计算0~45°(间隔为0.5°)的sin和cos值,在利用sin2a=2sina*cosa求出sin值(间隔为1°)。然后,通过复制,获得0~359°的正弦值。重复向PA口输出,便可得到正弦波。.title \.mmregs .globalmain .defstart
.refd_xs,d_sinx,d_xc,d_cosx,sinx,cosx sin_x:.usect cos_x:.usect
\\
fangbo:.usect \STACK:.usect \k_theta:.set286 TIM0.set0024H PRD0.set0025H TCR0.set0026H PA.set0100H .text
start:;产生正弦波数据 STM
k_theta,AR0
STM#0,AR1 STM#sin_x,AR6 STM#90,BRC RPTBloop1-1 LDMAR1,A LD#d_xs,DP STLA,@d_xs STLA,@d_xc CALLsinx CALLcosx LD#d_sinx,DP LD@d_sinx,16,A MPYA@d_cosx STHB,1,*AR6+ MAR*AR1+0
loop1:STM#sin_x+89,AR7