基于FPGA的一种新型8通道数据采集系统
扫描二维码
随时随地手机看文章
本文针对应用于伺服控制系统的8通道数据采集方案进行设计,依靠FPGA硬件完成数据采集时序控制以及数据的预处理过程,将处理后的数据输送给CPU,使CPU有足够的资源完成伺服算法。由于FPGA运行速度快,能够保证数据采集的实时性和准确性。
系统硬件设计如图1所示。
1 硬件电路设计
1.1 A/D转换电路设计
本设计采用MAXIM公司的8通道MAX1300芯片。该A/D转换芯片最大可支持115 kS/s采样速率,以及最大±12 V单端电压输入以及±24 V差分电压输入,同时由于其比普通A/D转换芯片具有更高的精度(16位数据输出),而且体积小、使用方便、适合使用在各项指标严格的伺服系统中。图2为MAX1300硬件设计图。
MAX1300外围电路较其他A/D芯片更为简单,支持三种总线方式与CPU连接:SPI方式、QSPI方式、MICROWIRE方式。图2中MAX1300与FPGA连接只使用了CS、DIN、SCLK、DOUT四个引脚,不占用数据总线,这在一定程度上节约了电路板面积,减少了硬件电路设计的难度。CH0~CH7为模拟电压输入通道,AVDD1~2为模拟电压端,DVDD为数字电压端,AGND1~AGND3为模拟地,DGND与DGNDO为数字地。DVDDO为IO口电压,根据MAX1300连接器件IO电压不同,DVDDO选择不同电压值,支持范围2.7~5.25 V,FPGA选用ALTERA公司CYCLONE系列EP1C6Q240C6,IO电压为3.3 V,所以DVDDO接3.3 V电压。REF和REFCAP为参考电压输入接口,器件内部有4.096 V电压参考,使用内部电压参考时,REF与REFCAP分别接1 μF和0.1 μF电容接地。MAX1300支持三种采样模式:external clock mode、external acquisition mode和 internal clock mode,其中external clock mode支持到最高采样速率115 kS/s,该模式下SSTRB引脚闲置,可以悬空。
CS引脚为片选引脚,芯片所有输入输出操作只有在CS为低电平时才有效。DIN引脚为MAX1300数据输入引脚,用于对芯片进行相应配置(工作时钟方式,电压范围)。DOUT为数据输出,用于输出转换后的数字信号。SCLK为时钟输入引脚。进行采集时,DIN引脚在CS变低后的第一个高电平认为是数据的起始位,随后数据选择采集通道,数据在每个SCLK时钟的上升沿进入MAX1300。从第16个时钟开始,转换后的数据在每个SCLK的下降沿经DOUT引脚输出。
1.2 CPU硬件电路设计
此系统主要应用为伺服控制,CPU选用TI公司控制类专用DSP芯片TMS32028335。TMS32028335为新型浮点运算CPU,支持最高150 MHz工作频率,较之以往的MCU或控制类DSP芯片具有显著优势。其硬件设计如图3所示。
鉴于MAX1300经FPGA后输出为8路16位数据,因此CPU只使用D15~D0共16位数据线以及A2~A0共3位地址线(经FPGA内部译码为8路地址)。CS为TMS32028335外部接口片选信号,无操作时保持为高电平,当对外部地址操作时,CS变低。RD为外部接口读使能信号,WR为外部接口写使能信号,均在对外部地址操作时变低。VDD为TMS32028335内核电压要求为标准1.9 V,VDDIO为IO电压,3.3 V,与FPGA的IO接口电压保持一致。WR信号变低时,TMS32028335将通道地址和MAX1300配置数据写入FPGA,同时启动MAX1300进行数据采集。RD信号变低时,表示DSP从FPGA读取采集完毕的数据。
TMS32028335需要完成伺服系统主要的伺服算法工作,其根据算法需要,在适当时刻通过FPGA启动MAX1300,CS变低,WR变低,数据线和地址线信息写入FPGA,启动MAX1300采集数据。当采集工作完成后,对数据进行读取,CS变低,RD变低,从FPGA读取数据进行处理,完成伺服算法。
2 FPGA时序控制
MAX1300正常工作需要32个工作时钟,而普通MCU或DSP芯片SPI通信端口最大支持16个工作时钟,使用起来很不方便,因此实际工作中采用FPGA控制MAX1300的工作时序及数据采集,DSP读取MAX1300采集并经FPGA处理后的数据。FPGA内部时序设计如图4所示。
如图4所示,FPGA时序设计主要由数据发送模块TRANSMIT、数据接收模块RECEIVE、数据处理模块PROCESS、A/D采集控制模块AD_CONTROL以及存储FIFO组成。
实际采集中,AD_CONTROL模块按DSP要求控制MAX1300时序工作。需要采集数据时,START信号变低后(START连接DSP的WR信号),AD_CONTROL读取TMS32028335数据线和地址线信息(地址线选择MAX1300采集通道,数据线加载MAX1300配置数据),并将相应数据AD_DATA写入TRANSMIT模块(配置MAX1300,选择采集通道)。随后ADCS信号变低,同时SCLK时钟开始工作,TRANSMIT模块在SCLK时钟作用下将数据由ADOUT引脚按位输出。在采集数据之前先对MAX1300进行配置,选择电压范围以及时钟工作模式。随后AD_CONTROL连续输出32个工作时钟,在前16个时钟选择数据采集通道,后16个时钟接收MAX1300输出数据。AD_CONTROL模块根据地址线高低电平产生通道选择信号CHANNEL,同时产生内部FIFO工作时钟FIFOCLK,控制存储FIFO的读写。
从第17个工作时钟开始,在每个时钟的下降沿MAX1300输出A/D转换后的数据。数据接收模块RECEIVE在SCLK时钟作用下对数据接收。接收机制采用通用UART设计机理,用16倍SCLK的时钟RDCLK对每位数据进行16次采样。若高电平采样次数超过10次,则认为为“1”,否则为“0”。当16位数据接收完毕时,模块将其转换为并行数据输送给数据处理模块PROCESS。
MAX1300工作时序如图5所示。
为了防止A/D数据采集过程中由于外界因素产生各种干扰(如尖峰干扰),采用类似于中值滤波的处理方法。设计中添加PROCESS模块对数据进行处理。采集数据时,每个通道数据采样10组,每组采样3次。将每一组的中值取出后求其平均值,作为此次采样数据的值。这样在一定程度上去除了外界因素对结果的影响,也为CPU进行下一步滤波减轻了负担。PROCESS模块对数据处理后,FIFOCS信号不变低,根据AD_CONTROL给出的CHANNEL信号,在FIFOCLK时钟作用下将数据写入对应的FIFO中,每路数据对应一个FIFO模块。
PROCESS模块处理后的数据存储在相应FIFO中,TMS32028335在适当时刻进行读取。读取数据时, CS和RD信号变低,FPGA根据地址线A2~A0,内部通过译码产生RDCS1、RDCS2等信号(内部译码部分图5中未标出),从相应FIFO读取相应通道的采集数据。
本文提出一种新型8通道数据采集系统,适合应用在高精度伺服控制系统中。详细介绍了A/D转换模块和CPU硬件设计电路,采用FPGA完成整个电路时序控制工作。同时,在FPGA内部设置数据预处理模块,对所采集数据进行前置处理,减轻CPU负担,加大其数据处理的能力。经实际工作测试,该设计很好地完成8通道、16位数据采集处理工作,达到系统指标要求。
参考文献
[1] ASHENDEN P J. VHDL设计指南[M]. 北京:机械工业出版社,2005.
[2] Altera Corporation. Cyclone Device Handbook,Volume 1, 2008,5.
[3] 韩西宁,许晖,焦留芳.基于FPGA的同步数据采集处理系统的设计与实现[J]. 电子技术应用, 2009,35(1): 89-91.