基于DSP正弦信号发生器的研究.docx
- 文档编号:7647659
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:18
- 大小:602.16KB
基于DSP正弦信号发生器的研究.docx
《基于DSP正弦信号发生器的研究.docx》由会员分享,可在线阅读,更多相关《基于DSP正弦信号发生器的研究.docx(18页珍藏版)》请在冰豆网上搜索。
基于DSP正弦信号发生器的研究
DSP结课作业
题目:
基于DSP正弦信号发生器的研究
院系名称:
电气工程学院
专业班级:
学生姓名:
学号:
指导教师:
目录
摘要3
引言3
1系统原理4
1.1利用DSP产生正弦波的方法4
1.2DDS的基本原理6
2系统方案研究7
2.1DDS单片电路的解决方案7
2.2基于FPGA芯片的解决方案7
2.3采用高速的微处理芯片的解决方案7
3总体方案设计8
3.1硬件组成8
3.2控制器组成9
3.3微输出D/A通道部分9
3.4驱动器设计11
3.5键盘设计11
4软件设计12
4.1流程图12
4.2正弦信号发生器程序清单14
5结语20
参考文献及附录21
基于DSP正弦信号发生器的研究
摘要:
数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。
在过去的二十多年时间里,信号处理已经在通信等领域得到极为广泛的应用。
关键词:
信号发生器DSP正弦信号数模转换
引言:
正弦信号发生器是信号源中最常见的一种,它能输出一个幅度可调、频率可调的正弦信号。
在这些信号发生器中,又以低频正弦信号发生器最为常用,在科学研究及生产实践中均有广泛应用。
目前,常用的信号发生器绝大部分都是由模拟电路构成的,当这种模拟信号发生器用于低频信号输出时,往往需要的RC值很大,这样不但参数准确度难以保证,而且体积大和功耗都很大。
而由数字电路构成的低频信号发生器,虽然其低频性能好,但体积较大,价格较贵。
而本文借助DSP运算速度高,系统集成度强的优势设计的这种信号发生器,比以前的数字式信号发生器具有速度更快,且实现更加简便。
在当今社会,信号发生器已经广泛地应用于雷达应用,通信系统的仿真与测试等国防、科研和工业领域。
数字信号处理器(DSP)正是在基于高标准,高要求的情况下应运而生。
DSP是在模拟信号变成数字信号以后进行高速实时处理的专用处理器,运算速度高、系统集成度强、比以前的数字式信号发生器具有速度更快且实现更加简便。
其中嵌入式DSP应用系统中,波形发生器作为DSP外时钟信号源或激励信号源,所以它的质量和优劣直接影响DSP和嵌入系统的性能。
为此,必须选择性价比高的信号波形发生器,这样才能为DSP提供一个高性能的时钟信号或激励信号。
1、系统原理
1.1利用DSP产生正弦波的方法
常见产生正弦波的方法有6种:
(1)采样回放法;
(2)实时计算法;(3)查表法;(4)查表结合插值法;(5)数值迭代法;(6)泰勒级数展开法。
1)采样回放法
该方法很容易实现,只需对已有的标准正弦信号源进行采样,得到数据后直接回放或进行变频变幅处理后回放。
该方法关键在于采用高性能的A/D、D/A芯片并合理设计硬件电路,使信号处理过程中保证波形良好,以保证采样数据的精准性。
进行数字变频及变幅处理时,要清楚数据的格式并保证回放数据的点数满足奈奎斯特定理,防止频谱混迭。
2)查表法产生正弦波
查表法是使用比较普遍的方法,也是本装置采用的方法,首先自己生成正弦数据表,再进行查表、D/A转换后,得到所需要的波形。
优点是处理速度快,调频调相容易,较采样回放法,避免了数据单一,增加了精度。
如果存储空间足够大,那么就可以通过制作较大的查找表来得到较高的精度。
如建立一个200个数据点的正弦数据表,具体过程如下,采用查表法来实现对某一正弦波的频率及幅值的设定,在程序里要建立一张正弦查找表。
根据分析及计算得到每周期最多向D/A送多少个数据点,假设送200个数据,因此建立一张有200个数据的正弦查找表。
对于频率为f的正弦波来说,若每周期取200点数据,则取样间隔为(1/f)/200=1/(200f),则对幅值为1的正弦波如下式:
这里采用MATLAB软件来产生一个200个数据点的正弦波数据文件,之后将其添加到CCS工程中进行编译、连接、调试直至成功。
利用下面一段MATLAB程序来产生sin200.dat的数据文件。
sine=sin([0:
199]’*2*pi/200);%生成正弦数据
savesin200.datsine-ascii%输出数据文件sin200.dat
3)查表结合插值法产生正弦波形
查表结合插值法是在查表法的基础上加以改进得到。
发生相同性能的正弦波,查表法结合插值法的长度远远要小于单纯查表法的表格长度,从而克服了查表法中占用大量内存资源的缺点,节约了存储空间。
查表法结合插值法的表格格式如表1所示。
先将一个周期的单位正弦波N等分,并计算所有离散点的幅值,之后将这些幅值依次排列存入数据区,从而构成一张表格。
查表结合插值法产生正弦波形方法是通过在两个表项点之间插入若干个值来实现的,插入值的大小决定于相邻的两个表项值和插入点的位置。
考虑到DSP的处理速度,一般采用线性插值。
每一个插值根据下式得到:
sin[360°(I+D)/N]=sin(360°I/N)+D{sin[360°(I+1)/N]-sin(360°I/N)}。
其中,D是一个介于0到1之间的小数,表示插值点离左边表项点的相对位置;N是表格长度;sin(360°I/N)和sin[360°(I+1)/N]是相邻的两个表项值。
4)泰勒级数展开法
查表法是通过查表的方式来实现正弦波,主要用于对精度要求不很高的场合。
泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。
本次主要用泰勒级数展开法来实现正弦波信号。
产生正弦波的算法正弦函数和余弦函数可以展开成泰勒级数,其表达式:
取泰勒级数的前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。
1.2DDS的基本原理
直接数字频率合成器(DerectDigitalSynthesizer)DDS是从相位概念出发直接合成所需要波形的一种新的频率合成技术。
DDS是利用信号相位与幅度的关系,对需要合成信号的波形进行相位分割,对分割后的相位值赋予相应的地址,然后按时钟频率以一定的步长抽取这些地址,这样按照一定的步长抽取地址(相位累加器值)的同时,输出相应的幅度样值,这些幅度样值的包络反映了需要合成信号的波形。
一个直接数字频率合成器由相位累加器、加法器、波形存储ROM、D/A转换器和低通滤波器(LPF)构成。
DDS的原理框图如图所示。
图1.2DDS的原理框图
2、系统方案研究
DDS的设计方案已经有很多的成熟方案,可以采用单片专用集成电路芯片解决,也可以用FPGA设计,还可以采用高速的微处理芯片来设计,基本的设计方案简介如下。
2.1DDS单片电路的解决方案
AD9850是AD公司采用先进的DDS技术1996年推出的高集成度DDS频率合成器,它内部包括可编程DDS系统、高性能DAC及高速比较器,能实现全数字编程控制的频率合成器和时钟发生器。
接上精密时钟源,AD9850可产生一个频谱纯净、频率和相位都可编程控制的模拟正弦波输出。
此正弦波可直接用作频率信号源或转换成方波用作时钟输出。
AD9850接口控制简单,可以用8位并行口或串行口经、相位等控制数据。
32位频率控制字,在125MHz时钟下,输出频率分产率达0.029Hz。
先进的CMOS工艺使AD9850不仅性能指标一流,而且功耗少,在3.3V供电时,功耗仅为155mW。
扩展工业级温度范围为-40~+85摄氏度,其封装是28引脚的SSOP表面封装。
AD9850采用32位相位累加器,截断成14位,输入正弦查询表,查询表输出截断成10位,输入到DAC。
DAC输出两个互补的模拟电流,接到滤波器上。
调节DAC满量程输出电流,需外接一个电阻Rset,其调节关系是Iset=32(1.248V/Rset),满量程电流为10~20mA。
2.2基于FPGA芯片的解决方案
DDS技术的实现依赖于高速、高性能的数字器件。
可编程逻辑器件以其速度高、规模在、可编程,以及有强大EDA软件支持等特性,十分适合实现DDS技术。
利用FPGA则可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良好的实用性。
就可成信号质量而言,专用DDS芯片由于采用特定的集成工艺,内部数字信号抖动很小,可以输出高质量的模拟信号;利用FPGA也能输出较高质量的信号,虽然达不到专用DDS芯片的水平,但信号精度误差在允许范围之内。
2.3采用高速微处理芯片的解决方案
在基于DDS原理的基础上,利用软件模拟出DDS专用芯片内部的各个硬件电路,同时利用微处理器的高速运算性能,同样可以达到专用的DDS芯片所产生的波形性能。
同时采用这种方案可以弥补专用芯片的不足点,它具有如下优点:
速度快。
由于TMS320VC54xDSP指令周期25/20/15/12.5/10ns[10],运算能力高达100MIPS,此外,它内部还集成了维特比加速器,用于提高维特比编译码的速度,所以由它组成的信号发生器的波形生成速度快。
波形精度高。
由于TMS320VC54xDSP有优化的CPU结构,内部有1个40位算术逻辑单元,2个40位累加器,2个40位加法器,1个17×17的乘法器和1个40位的桶形移位器,有4条内部总线和2个地址产生器[6],所以它能产生高精度的信号波形。
功耗小,性能稳定,从而产生的波形信号也稳定。
成本较低。
利用DSP构成的信号发生器的大部分功能成本可以嵌入到DSP的软件中,而不是额外的硬件,大大的降低了成本和额外的开销。
编程方便。
DSP可以使用汇编语言,也可以使用C语言,在软件编程中的修改或升级都特别的方便。
本系统设计方案正是基于采用高速的微处理芯片的解决方案。
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.3输出通道的原理结构
图3.3中的缓冲电路的作用是对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驱动器设计
位驱动器电路由两片集成电路组成,即由位驱动的CMOS芯片和将TTL电平转换成CMOS电平的电平转换芯片组成,电平转换芯片可以和输出通道的电平转换芯片共用一片74HCT244(本部分使用4路,输出通道使用3路),其主要作用是对DSP输出的3.3VTTL电平与5VCMOS电平进行匹配,从而带动具有CMOS电平的位驱动器,根据动态扫描显示的要求,位驱动器需要选用每路输出吸收电流都要大于200mA的芯片,因此,本设计选用了TI公司的74LS06来做LED的大电流驱动器件。
3.5键盘设计
本信号发生器采用独立键盘作为人机接口部分,即各个按键相互独立,按下相应的按键,就能输出对应幅度和频率的正弦波。
图3所示为中断方式工作的独立式键盘的连接图,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不影响其它的I/O接口线。
因此,可以通过检测I/O的电平状态判断出哪个键按下。
这4个独立按键分别接HD0~HD3口,并且使用4个220欧的上拉电阻接VCC。
当没有按下键时,对应的I/O接口线输入为高电平,当按下键时,对应的I/O接口线输入为低电平,则请求中断INT1。
而在读键时,每一个键的状态通过读入键值的高低电平来反应。
在中断服务程序中通过执行判键程序,判断是哪个键按下,从而设置对应的幅度和频率,执行产生正弦波形的程序。
独立式键盘的电路配置灵活、软件简单。
但每个按键要占用1根I/O接口线,在按键较多时,I/O接口线浪费较大。
故在按键数量不多时采用这种方法,本系统采用4个独立按键,而DSP芯片有足够的I/O接口可供使用,设计时可以充分利用这一特点来连接硬件,至于对按键时抖动的消除可在软件中完成。
使用中断,可提高CPU的效率,实现资源共享和并行处理,同时也可以在芯片运行过程中对突发故障做出及时发现和处理。
4、软件设计
4.1流程图
本系统软件可以按照模块化设计思想来编写,包括主程序、常数计算程序、占空比计算程序和相应的一些功能子程序,主程序用于调用各功能子程序、初始化变量、查询键盘、判断显示数据是否需要刷新、同时判断一个脉冲是否完成发送等工作,具体方案见图5.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结语
随着电子技术的高速发展,DSP的各项性能得到不断提高,其独特的硬件结构和快速实现各种信号处理高速而精确的运算能力以及内部操作极大的灵活性,使得DSP得到广泛的应用。
利用DS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DSP 正弦 信号发生器 研究
![提示](https://static.bdocx.com/images/bang_tan.gif)