基于FPGA多路A/D自动采集采集系统设计
摘要:在以往AD采集中,通过微控制器控制A/D芯片复杂的逻辑,不仅增加了微控制器干预,从而影响处理器运行速度,同时由于微控制器不断介入A/D控制会影响程序正常运行。本文概述了基于FPGA的多路数据自动采集系统的设计和实现过程。该系统采用高速A/D转换器将多路模拟信号转换成数字信号,以FPGA为控制核心产生各种控制时序,控制A/D和模拟量开关切换,并对转换结果进行数据读取保存在双口RAM中,通过试验验证表明该系统工作稳定,能够实现对多路采集信号实时采集处理,检测效果良好。 关键词:FPGA A/D转换 自动采集
Design of automatic acquisition and acquisition system based on FPGA multi A/D
Abstract: In the past, A/D acquisition through the micro controller to control the complexity of the A/D chip logic. That not only increased the micro controller intervention, so that affecting the operating speed of the processor, but also affected the normal operation of the program when the micro controller continuous intervention the A/D conversion. This paper Summary the design and implementation of high speed multi channel data acquisition system based on FPGA, The system uses high speed A/D converter to convert multiple analog signals into digital signals. The FPGA is used as control core to generate various control timing, which is used to control A/D and analog switch, at the same time, the data that is converted is stored in dual port RAM. Through the experiment, the system is proved to can stably real-time process for multi-channel signal acquired system, and the examination effect is good. Key words: A/D FPGA Automatic Acquisition 1 引言
在高速多路数据采集系统中,通常采用数字信号处理器DSP或单片机作为微控制器,控制模数转换器AD及其他外围设备的工作。但是基于微控制器的高速多路数据采集系统都有一定的不足。由于微控制器基于顺序语言的,各种功能都要靠软件的运行来实现,因此随着程序量的增加,如果程序的健壮性不好,会出现“程序跑飞”和“复位”现象。在A/D转换过程中,通过微控制器控制A/D芯片复杂的逻辑,不仅增加了微控制器干预,从而影响处理器运行速
度,同时由于微控制器不断介入A/D控制会影响程序正常运行。因而微控制器很难满足高速多路数据采集系统对实时性和同步性的要求。
FPGA时钟频率高,内部延时小,运行速度快,全部控制逻辑由硬件完成。它本身集采样控制、处理、缓存、传输控制、通信于一个芯片内,编程配置灵活、开发周期短、系统简单,具有高集成度、体积小、低功耗、I/O 端口多、在系统编程等优点。在高速多路数据采集系统中,FPGA可以克服上述微控制器的不足之处,满足系统对实时性和同步性的要求。本文给出一种基于FPGA 的高速多路数据采集系统设计方案。 2 系统总体设计 2.1 系统组成
基于FPGA的采集控制模块主要由多路择开关,有源滤波器,A/D转换器和FPGA组成,其中A/D自动采集控制逻辑和双口存储电路在FPGA内部实现。系统的组成框架如图。
+5V其他模拟信号输入多路选择AD芯片状态指示信号CPU数据总线FPGALBE总线AD控制信号图1 系统组成框图
2.2 系统工作原理
当复位信号后,时钟产生启动信号,FPGA向采样开关发出选通信号,选定模拟开关采样,第0路模拟量进入,经A/D转换后并存储于双口RAM 中,AD转换芯片反馈给FPGA内控制电路并告知转换完毕,FPGA 内控制电路再选通下1路模拟量进入,重复上述过程。FPGA轮回控制模拟量开关通道导通,当模拟量开关导通后,进行A/D自动转换并存储。而双口RAM数据永远存放的是每个通道最新A/D最新转换值,外部CPU可以通过数据总线读取双口RAM最新值,其中双口RAM 具有2组独立的数据、地址和控制总线,可对任何一个端口进行独立的操作。若未采用双口RAM,FPGA采取中断方式对CPU传输数据时,CPU就会停止当前工作而去处理外部请求,当处理完外部事件后
再回到原来被中止处,继续原来的工作,这样会影响CPU的速度。因此引入双口RAM存储FPGA传送来的数据,然后CPU再从双口RAM中读数,从而提高效率。本数据采集系统采用基于FPGA双口RAM、CPU等实现数据运行处理和控制功能,使系统的通信和处理能力大大加强,保证了系统的实时性,可以灵活地通过多种方式控制数据读写。A/D自动转换原理图如图2所示。
FPGA左数据总线双端口存储器右数据总线控制信号BUSY信号AD转换控制信号AD转换器AD自动转换逻辑MUXA[0..3]16选1多路转换开关MUXA[4..7]16选1多路转换开关16选1多路转换开关16选1多路转换开关多路模拟输入 16路模拟输入16路模拟输入16路模拟输入 图2 A/D自动转换原理图 2.3 系统硬件设计
系统采用模拟电源为±15V,数字电源为+5V直流电源供电,内部将+5V电压转换为+3.3V和+1.2V电压以供各器件使用。所有输入的模拟信号范围都是-10V~+10V,输入阻抗大于1MΩ,同时也对输入进行了适当的滤波处理处理。 2.4 多路模拟开关
数据采集模块选用的多路模拟选择开关是ADG506,它是一款单芯片CMOS16通道模拟多路复用器,采用28引脚表贴封装。它根据4条地址线和1个使能的状态,将1路公共输出切换至16路输入之一。使能端EN决定着ADG506的工作状态,当使能端管脚有高电平时,表示该模拟量正常工作,而
EN为低电平时ADG506处于非工作状态。它的输出通道号的选择则由其4位地地址位来决定。可以通过FPGA控制多片ADG506芯片进行周期片选采集n路模拟信号。在本设计中16路采集信号分别通过1片ADG506多通道选择开关把信号送入A/D转换器。由FPGA控制多通道选择开关的控制信号,包括使能信号EN和4位地址信号。当使能信号有效时,根据4位地址控制信号来选择要输出的通道,从而使ADG506能对16路模拟输入信号进行周期性选择。
图3 ADG506真值表
2.5 A/D转换电路
在数据采集系统中,A/D转换芯片的作用是把模拟信号转换成数字信号。它的性能参数直接影响整个系统的性能,本系统的采集控制模块中选用的A/D转换器是AD公司生产的AD7656,内部具有6个独立的AD转换器,一款内置采样保持放大器的16位ADC,兼具高速性能和低功耗特性,转换时间为4μs,输入模拟电压范围为-10V~+10V。片内时钟振荡器为各转换级提供适当的时序,无需任何外部时钟。数据接口读取可以通过高速并行接口和串行接口,
AD7656分别包括6个AD转换器,将所有三个CONVST引脚(CONVST_A CONVST_B CONVST_B连在一起)便可对六个ADC进行同步采样,AD7656需由CONVSTM脉冲启动转换;CONVSTM脉冲应包括一个CONVST下降沿,随后为一个CONVST上升沿。CONVST上升沿对所选的ADC启动同步转换,AD7656各内置一个片内振动器用于转换,转换时间为4μs BUSY 信号变为低电平表示转换结束。BUSY信号下降沿用来让采样保持放大器进入跟踪模式。
分别向三个CONVST引脚发出脉冲信号,AD7656还可以实现六个AD转换器的成对同步转换,本文采用将三个CONVST引脚连在一起,实现6路ADC同步采集,在16位模式下启动所有6个AD转换器转换时,需要进行6次读取操作来读取6路转换结果。
图4 AD7656并行接口工作时序图
2.6 FPGA控制电路
本设计采用Xilinx公司的FPGA芯片XC3S400AN对AD7656进行采样控制,并将数据存储到双口RAM 中。Xilinx公司的Spartan-3AN系列现场可编程逻辑阵列具有丰富的I/O端口,因此对外围设备的控制全部可以通过单独的I/O 端口进行控制,没有端口复用的现象,极大地提高了系统的采集速度。
系统中ADG506的通道选择I/O直接由FPGA的输出端口PORT[3:0]控制,当使能信号有效时,通道选择CONVST控制AD启动转换。通过控制CS和RD信号读取转换结果,FPGA控制电路如图5所示。
D[0]~D[15]CONVSTCSRDBUSYFPGAENAD7656A0A1A2A3AD506 图5 FPGA控制电路路