基于FPGA的同步数据采集处理系统的设计与实现
2009-05-14
作者:韩西宁, 许 晖, 焦留芳
摘 要: 针对目前多通道数据采集系统的局限,以EP1K50系列的FPGA为核心控制模块, AD7656为模数转化芯片实现了精度为16位、最大采集速率为250 kS/s的同步模拟信号采集系统,采用Flash存储采集到的数据,且可以通过PC104总线将数据传输到上位机。给出了系统的电路设计、关键模块逻辑图以及软件流程图。
关键词: 同步数据采集; AD7656; 现场可编程门阵列
数据采集系统是工业控制等测控系统中不可或缺的组成部分,是影响测控系统精度等性能指标的关键因素之一。常用数据采集方案是以微处理器为核心控制多个通道的信号采集、预处理、存储和传输,即用软件实现数据的采集,这在一定程度上限制了数据采集的速度、效率及时序控制的精确性,同时一般的数据采集系统没有数据处理模块,不便于在某些环境下工作。本文研究的数据采集系统应用在某特定型号IC设备上,系统要求完成对6路信号的高速高精度同步采集,以满足大约1h采集数据的存储以及传输。鉴于FPGA功能强大、逻辑速度快、电路设计简单、便于开发等优点,故采用FPGA为核心来控制ADC和Flash。
1系统总体设计
本文设计的数据采集处理系统可分为A/D转换部分、数据存储处理部分以及整个电路的控制部分,如图1所示。其中控制部分为最重要的环节。
该系统可以实现数据的采集、存储以及传输功能。系统通过PC104总线接到上位机时,上位机通过PC104总线给控制元件FPGA开始采集的命令,FPGA先将Flash存储器复位,再给A/D转换器开始采集数据的命令,可将最多6路的同步最大频率不超过250 kS/s的信号进行A/D转换,采集到的数字信号经过FPGA的处理后存储到Flash存储器中。当采集完成时,将存储器内的数据通过PC104总线传输到上位机,便于处理、回访和保存。整个采集、存储和传输过程由FPGA控制完成。
2 主要元器件
数据采集芯片采用ADI公司的AD7656, AD7656为6通道16-bit逐次逼近型、低功耗、最大采集速率为250 kS/s的A/D转换芯片[1]。FPGA选用Altera公司的EP1K50系列[2]。存储元件NAND Flash采用AMD公司的AM29LV256M。
3 电路设计方案
电路的设计方案包括FPGA外部电路的设计、FPGA的内部程序设计以及电路电源的设计等。FPGA的外部电路主要是与ADC、Flash、PC104总线的连接。
3.1 电路整体设计图
AD7656在并行接口状态下,基于FPGA的外围电路连接,如图2所示。
其中的DVCC和AVCC分别是数字电压端和模拟电压端,它们在接入前要经过1个如图2所示的去耦电路,每个供电电压输入引脚都要连接1个去耦电路,该电路由1只10 μF和1只100 nF的电容器组成。VDD、VSS和VDRIVE同样要连接去耦电路。当PC104总线提供的外部时钟信号SYSCLK经过分频后加到AD7656和FPGA上,在启动数据采集之前,先初始化。启动6通道同步采集,采集到的数据进入FPGA的FIFO缓存器,经过FPGA的处理。通过模拟的频率、写控制信号等,将数据存入NOR Flash进行暂存,当PC104总线启动读命令时,便可以将 Flash中的数据经过FPGA读入上位机内。
3.2 FPGA的设计
EP1K50QC208是ACEX1K系列的FPGA,可定义管脚124个。FPGA采用全局频率20 MHz,其需要定义的主要控制端口如表1所示。
FPGA的设计分全局控制和局部控制。全局控制主要是FPGA接收来自PC104总线的各种信号,包括时钟信号、读写信号等进行全局控制,系统是由晶振器提供给FPGA一个20 MHz的频率,在FPGA内部经过分频使用;局部控制包括ADC、Flash、PC104总线3个单元的控制。
3.2.1 FPGA对ADC控制的设计
FPGA对ADC的控制电路连接如图3所示。通过程序启动AD7656的CONVSTA/B/C和BUSY,当BUSY为1时,ADC开始进行数据采集。经过3μs完成一次数据采集后,BUSY为0,依次读取6个通道上的数据,将数据通过IO_D0~IO_D15读入FPGA的FIFO缓存器。
3.2.2 FPGA与Flash连接设计
设计中要将AM29LV256的管脚BYTE置为1,选用16位的模式。如图4所示,当FIFO完成一次存储,程序就检查RY/BY,如RY/BY=1,启动CE片使能、WE写使能,将数据写入Flash中,写入一次,地址逐次递增。地址由Flash进行分配。当上位机要求读取Flash中某一地址段的数据时,启动OE使能,读时序产生器用于产生读Flash时的时序,由于读Flash的时序是固定的,只有地址是变化的,所以它接收地址产生器输出的地址,产生相应的读时序。读时序由状态机来控制,每次读完一页后复位,继续读下一页。数据读到尾时,整个读状态控制器复位,重新从数据的头开始读。将数据先读入FPGA中,进行编码,再通过FPGA定义的端口,经PC104总线存入上位机。
3.2.3 FPGA与PC104总线的连接
FPGA与PC104总线的连接如图5所示,SD[0...15]为16位双向数据总线,SA[1...23]为地址总线,IOR和IOW为I/O读写信号,XAEN 是允许DMA控制地址总线、数据总线和读写命令线进行DMA传输以及对存储器和I/O设备的读写。PC104总线有严格的时序标准,在总线操作过程中,FPGA必须设计正确、标准的时序逻辑。PCI04总线的中断请求信号IRQ=HINT取“非”,因为PC104设置为上升沿中断。外部I/0准备好信号IORDY在地址选通有效过程中接HPI口的HRDY信号,地址选通无效时置为高阻态。
EP1K50QC208芯片所需要的2.5 V和3.3 V电源由外部的5 V电压经过电源电路获得,电源电路设计如图6所示。
FPGA要实现对整个电路的控制,必须通过VHDL语言编写程序[4]。程序设计的流程图如图7所示。
本文提出了一种基于FPGA控制的6通道同步数据采集处理系统。详细说明了电路、FPGA与ADC、Flash以及PC104总线连接及逻辑设计。经过测试和仿真,该采集系统各通道高速数据流能够正确采集和存储,工作稳定,达到了设计期望的6通道、16位有效数位的同步数据采集。
参考文献
[1] Analog Devices.250 ks/s, 6-Channel, simultaneous sampling, bipolar 16-/14-/12-Bit D7656/AD7657/AD7658 data sheet. 2006.
[2] Altera. ACEX 1K programmable logic device family data sheet.2001.
[3] 周润京,图雅,张丽敏.基于Quartus Ⅱ的FPGA/CPLD数字系统设计实例[M].北京:电子工业出版社,2007.
[4] 王诚,吴继华,范丽珍,等. Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005.