《武汉工程大学学报》  2016年06期 588-593   出版日期:2016-12-15   ISSN:1674-2869   CN:42-1779/TQ
基于SoCFPGA同步数据采集系统的设计


1 引 言电能是当代社会最为依赖的能源,电能的应用深入到生活中的方方面面,由于电力电子技术的飞速发展,在现代社会中,一些大功率变流、变频装置等在电力系统中被广泛地应用,变频、变流这些装置对电网造成非常严重的谐波污染,导致电能质量下降,进而会影响到一些高精度自动化仪表的工作特性. 因此,开展对电能质量的监测十分重要,同时电能质量问题也是影响电力系统运行和国民经济发展的关键因素. 多通道数据采集作为一种计算机从外部实时获取并处理信息的方法,其重要性不言而喻[1]. 现有的数据采集方案往往以DSP或单片机作为控制器,用来控制存储器、ADC(模/数转换器)和其他的外围电路的工作. 但是由于单片机受到自身的指令周期以及处理速度的限制,还未能达到多通道高速数据采集系统的要求,DSP相对于单片机,能够实现更高速的数据采集,但是在速度提高的同时,会使得系统的成本相应提高. DSP和单片机的各种功能要依靠软件的运行来实现,且执行的效率和速度往往不高,软件的运行时间占用了很大一部分的采样时间[2]. 在现有的研究基础上,设计了一种基于SoCFPGA的同步数据采集系统,FPGA在高速数据采集方面比单片机和DSP要更有优势,其执行速度快,内部的延时小,控制逻辑均由硬件编程语言来实现,片内时钟的频率高,开发效率高. 通过仿真验证了数据采集系统的可行性,可以应用于高速实时数据采集等领域. 2 系统原理为了满足质量检测的需要,对电能质量的关键指标加以研究,以Altera公司的SoCFPGA芯片为开发平台,进行硬件和软件的设计,实现电能质量分析仪的研制. 系统中电压、电流互感器用来采集电网三相电压和三相电流数据,经过调理电路后输送到AD芯片进行模数转换. SoCFPGA的FPGA子系统主要用来控制AD芯片进行模数转换并对AD转换结果进行FFT运算,将AD转换结果和FFT分析结果送入SoCFPGA的ARM子系统,电能质量的相关参数:三相电压电流有效值,功率因数,三相电压电流不平衡度等的计算及电压瞬变、闪变、谐波分析均在SoCFPGA的ARM子系统中完成[3-4]. 系统可以对测量数据与分析结果进行本地存储. 系统的测量结果利用MTL2触摸屏可进行本地显示及回放. 通过配备的以太网接口,与远程服务器进行通讯,可以实现数据的上传与远端保存. 本文主要研究的是对获取的三相电压电流进行AD转换以及FFT部分,整体的系统原理框图如图1所示. 3 数据采集系统硬件介绍 3.1 SoCFPGA介绍在数据采集部分中将被测量的电压、电流数据先分别通过电压、电流互感器进行采集,然后经过信号调理电路如差分信号放大等将数据送到AD芯片中进行模/数转换. 对于数据采集部分,必须配以一个高速、高精度的CPU(本文中为SoCFPGA的FPGA子模块),使其具备实时事务处理能力和数据处理能力[5],本系统中用到的SoCFPGA器件在同一个器件中同时集成了处理器和FPGA体系结构,将两种技术合并起来,系统具有更高的集成度,更低的功耗,节省了电路板面积,其中的双核ARM Cortex-A9处理器子系统与FPGA子系统之间通信的带宽大大增加. FPGA子系统能够高速完成数字信号处理算法及FFT运算、电压闪变计算等任务,对于6路的LVDS信号采集、调理、滤波、整合可以用FPGA子系统进行并行处理,大大加速了系统的进程[6]. 通过大吞吐量数据通路(AXI),实现ARM Cortex-A9 MPCore处理器系统和FPGA的互联,峰值带宽超过100 Gbps,保证了数据传输的连续性,与其他应用处理器相比,功耗大大降低,提高了系统的性能[7]. 3.2 ADS8364芯片简介本系统选用的A/D转换芯片型号为TI公司的ADS8364芯片. ADS8364是TI公司生产的一款6通道同步采样的模数转换器,具有高速、低功耗的特点,采用的是+5 V供电,而且带有80 dB共模抑制的全差分输入通道、6个独立的模数转换器,符合本文多路数据采集系统的需要. ADS8364对数据进行转换的结果是16位,由BYTE、ADD和地址线A2、A1、A0的组合控制来分别设置为直接读取方式、循环读取方式以及FIFO方式[8]. 模拟与数字逻辑电源均采用+5 V供电,数字接口缓冲电源采用3 V~5 V,使其能够方便地与FPGA进行接口设计. ADS8364工作时序图如图2所示. 3.3 数据采集系统设计原理将ADS8364与SoCFPGA的FPGA子系统相连,AD转换的控制信号由FPGA子系统给出,同时,ADS8364工作所需的时钟信号也由FPGA给出,这样可以灵活地改变时钟速率,以便在不同的速率下进行调整,便于FPGA做整体的时序控制. 在模/数转换过程中,FPGA子系统通过对启动转换控制引脚,时钟引脚等的控制来进行AD转换. 当ADS8364的HOLDX保持至少20 ns的低电平时,开始进行AD转换. 当转换结束后,转换结果将被存入输出寄存器,在ADS8364芯片的[EOC]引脚会产生一个低电平信号,此低电平信号会触发FPGA选通AD芯片的片选信号,同时访问AD模块预先设定的地址空间,并读取AD转换后寄存器里的数据[9-12]. 将RD和CS引脚设置为低电平可以让数据通过并行输出总线读出. 在读取数据后,FPGA在下一次数据采集过程之前,完成对数据的处理. 数据采集模块的硬件结构图如图3所示. 4 数据采集系统软件设计及仿真 4.1 系统软件设计在Altera公司的Quartus II13.0软件平台下,使用VHDL硬件描述语言进行逻辑描述,根据ADS8364的工作原理及工作时序分析,把整个工作流程分为START、READ0、CONVERT、READ1、READ2、READ3六个工作状态,各个状态之间的转换关系及在EDA工具中进行编译与仿真的ADS8364控制时序图分别如图4、图5所示. 对比图5和图2可以看出FPGA子系统实现了对ADS8364的正确控制,仿真结果基本与ADS8364的工作时序相符. 4.2 谐波分析 谐波分析的核心是FFT(快速傅里叶变换),将AD转换产生的数字信号由时域变换到频域,为后期的谐波分析做准备,对检测到的一个周期的谐波信号进行傅里叶变换,得到各次谐波的相位和幅值. 采用FFT对量化后的被测信号进行处理,获得基波和各次谐波的电压,从而计算出失真度,失真度的计算公式为 [γ=P-P1P1=U22+U23+...+U2nU1×100%] (1)式(1)中:[γ]为失真度;P为信号的总功率;P1为基波信号的功率;U1为基波电压的有效值;U2~Un为谐波电压的有效值. FFT运算器采用FFT MegaCore实现. 本系统用到Altera公司Cyclone V系列5CSEMA5,该芯片能够完全支持FFT MegaCore,能有效提高FFT部分的开发效率,缩短工程开发周期[13-15]. 为了尽量减少转换时间,将FFT处理器设置成四输出引擎结构,算法用到了基-4FFT算法,I/O数据流结构设置为Buffered Burst,采样点数设置为512点,能够占用更小的内存资源. 设计中只需对FFT IP核进行配置以及数据输入和结果读取. 4.3 FFT仿真在MATLAB中产生用于测试的输入数据,将其写入到. mif文件中,对数据的实部和虚部信息进行保存,用作测试数据,输入数据信息如图6所示. 在Quartus II 13.0软件中对FFT IP核进行配置,并且添加两个ROM分别存储输入数据的实部和虚部. FPGA用来对输入数据做FFT运算. FFT部分在Modelsim中的仿真结果如图7所示,FPGA对输入数据的实部虚部信息进行了存储. MATLAB对FFT运算后的数据分析如图8所示. 通过对比图6和图8,可以看出:FPGA实现了512点的FFT运算. 5 结 语笔者设计的SoCFPGA的同步数据采集系统,实现了SoCFPGA对ADS8364的控制,同时也实现了512点的FFT运算. 选用SoCFPGA作为控制器件,充分发挥ADS8364芯片的高速、高精度的特点,使得集成化程度大大提高,数据采集硬件更加简单,控制更加灵活,另外,FPGA编程方式灵活,软件工具强大,可缩短系统的开发周期,提高工作效率. 因此,本系统可用于高速实时数据采集系统等领域.