太原理工大学DSP正弦信号发生器课程设计报告书.docx
《太原理工大学DSP正弦信号发生器课程设计报告书.docx》由会员分享,可在线阅读,更多相关《太原理工大学DSP正弦信号发生器课程设计报告书.docx(26页珍藏版)》请在冰豆网上搜索。
![太原理工大学DSP正弦信号发生器课程设计报告书.docx](https://file1.bdocx.com/fileroot1/2023-1/29/17c2d8dd-5760-456d-b6bd-bee8fbe10783/17c2d8dd-5760-456d-b6bd-bee8fbe107831.gif)
太原理工大学DSP正弦信号发生器课程设计报告书
太原理工大学现代科技学院
DSP硬件电路设计基础课程设计
设计名称正弦信号发生器的设计
专业班级通信14-
学号
姓名
指导教师
太原理工大学现代科技学院
专业班级
通信14-1
学生姓名
课程名称
DSP硬件电路设计基础
设计名称
正弦信号发生器的设计
设计周数
1.5周
指导教师
设计
任务
主要
设计
参数
1.掌握产生正弦波的方法;
2.学习正弦信号发生器的DSP实现原理;
5.学习使用CCS的波形观察窗口观察输入/输出信号波形和频谱变化情况。
设计内容
设计要求
用DSP汇编语言及C语言进行编程,实现正弦信号发生器。
主要参考
资料
邹彦等.DSP原理及应用.北京:
电子工业出版社.2007年.电气与电子信息类本科规划教材
李利等.DSP原理及应用.北京:
中国水利水电出版社.2007年.21世纪高等院校规划教材
学生提交
归档文件
课程设计报告
课程设计任务书
注:
1.课程设计完成后,学生提交的归档文件应按照:
封面—任务书—说明书—图纸的顺序进行装订上交(大张图纸不必装订)
2.可根据实际内容需要续表,但应保持原格式不变。
指导教师签名:
日期:
2016-12-10
……………………………………装………………………………………订…………………………………………线………………………………………
专业班级通信14-1学号2014101572姓名成绩
第1章绪论
1.1DSP简介
数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。
在过去的二十多年时间里,信号处理已经在通信等领域得到极为广泛的应用。
图一是数字信号处理系统的简化框图。
此系统先将模拟信号转换为数字信号,经数字信号处理后,再转换成模拟信号输出。
其中抗混叠滤波器的作用是将输入信号x(t)中高于折叠频率的分量滤除,以防止信号频谱的混叠。
随后,信号经采样和A/D转换后,变成数字信号x(n)。
数字信号处理器对x(n)进行处理,得到输出数字信号y(n),经D/A转换器变成模拟信号。
此信号经低通滤波器,滤除不需要的高频分量,最后输出平滑的模拟信号y(t)。
图1.1数字信号处理系统简化框图
数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
1.2课题研究的目的意义
科技的进步带动了DSP技术的发展,现代控制设备的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,DSP技术也成为当今科技的主流之一,被广泛地应用于生产的各个领域。
对于本次设计,其目的在于:
(1)了解DSP及DSP控制器的发展过程及其特点。
(2)较熟练地在硬件上掌握DSP及DSP硬件器的结构、各部件基本工作原理。
(3)熟悉CCS集成开发环境,并能较熟练的对CCS的开发系统进行使用。
(4)熟悉用C语言、汇编语言编程DSP源程序
(5)学习DSP程序的调试及编写,及运用观察变量的方法查看程序的运行情况。
(6)掌握工程设计的流程及方法。
1.3课题研究内容
用TMS320C54x的汇编语言程序设计正弦信号发生器大大方便了程序的编写、调试和加快了程序的运行速度。
第二章总体方案的分析和设计
2.1总体方案设计
1.基于DSP的特点,本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。
2.用泰勒级数展开法实现正弦波信号。
3.设置波形时域观察窗口,得到其滤波前后波形变化图;
4.设置频域观察窗口,得到其滤波前后频谱变化图。
2.2正弦波信号发生器
正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。
通常有两种方法可以产生正弦波,分别为查表法和泰勒级数展开法。
查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。
泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。
本次主要用泰勒级数展开法来实现正弦波信号。
产生正弦波的算法正弦函数和余弦函数可以展开成泰勒级数,其表达式:
取泰勒级数的前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。
2.3总体方案设计
1.基于DSP的特点,本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。
2.用泰勒级数展开法实现正弦波信号。
3.设置波形时域观察窗口,得到其滤波前后波形变化图;
4.设置频域观察窗口,得到其滤波前后频谱变化图。
第3章硬件设计
3.1硬件组成
基于DSP的信号发生器的硬件结构图如图3.1所示,它主要由DSP主控制器,输出D/A通道和人机界面等几个主要部分组成。
图3.1基于DSP的信号发生器系统框图
3.2控制器部分
本系统采用TI公司的TMS320LF2407DSP处理器,该器件具有外设集成度高,程序存储器容量大,A/D转换精度高,运算速度高,I/O口资源丰富等特点,芯片内部集成有32KB的FLASH程序存储器、2KB的数据/程序RAM,两个事件管理器模块(EVE和EVB)、16通道A/D转换器、看门狗定时器模块、16位的串行外设接口(SPI)模块、40个可单独编程或复用的通用输入输出引脚(GPIO)以及5个外部中断和系统监视模块。
TMS320LF2407芯片中的事件管理模块(EV)是一个非常重要的组成部分。
SPWM波形的产生和输出就是由这一部分完成的,它由两个完全相同的模块(EVA和EVB)组成,每个模块都含有2个通用定时器、3个比较器、6至8个PWM发生器、3个捕获单元和2个正交脉冲编码电路(QEP)。
由于TMS320LF2407有544字的双口RAM(DARAM)和2K字的单口RAM(SARAM);而本系统的程序仅有几KB,且所用RAM也不多,因此不用考虑存储器的扩展问题,而对于TMS320LF2407的I/O扩展问题,由于TMS320LF2407器件有多达40个通用、双向的数字I/O(GPIO)引脚,且其中大多数的基本功能和一般I/O复用的引脚,而实际上,本系统只需要17路I/O信号,这样,就可以为系统剩余50%多的I/O资源,因此可以说,该方案既不算浪费系统资源,也为系统今后的升级留有余地。
3.3微输出D/A通道部分
本系统的输出通道部分主要负责实现波形的输出,此通道的入口为TMS320LF2407的PWM8口,可输出SPWM等幅脉冲波形,出口为系统的输出端,这样,经过一系列的中间环节,便可将PWM脉冲波转化为交流正弦波形,从而实现正弦波的输出,其原理框图如图3.2所示。
图3.2输出通道的原理结构
图3.2中的缓冲电路的作用是对PWM口输出的数字量进行缓冲,并将电压拉高到5V左右,以供后级模拟电路滤波使用。
这一部分电路由两个芯片组成。
一片用三态缓冲器,由于PWM口的输出为3.3V的TTL电平,这样,在设计时就应当选用输入具有5V的TTL输入,CMOS输出电平的转换芯片(如TI公司的74HCT04);另一片则可选用TOSHIBA公司出品的光电耦合器6N137;输出端连接的5V精密稳压电源可选用BURR-BROWN公司生产的REF02型精密稳压电源,以输出标准的5V电压。
系统中的减法电路的主要作用是把0-10V直流脉动信号的转换成-5~+5V的正弦交流信号,并使其电压增益为1。
设计使可利用差分式电路来实现其功能,为了简化电路,可以选用较为常用的AD公司的AD524,并将AD524接成电压跟随器的形式,同时适当的选取电阻以满足要求,此外,为了使产生的正弦波信号具有2-5mA的驱动能力,可选用AD624来构成末级的信号放大电路。
AD624是高精度低噪声仪用放大器,若外接一只增益电阻,即可得到1-1000之间的任意增益值,其误差小于1%。
由于AD624的建立时间只有15μs,所以它非常适宜在高速数据采集系统中使用。
3.4人机接口部分
3.4.1驱动器设计
位驱动器电路由两片集成电路组成,即由位驱动的CMOS芯片和将TTL电平转换成CMOS电平的电平转换芯片组成,电平转换芯片可以和输出通道的电平转换芯片共用一片74HCT244(本部分使用4路,输出通道使用3路),其主要作用是对DSP输出的3.3VTTL电平与5VCMOS电平进行匹配,从而带动具有CMOS电平的位驱动器,根据动态扫描显示的要求,位驱动器需要选用每路输出吸收电流都要大于200mA的芯片,因此,本设计选用了TI公司的74LS06来做LED的大电流驱动器件。
3.4.2键盘设计
本系统选用四个独立式按键,分别接入PF3-PF6口,并使用四个220Ω上拉电阻接VCC。
所谓独立式,就是将每一个独立键按一对一地直接接到I/O输入线上,而在读键值时,直接读I/O口,每一个键的状态通过读入键值的一位(二进制位)来反应,所以这种方式也称为一维直读方式,这种方式的查键软件比较简单,但占用I/O线较多,一般在键的数量较少时采用,不过,由于DSP芯片有足够的I/O接口可供使用,因而可大大方便设计,设计时可以充分利用这一特点来连接硬件,至于按键的削抖动措施,则可在软件中完成。
第4章软件设计
4.1流程图
本系统软件可以按照模块化设计思想来编写,包括主程序、常数计算程序、占空比计算程序和相应的一些功能子程序,主程序用于调用各功能子程序、初始化变量、查询键盘、判断显示数据是否需要刷新、同时判断一个脉冲是否完成发送等工作,具体方案见图4.1所示的流程图。
图4.1主程序流程图
在程序中,应在第N-1个脉冲周期里计算占空比,并在第N个脉冲周期里输出波形,这就要求在设计时要在一个脉冲周期内完成计算,如果选用20MHz的晶振,那么,在一倍频下,执行一条执行只需50ns,若输出400Hz的正弦波,即每一个周期(即2.5ms)要输出200个脉冲,这样,也就是说,一个脉冲需要12.5μs(相当于12500/50=250条指令)。
而执行一个占空比的计算程序只需要几十条指令,这种算法从软件开销上考虑是可以实现的。
4.2正弦信号发生器程序清单
;ThisfunctiongeneratesthesinewaveofangleusingtheTaylorseriesexpansion
;sin(theta)=x(1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9))))
;cos(theta)=1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9)))
;sin(2*theta)=2*sin(theta)*cos(theta)
.title"sin.asm"
.mmregs
.def_c_int00
.refsinx,d_xs,d_sinx,cosx,d_xc,d_cosx
sin_x:
.usect"sin_x",360
STACK:
.usect"STACK",10
k_theta.set286
PA0.set0
_c_int00
.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
c_l_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#c_l_s,AR4
ST#7FFFh,c_l_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_l_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_l_c,AR4
ST#7FFFh,c_l_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
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
sin_vars:
>DARAM1PAGE1
coef_s:
>DARAM1PAGE1
cos_vars:
>DARAM2PAGE1
coef_c:
>DARAM2PAGE1
sin_x:
align(512){}>DARAM3PAGE1
.vectors:
>VECSPAGE0
}
.title"sin_v.asm"
.ref_c_int00
.sect".vectors"
B_c_int00
.end
第5章系统仿真
5.1CCS工程项目的调试
程序的运行控制
在调试程序的过程中,经常需要复位、执行、单步执行等操作。
这些操作称为程序运行控制。
CCS开发环境提供了多种调试程序的运行操作。
用户可以使用调试工具条或调试菜单“Debug”命令控制程序的运行。
创建工程项目
1.进入CCS集成开发环境
2.创建一个新的工程项目
3.将源程序文件、链接命令文件、库文件和头文件添加到工程项目中
4.单击所有“+”项观看工程项目所包含的文件双击各图标,打开各文件
工程项目的编译
1.工程项目的编译链接
设置探测点
1.将volume.out文件装入目标板
2.设置探测点
3.为探测点选择链接的数据文件
4.设置数据文件的属性
5.将数据文件链接到探测点
6.关闭“FileI/O”对话框
工程项目的调试和结果的图形显示
1.设置断点
2.设置输入变量的图形属性
3.设置输出变量的图形属性
4.运行程序,显示图形
5.调整输出增益
观察寄存器的运行数据
5.2仿真波形图
图5.2仿真波形图
仿真结果表明系统产生的波形稳定,抗干扰能力强,频率和幅度调节方便,精确度高。
该设计方案简单可行,新颖实用,有推广价值。
第6章总结
本次课程设计中遇到一些课堂中从未有过的问题,通过网络查找和同学交流,大大促进了设计进程。
并在过程中进一步提高自身的创作、创新水平,扎实基础,扩展所学。
并且此次课程设计,基于课程理论知识和网上资料,使我对数字信号处理课程有了更深一步的了解和掌握,对利用CCS软件编程的数字信号处理方法有了进一步的了解。
在理论课的基础上进行实验实习,是对本门课程的深入学习和掌握,在以后的工作学习中,数字信号的处理都是采用计算机仿真的方法进行测试,因此,掌握基于计算机的数字信号处理方法对以后的工作和学习有很大的帮助。
这样一个课程设计对我们的发展有着极大的帮助!
最后,这个设计之所以能按时完成离不开老师的指导和同学的帮助,在这我对他们表示衷心的感谢。
参考文献
[1]顾卫钢.手把手教你学DSP-基于TMS320x281x北京航空航天大学出版社,2011.
[2]苏奎峰等.TMS320X281xDSP原理及C程序开发.北京航空航天大学出版社,2008.
[3]苏奎峰等.TMS320F2812原理与开发.电子工业出版社,2005.
[4]万山明.TMS320F2812/2810原理及应用实例.北京航空航天大学出版社,2007.
[5]TI公司著,胡广书等编译.TMS320C28X系列DSP的CPU与外设.清华大学出版社,2005.
[6]TI公司著,胡广书等编译.TMS320C28X系列DSP指令和编程指南.清华大学出版社,2005.
附录
DSP程序代码
;ThisfunctiongeneratesthesinewaveofangleusingtheTaylorseriesexpansion
;sin(theta)=x(1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9))))
;cos(theta)=1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9)))
;sin(2*theta)=2*sin(theta)*cos(theta)
.title"sin.asm"
.mmregs
.def_c_int00
.refsinx,d_xs,d_sinx,cosx,d_xc,d_cosx
sin_x:
.usect"sin_x",360
STACK:
.usect"STACK",10
k_theta.set286
PA0.set0
_c_int00
.text
STM#STACK+10,SP
STMk_theta,AR0
STM0,AR1
STM#si