- 相关推荐
一种高精度波形发生器的设计
摘要:随着电子技术的发展,在诸如测量、控制等领域,经常要求信号的幅度保持在某个高精度的整数值上。但由于一般数据转换器在最小量化电平上的限制,其输出的信号电平很难在整数值上得到较高的精度。针对该问题,介绍一种高性能的16位数据转换器AD7846,使用TMS320VC54X系列DSP作为核心控制器,设计出幅度可精确至1mV的波形发生器。文中给出具体的硬件实现框图以及用来产生波形的DSP汇编源程序。关键词:波形发生器高精度AD7846DSP
引言
随着电子技术的发展,波形发生器已经广泛的应用在通信、控制、测量等各个领域。在很多地方,如测试测量领域,需要输出的波形能够精确地定位在某一整数值上,但通常由于ADC参考电平的限制,使之很难达到所需的精度,给系统的调试及软件设计带来诸多不便。本文采用了高精度的电压参考芯片ADR434为模数变换器提供参考电平,使波形发生器的最低可调电压达到125μV,为精确地输出数据值电压及其相应波形提供了方便的硬件环境。本设计具有输出精确,控制灵活方便等特点。
1系统设计
本系统采用TI公司生产的TMS320VC54X系列DSP作为核心控制器件,并采用Cypress工司生产的CY7C1021V(64K×16位RAM)来扩充DSP的外部数据存储空间。在DSP与ADC及RAM之间的数据接口加入74LVC16245(16位总线变换器)以增加DSP的驱动能力,并用来隔断器件间的干扰。DSP与DAC之间的逻辑控制采用CPLD实现,这样可以方便系统的设计与调试,本文中采用的CPLD为Altera公司的EPM7064SLC84-10。
整个系统的方框图如图1所示。
2器件简介
本系统所采用的数模转换器为AD7846,它是美国AD(AnalogDevice)公司基于LC2MOS工艺生产的16位数模转换器。它有VREF+和VREF-两个参考电平输入端以及一个片内放大器。标准情况下可以将其配置为单极性输出(0~+5V,0~+10V)或双极性输出(±5V,±10V)。当然,改变VREF+VREF-两个参考电平输入端的电平,也可以改变其输出的动态范围。如本文中的采用高精度电压参考芯片AD434提供参考电平,使D/A的动态范围设置为±4.096V。
AD7846采用分段式结构。DAC锁存器的高4位选通16个电阻串中的一段,段的两端接有运放作为缓冲,运放的输出反馈至12位的模数变换电路,并由该电路提供后12位分辨率。这种结构可以确保16位单调性,两个缓冲运放间输入失调电压的高度匹配还确保了优良的积分非线性。
除了优良的精度指标外,AD7846与微处理器的连接也非常方便。它有16位数据I/O以及4根控制线(CS,R/W,LDAC以及CLR)。R/W与CS用来控制对I/O锁存器的读写,LDAC信号用于多DAC系统中同步更新多片DAC数据,CLR用于将DAC的输出复位至0V。
3AD7846参考电压的设计
为了使系统的输出波形在幅度上能够精确到1mV,本文采用AD434为AD7846提供参考电压。ADR434为AD公司生产的低噪声、高精度、低温漂的电压参考芯片。它采用了AD公司的温漂曲率修正专利技术,可以使其电压对温度的非线性达到最小。二者的具体连接如图2所示。
图2所示的连接方式使AD7846工作在双极性输出状态下。AD434为D/A提供+4.096V的参考电平,D/A根据此电平经过双极十六位线性分解,所得的最低可调电压为4.096V/215=125μV。具体的编码表如表1所列。
表1AD7846编码表
DAC锁存器中的二进制数
模拟输出VOUT/V
1111111111111111+4.096C(32767/32768)=+4.0958751000000000001000+1.096V(8/32768)=+0.0011000000000000001+4.096V(1/32768)=+0.0001251000000000000000+4.096V(0/32768)=00111111111111111-4.096V(1/32768)=-0.0001250000000000000000-4.096V(32768/32768)=-4.096
4逻辑控制及软件实现
本文使用CPLD作为DSP控制D/A映射在DSP的I/O口,地址为4000H~7FFFH。AD7846一共有4根控制线,它们组成的控制逻辑如表2所列。
表2AD7846控制逻辑真值表
CSR/WLDACCLR
功能
1XXX使DAC的I/O锁存器呈高阻态00XX数据(DB1~5DB0)装入I/O锁存器01XXI/O锁存器中的数据输出到数据线上XX01I/O锁存器中的数据装入DAC锁存器X0X0DAC锁存器装入数据000...000X1X0DAC锁存器装入数据100...000
CPLD中烧入的逻辑图如图3所示。
对于波形的产生,通常有两种方法。一种方法为使用算法计算输出波形某点的幅度编码值(如正弦波可通过泰勒级数展开得到),这种方法可直接精确地计算出每个角度的波形值,所占用的存储空间小,但对于任意波形的输出,所需的算法较为复杂,系统实时性也会受到影响。另一种方法为查表法,该方法可能需要占用较大的存储空间,但软件控制却非常方便,实时性也更高。采用查表法的软件控制可由如下代码实现。
.mmregs
.globalmain
main:nop
ori:stm#SINtable,ar2;将数据表头地址送入ar2
ld#13H,a;循环输出20个样点值
JUMP:portw*ar2+,4000h;AD4846被配置在I/O口的4000H~7FFFFH处
Rpt#1fffh;改变rpt的值可以改变正弦波的频率
Nop
Sub#1d,a
BcJUMP,aneq
bori
SINtable;正弦波幅度编码表
.word7FFFH.word0A78DH.word0CB3CH.word0EF8DH
.word0F9BCH.word0FFFFH.word0F9BCH.word0E78DH
.word0cB3CH.word0A78DH.word8000H.word5872H
.word34C3H.word1872H.word0643H.word0000H
.word0643H.word1872H.word34C3H.word5872H
.end
该段程序可使AD7846输出标准正弦波,幅度范围为±4.096V,频率可通过改变rpt的值加以调节。若提供大量采样点,可使其实时输出高精度的任意波形。当然,利用DSP强大的运算处理能力,也可用软件计算出所需波形的各点采样值,这样可以节省存储空间,降低系统硬件成本。
结语
本系统已经过实际测量,系统各部分工作正常,AD7846可精确稳定地输出所需波形。该方案不仅达到了很高的精度与系统实时性,还具有控制灵活方便等特点,是一种很好的波形发生器。
【一种高精度波形发生器的设计】相关文章:
基于CPLD的三相多波形函数发生器设计08-06
SDRAM在任意波形发生器中的应用08-06
一种超宽脉冲发生器的设计08-06
介绍一种高精度位置环系统08-06
一种简易数字波形存储器的实现08-06
GPS高精度的时钟的设计和实现08-06
一种新型高精度激光轮对检测装置08-06
波形钢腹板组合箱梁的结构设计方法08-06