DSP课程设计正弦信号发生器的设计.docx

上传人:b****6 文档编号:8875798 上传时间:2023-05-15 格式:DOCX 页数:15 大小:31.08KB
下载 相关 举报
DSP课程设计正弦信号发生器的设计.docx_第1页
第1页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第2页
第2页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第3页
第3页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第4页
第4页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第5页
第5页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第6页
第6页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第7页
第7页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第8页
第8页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第9页
第9页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第10页
第10页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第11页
第11页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第12页
第12页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第13页
第13页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第14页
第14页 / 共15页
DSP课程设计正弦信号发生器的设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DSP课程设计正弦信号发生器的设计.docx

《DSP课程设计正弦信号发生器的设计.docx》由会员分享,可在线阅读,更多相关《DSP课程设计正弦信号发生器的设计.docx(15页珍藏版)》请在冰点文库上搜索。

DSP课程设计正弦信号发生器的设计.docx

DSP课程设计正弦信号发生器的设计

太原理工大学

DSP课程设计:

正弦信号发生器的设计

号:

级:

名:

学号:

班级:

姓名:

指导教师:

一、设计目的

1、通过实验掌握DSP的软件开发过程

2、学会运用汇编语言进行程序设计

3、学会用CCS仿真模拟DSP芯片,通过CCS软件平台上应用C54X汇编语言来实现正弦信号发生装置。

设计原理

本实验产生正弦波的方法是泰勒级数展开法。

泰勒级数展开法需要的单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。

求一个角度的正弦值取泰勒级数的前5项,得近似计算式:

三、总体方案设计

本实验是基于CCS开发环境的。

CCS是TI公司推出的为开发TMS32係列DSP软件的集成开发环境,是目前使用最为广泛的DSP开发软件之一。

它提供了环境配置、源文件

编译、编译连接、程序调试、跟踪分析等环节,并把软、硬件开发工具集成在一起,使程序的编写、汇编、程序的软硬件仿真和调试等开发工作在统一的环境中进行,从而加速软件开发进程。

通过CCS软件平台上应用C54X汇编语言来实现正弦信号发生装置。

总体思想是:

正弦波的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器处理大量重复计算的优势来计算x轴每一点对应的y的值(在x轴取N个点进行逼近)。

整个系统软件由主程序和基于泰勒展开法的SIN子程序组成,相应的软件流程图如图。

四、设计内容

1、设置

在Family下选择C55xx,将看到所有C55xx的仿真驱动,包括软件仿真和硬件仿真;在Platform下选择Simulator,在AvailableFactoryBoards中只显示软件仿真驱动,选中相应的驱动;

双击C55xxCPUFunctionalSimulator,可以在MySystem下看到所加入的驱动;点击Save&Quit,将保存设置退出SetupCCStudio并启动运行CCStudio。

2、编写汇编源程序sin。

3.、建立汇编源程序

在CCS环境下,点击file/new/sourcefile菜单命令,打开一个空白文档,将汇编程序输入。

单击file/save菜单命令,在D:

\programfiles\ti\myprojects下保存文件名为sin,并选择保存类型为*.asm。

4、建立链接命令文件。

5、创建新的工程文件

启动CCS在Project菜单中选择New项,在Project中输入denglin,CCS将创建一个名为的工程。

6、将文件添加到工程中

在工程中添加源文件,执行菜单project/addfilestoproject,把sin文件添加到工

程中。

7、生成和运行程序

(1)选择菜单命令Project-RebuildAll,对工程重新编译、汇编和链接,主窗口下方的信息窗口将显示build进行汇编、编译和链接的相关信息。

(2)选择菜单命令File—LoadProgram,在当前目录的Debug目录下选择sin并打开,将Build生成的程序加载到DSP中。

(3)选择菜单命令DebugsRun或在Debug工具栏上单击Run按钮,运行该程序。

8、观察运行结果

点击view/gragh菜单命令观看图像

五、主要参数

六、源程序汇编源程序sin

.mmregs

.defstart

.defd_xs,d_sinx,d_xc,d_cosx,sinx,cosx

sin_x:

.usect"sin_x",360

STACK:

.usect"STACK",10H

k_theta

.set286;theta=pi/360

start:

.text

STM#STACK+10H,SP

STMk_theta,AR0

STM0,AR1

STM#sin_x,AR6

STM#90,BRC

RPTBloop1-1

LDMAR1,A

LD#d_xs,DP

STLA,@d_xs

STLA,@d_xc

CALLsinx;d_sinx=sin(x)

CALLcosx;d_cosx=cos(x)

LD#d_sinx,DP

LD@d_sinx,16,A;A=sin(x)

MPYA@d_cosx;B=sin(x)*cos(x)

STHB,1,*AR6+;AR62*sin(x)

MAR*AR1+0

loop1:

STM#sin_x+89,AR7;sin91(deg.)-sin179(deg.)

STM#88,BRC

RPTBloop2-1

LD*AR7-,A

STLA,*AR6+

loop2:

STM#179,BRC;sin180(deg.)-sin359(deg.)

