192.4高速数据采集与数据传输在微型计算机数据采集装置的设计中存在着一个很重要的问题,即高速数据采集与数据传输速率之间的协调。这不仅与A/D转换器转换速率有关,还与A/D转换的控制方式以及数据传输方式相关。数据传输主要有程序控制的数据传输、DMA传输、基于数据缓存技术的高速数据传输等多种方式。下面分别加以介绍。1.程序控制的数据传输方式这种方式是指通过CPU执行程序来控制A/D转换与数据传输的方式,例如前几节讨论的查询方式、延时等待方式、中断方式等均属于这种方式。在程序控制的A/D转换和数据传输方式下,每传输一个数据,CPU都要执行若干条指令,这对于高速数据采集以及要求成批交换数据的场合,就显得速度较慢了。例如要求一个A/D转换器实时采集一批数据,并传输到微型计算机系统中的一段存储区域内。若采用程序控制的方法,编制的控制程序要完成下列几项工作:首先,它必须建立一个指向缓冲区的存储器地址指针,并且每传输一个数据都要使地址指针加1;第二,它还必须确定所传输数据的字节数目,并以此作为测试是否需要终止传输循环的依据;第三,采用查询、延时等待或中断方式控制A/D转换的过程并将转换的数据传输到微型计算机系统中。若上例中的微型计算机系统采用IBM-PC机(或单片机系统),可以估算出,每传输一个字节数据需要长达10μs左右的时间。近年来,随着CPU时钟频率和总线速度大幅度的提升,这种数据传输方式的速度也有很大的提高,但是相对地说,这种方式的传输速度不高。因此,程序控制的数据传输方式一般只能使用于速度较慢的应用场合。2.DMA控制的数据传输方式DMA方式即在DMA控制器控制下的直接存储器存取方式,在这种方式下,外设与内存之间的数据传输过程不再由CPU控制,而是在DMA控制器的控制和管理下进行直接传输,从而提高了传输速度。例如在PC机系统中进行DMA传输时,CPU将让出对总线的控制权,而由DMA控制器暂时控制,其过程可用图2-23来说明。图2-23DMA传输示意图DMA控制器中的地址寄存器和计数器都是可寻址的。在DMA控制器工作之前,必须在主程序中用指令对DMA控制器初始化:预置地址寄存器的初值,即存储器中要传输数据区的首地址;预置计数器初值,即传输字节总数;预置状态或控制寄存器来决定读或写操作等。初始化之后便可启动外设。当外设准备好数据后,就向DMA发出DMA请求。DMA接受申请后又转向CPU发出总线请求信号。CPU在结束当前机器周期后,即响应DMA申请并“脱开”系统总线。DMA接管总线控制权之后,就在地址总线上发出所要读/写的存储单元地址以及控制存储器和I/O设备的读、写信号,实现I/O设备与存储器之间的一个字节的传输。然后DMA控制器内的地址寄存器加1,计数器减1,再实现下一次传输过程。这样循环操作,直至计数器值为零,表示数据传输完毕。最后,DMA控制器撤消向CPU提出的总线请求信号,CPU接管总线控制权后继续执行有关程序。在上述DMA传输过程中,传输字节数据的途径是I/O设备接口、总线和存储器接口,并不经过DMA控制器,因而速度很快。在大多数情况下,DMA方式传输一个字节只需要两个时钟周期的时间。除此之外,CPU在现行指令的每个机器周期结束即可响应DMA,故CPU响应DMA请求的最大延时不会超过一个机器周期。PC机采用DMA传输方式后使数据传输的速率得到很大的提高,但在DMA传输过程中,由于CPU“脱开”系统总线不再工作,因而CPU的工作效率较低。此外,传输速率还受到DMA控制器芯片最高工作频率的限制,例如DMA控制芯片8237A的最大工作频率为3MHz。20为了提高CPU的工作效率,许多现代高性能DSP芯片内含有多个在片(on-chip)DMA控制器,并提供专门的DMA传输总线,可以在几乎不需要处理器核干预的情况下就能完成数据的DMA传输。这样,就使处理器核从内存与外设的数据传输中解放出来,而去执行更重要的工作。由于处理器核的运行与数据传输并行工作,工作效率很高。3、基于高速数据缓存技术的数据传输方式在一般的高速数据采集系统中,微处理器控制的数据传输速率及有关数据处理的速度与前端A/D转换器的采集速度往往是不一致的,为了协调它们之间的工作,可以在两者之间加入数据缓存器进行缓冲,使前端采集数据与后级数据处理异步工作。另外,在多微处理器系统应用场合,各微处理器系统的工作也不可能完全同步,当它们之间需要高速传输数据时,也可以采用高速数据缓存技术。总之,在系统或模块之间,如果没有能够高速传输数据的接口,极易造成瓶颈堵塞现象,影响整个系统的处理能力。目前采用比较多的数据缓存方式是:基于双口RAM的高速数据缓存方式和基于FIFO的高速数据缓存方式。2.5模拟量输出通道2.5.1D/A转换器概述1.D/A转换原理D/A转换器是由电阻网络、开关及基准电源等部分组成,目前基本都已集成于一块芯片上。为了便于接口,有些D/A芯片还含有锁存器。D/A转换器的组成原理有多种,采用最多的是R-2R梯形网络D/A转换器,图2-28为一个4位D/A转换器的原理图。图2-28R-2R梯形网络D/A转换原理由图2-28可见,D/A转换器电阻网络中电阻的规格仅为R,2R两种。UR为基准电压,它可由内电子开关S3,S2,S1,S0,在二进制码D=D3D2D1D0的控制下分别控制4个支路,并使电流各自进入A3,A2,A1,A04个结点。这种网络的特点是:任何一个结点的三个分支的等效电阻都是2R,因此由任一个分支流进结点的电流都为I=RUR3,并且I将在结点处被平分为相等的两个部分,经另外两个分支流出。现假设数字输入D=0001,即S0被接通,S1,S2,S3断开(如图所示状态),则基准UR经开关S0流入支路所产生的电流为I=RUR3,此电流经过A0,A1,A2,A3等4个结点,经4次平分而得161I注入运算电路,以便将电流信号转换为电压信号。设反馈电阻Rfb=3R,则运算放大器输出端产生的电压RRURRURIUo42133161316根据叠加原理,可以得出D为任意数时四位D/A转换器的总输出电压21DUDDDDUUoRR4001223342)2222(21当UR为正时,D/A转换器输出Uo为负,反之为正。2.D/A转换器的主要技术指数1.分辨率D/A转换器的分辨率定义为:当输入数字发生单位数码变化时所对应模拟量输出的变化量,具体表达方式与A/D转换器分辨率基本一致。2.转换精度转换精度是指在整个工作区间实际的输出电压与理想输出电压之间的偏差,可用绝对值或相对值来表示。转换精度包含了造成D/A转换器误差的所有因素。与A/D转换器一样,转换精度指标有时以综合误差方式来描述,有时用分项误差的方式来描述,具体各分项误差的含义与A/D转换器的定义基本一致,不再赘述。3.转换时间指当输入的二进制代码,从最小值突跳到最大值时,其模拟量电压达到与其稳定值之差小于±21LSB所需的时间。转换时间又称稳定时间,其值通常比A/D转换器的转换时间要短得多。4.尖峰误差尖峰误差是指输入代码发生变化时而使输出模拟量产生的尖峰所造成的误差。如图2-29(a)所示,产生尖峰的原因是由于诸开关在切换过程中响应时间不一致和寄生参数所致。尖峰持续的时间虽然很短,但幅值可能很大,在某些应用场合必须施加措施予以避免。由于尖峰的出现是非周期的,因此不能用简单的滤波方法来消除,常用的方法是采用一单稳电路和S/H,利用单稳的延迟时间来躲过尖峰。其消峰原理如图2-29(b)所示。图2-29D/A转换器尖峰误差及消峰原理3.D/A转换电路输入与输出形式D/A转换器的数字量输入端可以分为:不含数据锁存器;含单个数据锁存器;含双数据锁存器三种情况。第一种与微型计算机接口时一定要外加数据锁存器,以便维持D/A转换输出稳定。后两种与微型计算机接口时可以不外加数据锁存器。第三种可用于多个D/A转换器同时转换的场合。D/A转换器的输出电路有单极性和双极性之分。图2-30所示的电路是将一个8位D/A转换器连接成单极性输出方式的电路,其输出输入关系式为DVUREFOUT82,即输出为全正或为全负。其数字量与模拟量的关系如图2-30(b)所示。22图2-30D/A转换器单极性输出电路在实际使用中,有时还需要双极性输出,如输出为-5V~+5V、-10V~+10V。图2-31给出了将D/A芯片连接成双极性输出的电路图,其原理是:基准电压VREF经R1向A2提供一个偏流I1,A1的输出U1经R2向A2提供偏流I2,因此运算放大器的输入为偏流I1,I2之代数和。由于R1与R2的比值为2:1,因此,输出电压UOUT与基准电压VREF及A1输出电压的关系为)2(1REFVUUout。其数字量与模拟量的关系如图2-31(b)所示。图2-31D/A转换器双极性输出电路2.5.2D/A转换器与微型计算机接口1.D/A转换原理1)8位D/A转换器DAC0832及其与微型计算机接口DAC0832是含有双输入数据锁存器的D/A数模转换器,其内部原理框图如图2-23所示。图2-32DAC0832内部23原理框图DAC0832内部的LE为寄存命令,当LE为1时,寄存器的输出数据随输入变化;当LE为0时,数据被锁存在寄存器中,而不再随数据总线上的数据变化而变化。其逻辑表达式为1)1(WRCSILELE由此可见,当ILE为1,CS和WR为0时,)1(LE为1,允许数据输入;而当1WR为1时,)1(LE为0,数据被锁存。能否进行D/A转换,除了取决于)1(LE外,还有赖于)2(LE。由图可见,当2WR和XFER均为低电平时,)2(LE为1,此时允许数据通过并进行D/A转换,否则当)2(LE为0时,将不允许数据通过。在与微处理器接口时,DAC0832可以采用双缓冲方式(两级输入锁存),也可以采用单缓冲方式(只用一级输入锁存,另一级始终直通),或者接成全直通的形式,再外加锁存器与微型计算机接口,因此,这种D/A转换器使用非常灵活方便。图2-33给出了DAC0832与8031单片机连接成单缓冲方式的接口电路。它主要应用于只有一路模拟输出,或有几路模拟量输出但不需要同步的场合。在这种接口方式下。二级寄存器的控制信号并接,即将1WR与2WR同时与8031的WR端口相接,CS和XFER相连接到P2.0,使DAC0832作为8031的一个外部I/O装置,口地址为#FEFFH。这样,8031对它进行一次写操作,输入数据便在控制信号的作用下,直接打入0832内部的DAC寄存器中锁存,并由D/A转换成输出电压。其相应的程序如下:……MOVDPTR,#0FEFFH;给出0832的地址MOVA,#DATA;欲输出的数据装入AMOVX@DPTR,A;数据装入0832并启动D/A转换图2-33DAC0832单缓冲接口电路如果需要二路以上的模拟量同步输出,则DAC0832必须按双缓冲方式连接,图2-34给出了DAC0832与8031单片机按这种方式连接的接口电路。按照图中连接,两片DAC0832输入寄存器的地址分别为FEFFH和FDFFH,两片0832的DAC寄存器地址都为FBFFH。设欲输出的数据置于R2,R3中,可编制相应的程序段如下:MOVDPTR,#0FEFFHMOVA,R2MOVX@DPTR,A;数据送1#0832输入寄存器24MOVDPTR,#0FDFFHMOVA,R3MOVX@DPTR,A;另一数据送2#0832输入寄存器MOVDPTR,#0FBFFHMOVX@DPTR,A;1#、2#D/A转换器同时输出2)12位D/A转换器DAC1208与微型计算机接口为了提高精度,有时需要用到10,12,16位等高精度D/A转换器。下面以DAC1208系列为例,说明十二位D/A转换器原理及接口技术。图2-34DAC0832双缓冲接口电路DAC1208系列是与12位微处理器兼容的双缓冲D/A转换器,它包括DAC1208,DAC1209,DAC1210等各种型号的产品。DAC1208系列带有两级缓冲器,第一级缓冲器由高8位输入寄存