最新DSP课设汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
D S P课设
DSP 原理及应用
课
程
设
计
报
告
课题名
正弦信号发生器的设计
称:
姓
王也
名:
学
07100602
号:
院系
现代科技学院信息工程系
部:
专
信息07-1
业:
正弦信号发生器的设计
引言
数字信号发生器是在电子电路设计、自动控制系统和仪表测量校正调试中应用很多的一种信号发生装置和信号源。而正弦信号是一种频率成分最为单一的常见信号源,任何复杂信号(例如声音信号)都可以通过傅里叶变换分解为许多频率不同、幅度不等的正弦信号的叠加,广泛地应用在电子技术试验、自动控制系统和通信、仪器仪表、控制等领域的信号处理系统中及其他机械、电声、水声及生物等科研领域。
目前,常用的信号发生器绝大部分是由模拟电路构成的,当这种模拟信号发生器用于低频信号输出往往需要的RC值很大,这样不但参数准确度难以保证,而且体积大和功耗都很大,而由数字电路构成的低频信号发生器,虽然其低频性能好但体积较大,价格较贵,而本文借助DSP运算速度高,系统集成度强的优势设计的这种信号发生器,比以前的数字式信号发生器具有速度更快,且实现更加简便。
一、设计目的
1. 了解DSP及DSP控制器的发展过程及其特点
2. 较熟练地在硬件上掌握DSP及DSP硬件器的结构、各部件基本工作原理
3.学习DSP程序的调试及编写,及运用观察变量的方法查看程序的运行情况。
二、设计内容
用TMS320C54x的汇编语言程序设计正弦信号发生器大大方便了程序的编写、调试和加快了程序的运行速度。
三、实验原理
1. 正弦波产生原理
一般情况,产生正弦波的方法有两种:查表法和泰勒级数展开法。查表法是使用比较普遍的方法,优点是处理速度快,调频调相容易,精度高,但需要的存储器容量很大。泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。本文采用了泰勒级数展开法。一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:
«Skip Record If...»(1)
«Skip Record If...»(2)
式中:x为θ的弧度值,x=2πf/fs(fs是采样频率;f是所要发生的信号频率)。
2. 硬件设计
系统硬件主要由微机、DSP芯片、数/模转换模块组成。其中,DSP芯片采用的是TI公司性价比良好的TMS320VC5402。它有一组程序总线和三组数据总线、高度并行性的算术逻辑单元ALU、专用硬件逻辑片内存储器、增强型HPI口和高达100 MHz的CPU频率。它可以在一个周期里完成两个读和一个写操作,并且具有专门的硬件乘法器,广泛采用流水线操作,提供特殊
的DSP指令,可以用来快速地实现各种数字信号处理算法。D/A采用了一种双极型8位、低功耗数/模转换器DAC08,实现了高速同步数/模转换。硬件结构框图如图1所示。
3.软件设计
软件设计是基于CCS开发环境的。CCS是TI公司推出的为开发
TMS320系列DSP软件的集成开发环境,是目前使用最为广泛的DSP开发软件之一。它提供了环境配置、源文件编译、编译连接、程序调试、跟踪分析等环节,并把软、硬件开发工具集成在一起,使程序的编写、汇编、程序的软硬件仿真和调试等开发工作在统一的环境中进行,从而加速软件开发进程。本文采用了与硬件开发板相结合的在线编程模式,通过CCS软件平台上应用C语言及C54X汇编语言来实现正弦信号发生装置。
软件设计的思想是:正弦波的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器处理大量重复计算的优势来计算x轴每一点对应的y的值(在x轴取N个点进行逼近)。整个系统软件由主程序和基于泰勒展开法的SIN子程序组成,相应的软件流程图如图2和图3所示。
程序中,N值为产生正弦信号一个周期的点数,产生的正弦信号频率与N 数值大小及D/A转换频率fDA有关,产生正弦波信号频率f的计算公式为:f=fDA/N
因此,选择每个正弦周期中的样点数,改变每个采样点之间的延迟,即通过调节N值产生不同频率的波形,同时也可以利用软件改变输出的离散波形值乘以相应的缩放因子A,从而调节波形的幅度。
四、总体方案设计
1.基于DSP的特点,本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。
2.用泰勒级数展开法实现正弦波信号。
3.设置波形时域观察窗口,得到其滤波前后波形变化图;
4.设置频域观察窗口,得到其滤波前后频谱变化图。
五、主要参数
Coeff , x ,squr_x, temp, sinx
六、源程序
.mmregs
.def start
.def sin_start, d_x, d_sinx
STACK: .usect "STACK",10H
start: STM #STACK+10,SP
LD #d_x, DP
ST #6487H, d_x
CALL sin_start
end: B end
sin_start:
.def sin_start
d_coeff .usect "coeff",4
.data
table: .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_x .usect "sin_vars",1
d_squr_x .usect "sin_vars",1
d_temp .usect "sin_vars",1
d_sinx .usect "sin_vars",1
c_l .usect "sin_vars",1
.text
SSBX FRCT
STM #d_coeff, AR5
RPT #3
MVPD #table,*AR5+
STM #d_coeff, AR3
STM #d_x,AR2
STM #c_l,AR4
ST #7FFFH,c_l
SQUR *AR2+,A ;A=x^2