STM#sin_x,AR7

RPTBloop3-1

LD*AR7+,A

NEGA

STLA,*AR6+

 

loop3:

STM#sin_x,AR6

;generatesinwave

 

 

STM#1,AR0

STM#360,BK

Bloop3

sinx:

.defd_xs,d_sinx

.data

table_s.word01C7H

;C1=1/(8*9)

.word030BH

;C2=1/(6*7)

.word0666H

;C3=1/(4*5)

.word1556H

;C4=1/(2*3)

d_coef_s.usect"coef_s",4

d_xs.usect"sin_vars",1d_squr_xs.usect"sin_vars",1d_temp_s.usect"sin_vars",1d_sinx.usect"sin_vars",1

d_l_s.usect"sin_vars",1

.text

SSBXFRCT

STM#d_coef_s,AR5;movecoeffstable_s

RPT#3

MVPD#table_s,*AR5+

STM#d_coef_s,AR3

STM#d_xs,AR2

STM#d_l_s,AR4

ST#7FFFH,d_l_s

SQUR*AR2+,A

;A=xA2

STA,*AR2

;(AR2)=xA2

||LD*AR4,B

;B=1

MASR*AR2+,*AR3+,

B,A;A=1-xA2/72,T=xA2

MPYAA

;A=T*A=xA2(1-xA2/72)

STH

A,*AR2;(d_temp)=xA2(1-xA2/72)

*AR2+

MASR

*AR2-,*AR3+,B,A

;A=1-xA2/42(1-xA2/72);T=xA2(1-xA2/72)

MPYA

;B=xA2(1-xA2/42(1-xA2/72))

ST

B,*AR2;(d_temp)=xA2(1-xA2/42(1-xA2/72))

||LD*AR4,B;B=1

MASR

*AR2-,*AR3+,B,A

;A=1-xA2/20(1-xA2/42(1-xA2/72))

MPYA

*AR2+;B=xA2(1-xA2/20(1-xA2/42(1-xA2/72)))

*AR2-,*AR3+,B,A;A=1-xA2/6(1-xA2/20(1-xA2/42(1-xA2/72))

MPYA

d_xs;B=x(1-xA2/6(1-xA2/20(1-xA2/42(1-xA2/72))

))

STHB,d_sinx;sin(theta)

RET

cosx:

.defd_xc,d_cosx

d_coef_c.usect"coef_c",4

.data

table_c.word0249H;C1=1/(7*8)

.word4000H;C4=1/2

d_xc.usect"cos_vars",1d_squr_xc.usect"cos_vars",1d_temp_c.usect"cos_vars",1d_cosx.usect"cos_vars",1c_l_c.usect"cos_vars",1

.text

SSBXFRCT

STM#d_coef_c,AR5;movecoeffstable_c

RPT#3

MVPD#table_c,*AR5+

STM#d_coef_c,AR3

STM#d_xc,AR2

STM#c_l_c,AR4

ST#7FFFH,c_l_c

SQUR*AR2+,A;A=xA2

STA,*AR2;(AR2)=xA2

||LD*AR4,B;B=1

1-xA2/56)

MASR*AR2+,*AR3+,B,A;A=1-xA2/56,T=xA2

MPYAA;A=T*A=xA2

STH

A,*AR2;(d_temp)=xA2(1-xA2/56)

MASR*AR2-,*AR3+,B,A鬥=1咲八2/30(1叹八2/56);

T=xA2(1-xA2/56)

MPYA

*AR2+;B=xA2(1-xA2/30(1-xA2/56))

ST

B,*AR2;(d_temp)=xA2(1-xA2/30(1-xA2/56))

||LD*AR4,B;B=1

MASR

*AR2-,*AR3+,B,A;A=1-xA2/12(1-xA2/30(1-xA2/56))

SFTAA,-1,A;-1/2

NEGA

MPYA

*AR2+;B=-xA2/2(1-xA2/12(1-xA2/30(1-xA2/56)))

MAR*AR2+

RETD

ADD

*AR4,16,B;B=-xA2/2(1-xA2/12(1-xA2/30(1-xA2/56)))

STHB,*AR2;cos(theta)

RET

.end.mmregs.defstart

.defd_xs,d_sinx,d_xc,d_cosx,sinx,cosxsin_x:

.usect"sin_x",360STACK:

.usect"STACK",10Hk_theta.set286;theta=pi/360start:

.text

STM#STACK+10H,SP

STMk_theta,AR0

STM0,AR1

STM#sin_x,AR6

STM#90,BRC

RPTBloop1-1

LDMAR1,A

LD#d_xs,DP

STLA,@d_xs

STLA,@d_xc

CALLsinx;d_sinx=sin(x)

CALLcosx;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+

;AR62*sin(x)

MAR*AR1+0

STM#sin_x+89,AR7;sin91(deg.)-sin179(deg.)

loop1:

STM#88,BRC

RPTBloop2-1LD*AR7-,A

STLA,*AR6+

loop2:

STM#179,BRC

STM#sin_x,AR7

RPTBloop3-1LD*AR7+,ANEGA

