基于FPGA的高速采集系统设计与实现
2008-05-29
作者:张东升1, 张东来1, 秦海亮1
摘 要: 给出了高速采集" title="高速采集">高速采集系统的实现架构及控制原理,并在分析数据采集系统现状的基础上,针对高速采集系统存在的采集和传输速度" title="传输速度">传输速度、资源利用不合理以及硬件成本偏高等问题,给出了一种共享总线、同步采集、分时读取的方法。实践表明,采用该方法提高了系统的采集和传输速度,实现了对多通道、高分辨率并行A/D" title="A/D">A/D同步采集的有效控制,节省了FPGA系统资源,降低了硬件成本。
关键词: 高速采集 FPGA 分时操作
工程应用中经常需要对一些具有长时间域、瞬变特征的信号进行检测,由于信号波形具有时域位置不确定等特点,特别在航天测控、故障诊断、定位等系统中,所以往往还需要同时对多个参数进行采集[1~3]。一般暂态过程中还有丰富的有用信息,能够为故障诊断、失效分析等提供有力的理论依据;连续大容量数据信息对于趋势预测、寿命诊断、检测以及系统参数估计和辨识具有重要的意义。因此,这对数据采集、存储和传输速度及精度提出了较高要求。由于一般处理器主频和资源的限制,无法达到高速数据采样、高分辨率、大数据量存储的目的;DSP等高性能处理器虽然可以满足一定场合的高速采集的需要,但过于频繁的中断使CPU效率降低,响应速度变差。
目前,一般采用CPLD 或FPGA直接控制A/D转换的方式达到高速采集的目的。但采用CPLD或FPGA控制A/D转换的很多应用中,同样存在一些问题,主要为一般都外挂数据缓冲区,降低了系统的传输速度,同时增加了硬件成本[4];另外对于高精度、多通道、并行转换A/D系统,使得接入FPGA的管脚数增多,这样造成FPGA等系统资源的严重浪费和成本的增加。本文给出了一种共享总线、同步采集、分时读取的方法,提高了系统采集和传输速度,达到对多通道、高分辨率并行A/D同步采集的有效控制,合理利用了FPGA系统资源,降低了硬件成本。
1 系统基本原理与设计
多通道同步高速采集系统结构如图1所示[5]。由图1可知,系统主要包括信号调理、A/D数据采集与控制、数据传输存储、EMIF总线接口、DSP部分以及PCI接口等。6路输入模拟信号经过信号调理电路后送入A/D转换器,数据经A/D控制单元存入FPGA内部缓冲区,由EMIF接口模块送至DSP外部存储区,最后经PCI总线上传给PCI104上位机。
1.1 基本原理
总线共享、同步采集、分时读取的方法主要是借鉴了分时操作系统的思想,按照时间片对A/D转换结果进行轮循读取。从图1可知,在硬件设计上,6路A/D转换器共享采样时钟信号" title="时钟信号">时钟信号adclk、读写控制信号adwr、片选信号adcs;AD1、AD3、AD5共享一路数据总线ADCD14~27,AD0、AD2、AD4共享另一路数据总线ADCD0~13;AD0、AD1共享输出使能信号ADOE0、AD2、AD3共享输出使能信号ADOE1,AD4、AD5共享输出使能信号ADOE2。6路A/D转换器共享采样时钟信号adclk、片选信号adcs保证了采样的同步问题,共享数据总线节约了FPGA管脚,合理利用FPGA资源,通过分别使能ADOE信号,在A/D转换完成后数据有效的时间内,分时读取转换结果,达到了并行采集的目的;不同数据总线的2路A/D转换器共享OE信号,保证在同一时间片内并行读取2路A/D转换结果。
1.2 A/D数据采集与控制
本文使用TI公司的THS1408 A/D转换芯片。THS1408具有14bit分辨率,最高采样速率达到8 MSPS,采用流水线结构,14位并行接口[6]。本文最高采样频率为5MHz,并行采集6路模拟电压或电流信号。A/D转换采样时序如图2所示,在CLK为高电平的半个时钟周期加上td(输出延时时间)的时间内,转换后的数据都是有效的。因此,在CLK为高电平的半个时钟周期内,读取转换结果是最稳定和可靠的。
图3为A/D采样结果读取时序,其中,为片选信号,低电平有效;为输出激活信号,低电平有效;D[13:0]为双向数据总线;A[1:0]为地址输入信号,可寻址四个地址,其中0地址存放转换结果,另外三个地址为控制、增益设定和偏移设定寄存器;tsu(OE-ACS)为地址以及片选建立时间,要求最小为4ns;ten为输出使能时间,最大为15ns;tdis为输出关断时间,典型值为10ns;th(A)为地址保持,最小为1ns;th(CS)为片选保持时间,最小为0ns。从图2和图3可以得出,完成A/D采样和读取控制的步骤如下:
(1)首先,为ADC提供采样时钟信号CLK;
(2)在CLK时钟信号上升沿,使片选信号有效,地址信号A[1:0]输出为0,使输出激活信号有效;
(3)至少延时tsu(OE-ACS)+ten=19ns;
(4)从数据总线D[13:0]读取转换结果;
(5)使片选信号无效,无效。
2 环形队列数据存储" title="数据存储">数据存储与控制
本文在FPGA内部采用环形队列结构,用于暂存采集数据,并采用乒乓方式切换数据存储区,提高数据传输和数据暂存的可靠性。定时触发DSP的EDMA(Enhanced Direct Memory Access)事件,通过EMIF(External Memory Interface)总线接口完成高速数据传输。环形队列内存要求较小,不易丢失数据,控制逻辑复杂,采用乒乓方式触发数据传输事件,保证了采样和传输的不间断进行。
3 FPGA的逻辑控制功能的实现
采用Xilinx Spartan-II E系列40万门FPGA完成逻辑控制功能,主要包括采集时钟处理、6路并行A/D采集与控制、数据存储与传输控制、与DSP的EMIF接口、EDMA事件触发控制等。
3.1 A/D控制模块
通过上面对A/D控制分析可以知道,在采样时钟CLK为高电平的半个时钟周期内,读取转换结果是可靠和稳定的,由于片选、地址建立时间以及输出激活时间的要求,在5MHz时钟信号的半个周期内,以共享总线方式可以控制三路A/D转换器,那么通过两路总线,就可以完成对六路并行数据的采集。图4为三路A/D转换器共享数据总线的控制时序图,采用ModelSim仿真工具完成。其中,adcclk为A/D采样时钟;inclk0为外接时钟,经过PLL输出main_clk作为系统的主时钟,时钟周期为10ns;adc_oe1、 adc_oe2、adc_oe3为三路A/D输出使能信号,通过分时有效的方法,读取各路A/D转换结果,每个时间片长度为30 ns;adc_cs为A/D片选信号,该信号建立需要一定时间,为实现多路A/D并行采样,将六路A/D片选信号连接在一起,一直有效;fpga_reset为FPGA复位信号。
3.2 环形数据存储模块
FPGA内部通过将双口RAM与地址控制器结合构成环形队列数据存储模块,数据存储器大小为16KB,每136.53μs触发一次DSP的EDMA事件,经过EMIF数据总线,将采集数据存储到DSP的外部存储器SDRAM中,当有异常发生时,通过PCI总线上传到PCI104存储介质中。图5为FPGA综合后的数据存储模块逻辑图,通过对地址模块和双口RAM的读写达到对数据的有效存储和传输。
4 实验数据与波形
图6为实测其中一路A/D控制的时序图,A路为A/D输出使能信号,在每个采样时钟的上升沿有效,有效时间为30ns;B路为5MHz采样时钟信号。图7为实际捕获的瞬变信号图形,图8为渐变信号变化的实测图形。由于系统具有较高的采样速率,高速的数据传输和大容量的数据存储能力,无论是对瞬态变化的信号,还是渐变信号的特征,都可以达到捕捉的目的。
系统采用FPGA实现逻辑控制、数据传输的功能,将数据缓冲部分在FPGA内部实现,提高了存储、读取速度,节省了硬件成本;采用分时操作系统思想,以共享总线的方式,完成对多路A/D同步采集的功能,合理利用了资源、节省了硬件成本。实践证明,该系统可以满足多通道高速采集、大数据存储的要求。
参考文献
1 曾祥君, 尹项根, 陈 浩等. 电力系统暂态过程同步记录的研究. 电力系统及其自动化学报, 2001;(1)
2 刘苏宜, 王国荣, 郭烈恩等. 一种基于ISA总线的高速数据采集系统的设计. 华南理工大学学报, 2004;(8)
3 王志华, 尹项根, 张小波等. 利用CVT捕捉电压行波实现故障测距的分析与实践. 电力系统自动化, 2004;(8)
4 林长青, 孙胜利. 基于FPGA的多路高速数据采集系统.电测与仪表, 2005;(5)
5 Zhang Donglai, Zhang Dongsheng, Zhang Jian et al. Data sampling system with high speed and high timing synchron-ization precision for power line fault position detection based on dual ports traveling wave distance measurement method. IEEE/PES T&D, 2005
6 THS1408datasheet. Texas Instruments Incorporated,2002