完整word版基于DSP设计正弦信号发生器.docx

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

完整word版基于DSP设计正弦信号发生器.docx

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

完整word版基于DSP设计正弦信号发生器.docx

完整word版基于DSP设计正弦信号发生器

一.设计目的

设计一个基于DSP的正弦信号发生器

二.设计内容

利用基于CCS开发环境中的C54X汇编语言来实现正弦信号发生装置。

三.设计原理

一般情况,产生正弦波的方法有两种:

查表法和泰勒级数展开法.查表法是使用比较普遍的方法,优点是处理速度快,调频调相容易,精度高,但需要的存储器容量很大.泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。

本文采用了泰勒级数展开法。

一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:

式中:

x为θ的弧度值,x=2πf/fs(fs是采样频率;f是所要发生的信号频率。

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

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

四.设计方案

本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。

通过计算一个角度的正弦值和余弦值程序可实现正弦波,其步骤如下:

1.利用sinx和cosx子程序,计算0°~45°(间隔为0.5°)的正弦和余弦值

2.利用sin(2x)=2sin(x)cos(x)公式,计算0°~90°的正弦值(间隔为1°)

3.通过复制,获得0°~359°的正弦值

4.将0°~359°的正弦值重复从PA口输出,便可得到正弦波

三.软件操作

利用CCS集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节。

1.创建工程(project)文件

选择Project→New,在“Project”文本框中键入将要创建的工程项目名,本例工程项目名为“sin"

2.向工程中添加文件

选择Project→AddFilestoProject,将sine.asm文件自动添加到Project→Source中。

用同样的方法将sine.cmd文件添加到对应的目录中。

3.构建工程,工程所需文件编辑完成后,可以对该工程进行编译链接,产生可执行文件,为调试做准备.

选择Project→Build,系统提示没有出错信息后,系统自动生成一个可执行文件,sine。

out文件。

4.载入可执行文件

选择File→LoadProgram载入编译链接好的可执行文件sine.out

5.运行程序

选择Debug→Run运行,可以通过查看内存表等方法,看到程序运行的结果。

6.观察数据和图形

选择View→Graph→Time/Frequence

调整输出图形参数

 

五.源程序

正弦波源程序sin.asm

title"sin.asm"

mmregs

defstart

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

sin_x:

.usect"sin_x”,360

STACK:

usect"STACK",10

k_theta。

set286

PA0。

set0

start:

.text

STM#STACK+10,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

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

STM#88,BRC

RPTBloop2-1

LD*AR7—,A

STLA,*AR6+

loop2:

STM#179,BRC

STM#sin_x,AR7

RPTBloop3-1

LD*AR7+,A

NEGA

STLA,*AR6+

loop3:

STM#sin_x,AR6

STM#1,AR0

STM#360,BK

loop4:

PORTW*AR6+0%,PA0

Bloop4

sinx:

defd_xs,d_sinx

.data

table_s.word01C7H

word030BH

.word0666H

word1556H

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

d_1_s.usect"sin_vars”,1

text

SSBXFRCT

STM#d_coef_s,AR5

RPT#3

MVPD#table_s,*AR5+

STM#d_coef_s,AR3

STM#d_xs,AR2

STM#d_1_s,AR4

ST#7FFFH,d_1_s

SQUR*AR2+,A

STA,*AR2

||LD*AR4,B

MASR*AR2+,*AR3+,B,A

MPYAA

STHA,*AR2

MASR*AR2—,*AR3+,B,A

MPYA*AR2+

StB,*AR2

||LD*AR4,B

MASR*AR2—,*AR3+,B,A

MPYA*AR2+

STB,*AR2

||LD*AR4,B

MASR*AR2-,*AR3+,B,A

MPYAd_xs

STHB,d_sinx

RET

cosx:

.defd_xc,d_cosx

d_coef_c。

usect”coef_c”,4

.data

table_c。

word0249H

.word0444H

word0AABH

word4000H

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_1_c。

usect”cos_vars",1

.text

SSBXFRCT

STM#d_coef_c,AR5

RPT#3

MVPD#table_c,*AR5+

STM#d_coef_c,AR3

STM#d_xc,AR2

STM#c_1_c,AR4

ST#7FFFH,c_1_c

SQUR*AR2+,A

STA,*AR2

||LD*AR4,B

MASR*AR2+,*AR3+,B,A

MPYAA

STHA,*AR2

MASR*AR2—,*AR3+,B,A

MPYA*AR2+

STB,*AR2

||LD*AR4,B

MASR*AR2-,*AR3+,B,A

SFTAA,—1,A

NEGA

MPYA*AR2+

MAR*AR2+

RETD

ADD*AR4,16,B

STHB,*AR2

RET

end

正弦波程序链接命令文件sin.cmd

-x.\Debug\vectors.obj

—x。

\Debug\sin.obj

—osin。

out

—msin.map

—estart

MEMORY

{

PAGE0:

EPROM:

org=0E00H,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

sin_vars:

>DARAM1PAGE1

coef_s:

〉DARAM1PAGE1

cos_vars:

〉DARAM2PAGE1

coef_c:

〉DARAM2PAGE1

sin_x:

align(512){}>DARAM3PAGE1

.vectors:

>VECSPAGE0

 

六.实验结果及分析

将程序装载到DSP目标芯片中,波形实现结果可以在CCS图形显示界面直观地表示出来

输出结果显示,在CCS图形观察窗口得到了频率稳定,信号干扰小,波形失真度较小的正弦信号;

七.设计总结心得

通过这次的课程设计使我进一步加深了对于DSP这门课程的学习以及对于平时所学内容的实际应用.在设计中发现问题和同学互相讨论研究增加了团队合作的能力。

在输入程序时发现编程确实是要求很认真细心的,如果稍有差错就会导致整个程序的错误,也由此体现了DSP这门课程的严谨性。

相信在以后的学习中一定会更好的应用所学内容的.

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

当前位置:首页 > 小学教育 > 语文

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

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