STLA,*AR6+loop3:

STM#sin_x,AR6

STM#1,AR0

STM#360,BK

Bloop3

sinx:

.defd_xs,d_sinx

.data

table_s.word01C7H.word030BH

;sin180(deg.)-sin359(deg.)

;generatesinwave

;C1=1/(8*9)

;C2=1/(6*7)

 

d_coef_s.usect"coef_s",4d_xs.usect"sin_vars",1d_squr_xs.usect"sin_vars",1d_temp_s.usect"sin_vars",1d_sinx.usect"sin_vars",1

d_l_s.usect"sin_vars",1

.text

SSBXFRCT

STM#d_coef_s,AR5;movecoeffstable_sRPT#3

MVPD#table_s,*AR5+

STM#d_coef_s,AR3

STM#d_xs,AR2

STM#d_l_s,AR4

ST#7FFFH,d_l_s

SQUR*AR2+,A;A=xA2

STA,*AR2;(AR2)=xA2

||LD*AR4,B;B=1

MASR*AR2+,*AR3+,B,A;A=1-xA2/72,T=xA2

MPYAA;A=T*A=xA2(1-xA2/72)

STH

A,*AR2;(d_temp)=xA2(1-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))

ST

B,*AR2;(d_temp)=xA2(1-xA2/42(1-xA2/72))

||LD*AR4,B;B=1

MASR

*AR2-,*AR3+,B,A;A=1-xA2/20(1-xA2/42(1-xA2/72))

MPYA

*AR2+;B=xA2(1-xA2/20(1-xA2/42(1-xA2/72)))

*AR2-,*AR3+,B,A;A=1-xA2/6(1-xA2/20(1-xA2/42(1-xA2/72))

MPYA

d_xs;B=x(1-xA2/6(1-xA2/20(1-xA2/42(1-xA2/72))

))

STHB,d_sinx;sin(theta)

RET

cosx:

.defd_xc,d_cosx

d_coef_c.

sect"coef_c",4

.data

table_c.word0249H

;C1=1/(7*8)

.word

0444H

;C2=1/(5*6)

.word

0AABH

;C3=1/(3*4)

.word

4000H

;C4=1/2

d_xc.usect"cos_vars",1

d_squr_xc.usect"cos_vars",1

d_temp_c.usect"cos_vars",1

d_cosx.usect"cos_vars",1

c_l_c.usect"cos_vars",1

.text

SSBXFRCT

STM#d_coef_c,AR5;movecoeffstable_c

RPT#3

MVPD#table_c,*AR5+

STM#d_coef_c,AR3

STM#d_xc,AR2

STM#c_l_c,AR4

ST#7FFFH,c_l_c

SQUR*AR2+,A;A=xA2

STA,*AR2;(AR2)=xA2

||LD*AR4,B;B=1

1-xA2/56)

MASR*AR2+,*AR3+,B,A;A=1-xA2/56,T=xA2

MPYAA;A=T*A=xA2

STH

A,*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/30(1-xA2/56))

ST

B,*AR2;(d_temp)=xA2(1-xA2/30(1-xA2/56))

||LD*AR4,B;B=1

MASR

*AR2-,*AR3+,B,A;A=1-xA2/12(1-xA2/30(1-xA2/56))

SFTAA,-1,A;-1/2

NEGA

MPYA

*AR2+;B=-xA2/2(1-xA2/12(1-xA2/30(1-xA2/56)))

MAR*AR2+

RETD

ADD

*AR4,16,B;B=-xA2/2(1-xA2/12(1-xA2/30(1-xA2/56)))

STHB,*AR2;cos(theta)

RET

链接命令文件

MEMORY

{

PAGE0:

EPROM:

org=0E000H,len=1000H

VECS:

org=0FF80H,len=0080H

PAGE1:

SPRAM:

org=0060H,len=0020H

DARAM1:

org=0080H,len=0010H

DARAM2:

org=0090H,len=0010H

DARAM3:

org=0200H,len=0200H

}

SECTIONS

{

.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

STACK:

>SPRAMPAGE1

coef_s:

>DARAM1PAGE1

cos_vars:

>DARAM2PAGE1

coef_c:

>DARAM2PAGE1

sin_x:

align(512){}>DARAM3PAGE1

.vectors:

>VECSPAGE0}

七、实验结果及分析

结果成功生成了正弦波图像,表明改程序能通过TMS320C54)产生正弦信号

八、设计总结这次实验通过与小组的探讨研究使我对这门学科的基本知识、理论解起来更加方便直观和深刻。

我同时明白了,做实验不是一味的砖牛角,而是需要相互探讨研究充分发挥团队力量才可在最短时间做出结果。

通过实验我基本了解了DSPS用系统开发方法和设计过程,掌握了汇编源程序的编辑、汇编和链接过程,熟悉了CCS集成开发环境,CCS的安装及设置,CCS集成开发环境,CCS的基本使用,调试应用程序。

我成功通过CCS软件应用C54X汇编语言实现了正弦信号发生装置,这次实验使我能够更真实地体会到DSP的功能和用途。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2