DSP课程设计 正弦信号发生器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
太原理工大学
DSP课程设计:
正弦信号发生器的设计
学号:
班级:
姓名:
指导教师:
一、设计目的
1、通过实验掌握DSP的软件开发过程
2、学会运用汇编语言进行程序设计
3、学会用CCS仿真模拟DSP芯片,通过CCS软件平台上应用C54X汇编语言来实现正弦信号发生装置。
二、设计原理
本实验产生正弦波的方法是泰勒级数展开法。泰勒级数展开法需要的单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。求一个角度的正弦值取泰勒级数的前5项,得近似计算式:
三、总体方案设计
本实验是基于CCS开发环境的。CCS是TI公司推出的为开发TMS320系列DSP软件的集成开发环境,是目前使用最为广泛的DSP开发软件之一。它提供了环境配置、源文件编译、编译连接、程序调试、跟踪分析等环节,并把软、硬件开发工具集成在一起,使程序的编写、汇编、程序的软硬件仿真和调试等开发工作在统一的环境中进行,从而加速软件开发进程。通过CCS软件平台上应用C54X汇编语言来实现正弦信号发生装置。
总体思想是:正弦波的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器处理大量重复计算的优势来计算x轴每一点对应的y的值(在x轴取N个点进行逼近)。整个系统软件由主程序和基于泰勒展开法的SIN子程序组成,相应的软件流程图如图。
四、设计内容
1、设置
在Family下选择C55xx,将看到所有C55xx的仿真驱动,包括软件仿真和硬件仿真;
在Platform下选择Simulator,在Available Factory Boards中只显示软件仿真驱动,选中相应的驱动;
双击C55xx CPU Functional Simulator,可以在My System下看到所加入的驱动;
点击Save & Quit,将保存设置退出Setup CCStudio 并启动运行CCStudio。
2、编写汇编源程序sin。
3.、建立汇编源程序
在CCS环境下,点击file/new/source file菜单命令,打开一个空白文档,将汇编程序输入。
单击file/save菜单命令,在D:\program files\ti\myprojects下保存文件名为sin,并选择保存类型为*.asm。
4、建立链接命令文件。
5、创建新的工程文件
启动CCS,在Project菜单中选择New项,在Project中输入denglin,CCS将创建一个名为的工程。
6、将文件添加到工程中
在工程中添加源文件,执行菜单project/add files to project,把sin文件添加到工程中。
7、生成和运行程序
(1)选择菜单命令Project→Rebuild All,对工程重新编译、汇编和链接,主窗口下方的信息窗口将显示build进行汇编、编译和链接的相关信息。
(2)选择菜单命令File→Load Program,在当前目录的Debug目录下选择sin并打开,将Build生成的程序加载到DSP中。
(3)选择菜单命令Debug→Run或在Debug工具栏上单击Run按钮,运行该程序。
8、观察运行结果
点击view/gragh菜单命令观看图像
五、主要参数
六、源程序
汇编源程序sin
.mmregs
.def start
.def d_xs,d_sinx,d_xc,d_cosx,sinx,cosx
sin_x: .usect "sin_x",360
STACK: .usect "STACK",10H
k_theta .set 286 ;theta=pi/360
start:
.text
STM #STACK+10H,SP
STM k_theta,AR0
STM 0,AR1
STM #sin_x,AR6
STM #90,BRC
RPTB loop1-1
LDM AR1,A
LD #d_xs,DP
STL A,@d_xs
STL A,@d_xc
CALL sinx ;d_sinx=sin(x)
CALL cosx ;d_cosx=cos(x)
LD #d_sinx,DP
LD @d_sinx,16,A ;A=sin(x)
MPYA @d_cosx ;B=sin(x)*cos(x)
STH B,1,*AR6+ ;AR6----2*sin(x)
MAR *AR1+0
loop1: STM #sin_x+89, AR7 ;sin91(deg.)-sin179(deg.) STM #88,BRC
RPTB loop2-1
LD *AR7-,A
STL A,*AR6+
loop2: STM #179,BRC ;sin180(deg.)-sin359(deg.) STM #sin_x,AR7
RPTB loop3-1
LD *AR7+,A
NEG A
STL A,*AR6+
loop3: STM #sin_x,AR6 ;generate sin wave
STM #1,AR0
STM #360,BK
B loop3
sinx:
.def d_xs,d_sinx
.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_coef_s .usect "coef_s",4
d_xs .usect "sin_vars",1
d_squr_xs .usect "sin_vars",1
d_temp_s .usect "sin_vars",1
d_sinx .usect "sin_vars",1