文章介绍了一种基于单片机89C51和FIFO的多路高速数据采集系统,给出了系统的总体设计方案,对各组成电路模块进行了详细的设计,用C语言编写了软件程序。 
  关键词89C51;FIFO;高速数据采集;A/D转换;信号调理 
  引言 
  数据采集是将被测的各种参量通过相应的传感器转换为模拟电信号,再将模拟电信号进行处理(放大或衰减),然后经过采样、量化、编码、数据预处理和传输等步骤,最后进行存储记录的过程,完成相应功能的系统称为数据采集系统。随着高速数字处理以及高速数据采集系统求的越来越高,现在的数据采集系统不仅求其具有较高的采样速率和足够宽的工作带宽,还有较高的精度以高其动态范围。 
  我们通过FIFO(First-In First-Out)实现了单片机对B-dot磁探针信号的高速采集。为了能够完成对B-dot磁探针信号的高速采集,并对采集到的大量数字信号进行缓存处理,作者采用TLE272、AD7899、IDT724、IDT71256和89C51单片机一起设计了一个多路高速数据采集系统,制定和设计完成相应的硬件及接口系统。 
  1 系统的整体设计 
  图1所示为一个三路高速数据采集系统结构框图。由图可知,该高速数据采集系统主包括信号调理电路、A/D转换电路(ADC)、FIFO、89C51、SRAM、485总线和上位机等部分。 
  图1 3路高速采集系统结构框图 
  ADC将采集到模拟信号实时转换为数字信号,以实现数字化采样。在基于89C51高速数据采集系统中,89C51往往不能适应ADC的工作速率,因为ADC总是在进行数据输出,如果由单片机直接读取A/D转换的数据,则系统的采样率会大大降低,所以在89C51和ADC之间增加了缓存器。常用的缓存器有RAM、SRAM等,但是若用它们作为缓存器,采集系统必须增加地址发生电路,SRAM还需总线仲裁电路,因而使器件多,时序复杂,可靠性不高。而FIFO恰好架起了ADC和89C51之间的一座桥梁。由ADC把采样转换值同步写入FIFO,每写入一块数据便向单片机发出一个信号,以醒单片机从FIFO中读取数据块。FIFO芯片数据进出有序、输入输出口独立,可作为输入缓冲使用,无需复杂的辅助电路,占用系统资源较少。 
  89C51通过总线、I/O口及少量外围电路控制ADC、FIFO、SRAM的操作;89C51通过485总线实现和上位机的通信。 
  2 硬件电路设计 
  2.1 信号调理电路 
  图2中的信号调理电路对B-dot磁探针信号进行调理,TLE272是低噪声高速JFET输入运算放大器,它的单位增益带宽可达1 MHz,电路中起到前置放大及阻抗变换的作用。一方面滤除干扰信号,另一方面使调理后的信号与ADC芯片的量程相匹配。 
  图2 信号调理电路 
  2.2 ADC、FIFO及单片机89C51的接口 
  为了满足高速数据采集系统分辨率、转换时间、采样率的求,A/D转换芯片采用的是Analog Device公司生产的AD7899,AD7899是快速、低功耗、高分辨率、14位逐次逼近(SAR)型ADC,转换时间为2.2μs,采样率为4ksps,满足B-dot磁探针信号实时、高精度采样的求。 
  FIFO作为连接ADC与单片机之间的关键器件,其参数的高低与数据采集的速度的快慢直接相关。FIFO的读写速度必须大于等于ADC的采样率,才能充分发挥ADC高采样率并保证不丢失数据,且在满足数据存储容量的求下,FIFO芯片采用IDT公司的IDT724,IDT724是4k×9位的可以实现先进、先出的异步读写操作的双端口存储器,具有数据进出有序、输入输出口独立的特点。灵活使用多片IDT724级联可以构成不同容量、不同宽度的缓存系统。本系统采用两片IDT724进行宽度扩展,三路模拟采集信号共需六片IDT724芯片。其中单路高速数据采集系统中,AD7899、IDT724及与89C51的接口设计如图3所示。 
  AD7899共有三种工作模式EOC模式、BUSY模式和连续转换模式。连续转换模式用于基于MCU的系统,即系统中A/D转换芯片和MCU是通过FIFO或DMA来接口的。本系统中AD7899采用外部时钟,CLKIN和CONVST脚连接在一起的连续转换模式。 
  AD7899的工作过程如下 
  (1)外部时钟信号CLKIN作为AD7899的转换启动控制信号; 
  (2)单片机的p1.1口控制AD7899的RD和CS,控制何时进行读操作; 
  (3)连续转换模式下,BUSY/EOC作为EOC输出。转换启动时,EOC置高;转换结束后EOC置低一个时钟周期,表示数据在D~D13处有效。 
  图3中包括FIFO扩展宽度电路连接图。这是由两片9位IDT724扩展宽度构成的14位存储模式,IDT724的具体特点如下 
  ●采用+5V电源供电,低功耗; 
  ●具有4k×9Bit的容量; 
  ●高速12ns的存取时间; 
  ●可异步同时读写; 
  ●能进行深度和宽度扩展; 
  ●具有“空、半满、满”标志; 
  ●可重复传输; 
  ●高性能CMOS技术。 
  IDT724片上的D~D8为9位数据输入线,不用的输入线应当接地;Q~Q8为9位三态数据输出线,不用的应当悬空。读写操作会自动访问存储器中的连续存储单元,从FIFO中读出的数据顺序与写入的顺序相同,地址的顺序在内部已经预先定义好。对芯片的读/写操作只由读/写信号控制,不需额外的地址信息。这就使得FIFO的控制电路变得十分简单。该芯片其它引脚的功能如下
  XI、XO扩展功能控制线,可在多个芯片级联构成更大容量的存储器时使用。本系统进行宽度扩展时,即将两片IDT724的FL/RT引脚接电源,XI接地。 
  RS复位引脚,每次上电后第一次写入数据之前,RS必须有一个持续时间大于12ns的低电平时复位(复位后读、写指针均指向存储器的首地址,存储器内容为空); 
  EF存储器空标志(低电平有效以表示存储器空。此时读操作将被禁止); 
  HF存储器半满标志(低电平有效,表示存储器已存储了一半); 
  FF存储器满标志(低电平有效,用于表示存储器满。此时写操作将被禁止); 
  R、W读、写控制线,低电平有效;扩展使用时可以将两片读写控制连在一起;读指针和写指针的相对位置为时,EF为低,存储器空并禁止读,而当该存储器为满容量时,FF为低并禁止写; 
  FL/RT该引脚具有两个功能。当多个芯片级联时,该脚接地表示当前的芯片为第一个芯片;而当芯片单独使用时,该脚则作为读指针的复位控制线。无论在任何时候,在此引脚输入一个低电平都可以使读从头开始。本系统没使用此管脚,而是通过一上拉电阻将其拉高。 
  本系统中,FIFO的RS、R、W信号均直接或间接的受单片机89C51控制,用两片IDT724扩展来完成对14数据的存储,因两片FIFO器件的状态完全一样,所以只判断两个片子中的任何一片标志位(EF、HF、FF即可,另外一片可悬空不用。因FIFO数据的接收方是8位的控制器89C51,采用两路读信号(IN4、IN5)分两次读14位A/D转换数据。 
  2.3 SRAM 
  SRAM采用IDT71256S35DB,IDT71256S35DB为静态大容量存储器,其容量为32Kbit×8,其读写存取时间为35ns。89C51通过地址和数据总线对IDT71256S35DB进行读、写操作,采用89C51的RD作为IDT71256S35DB的OE(读选通)信号,用WR作为IDT71256S35 
  DB的WE(写选通)信号,用A15作为IDT71256S35DB的片选信号。 
  3 软件部分 
  采用C语言编写软件系统,主包括主程序流程和中断程序流程,如图4所示。 
  图4系统主程序和中断程序流程图 
  主程序流程中,上电复位后进行初始化状态变量工作,当外部中断过来以后,跳出主程序去执行中断程序,中断返回后,再回到主程序执行采样数据从FIFO转存至SRAM,单片机进行数据处理,处理完毕结果通过485总线上传上位机。 
  中断程序主完成模拟信号的自动采集,控制ADC进行A/D转换,转换后的数据顺序写入FIFO,采集到求的次数后,开启转换结果数据转存,将FIFO中的数据转存至SRAM。 
  4 结束语 
  文章所介绍的高速数据采集系统采用89C51、AD7899、IDT724、IDT71256S35DB等器件,电路结构简单,性能可靠性高。不仅采样频率和精度都很高,而且可采样的模拟输入信号带宽也很宽,同时还拥有一定的缓存容量,可以满足多路高速数据采集的求。 
  参考文献 
  1张柯,钟和清,林福昌,等.基于DSP和FIFO的多路高速数据采集系统在PFN中的应用J.电测与仪表,26,43(492). 
  2陶海军,张一鸣,曾志辉.基于AD766的多通道数据采集系统设计J.工矿自动化,213,39(12). 
  3王达,杨铁梅.基于C851F4的多通道数据无线采集系统J.计量与测试技术,213,4(8). 
  4关守平,尤富强,高鑫.基于C851F4的多通道数据无线采集系统J.计量与测试技术,213,2(6). 
  5吴宝丽,陈健.基于FIFO与电平转换器的DSP高速ADC系统J.国外电子元器件,24(1).