DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 130|回复: 0
打印 上一主题 下一主题

基于FPGA多通道同步数据采集系统设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 15:12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 引言
  数据采集在工业测控领域里有广泛的应用,它已成为计算机测控系统的一个重要的环节,尤其在设备故障监测系统中,由于各种设备的结构复杂,运动形式多种多样,发生故障的可能部位很难确定,因此我们需要从设备的各个部位来提取大量的、连续的数据作为设备状态的信息,以此来分析、判断设备是否存在故障,这就需要高速、高性能的数据采集系统来保证采集到的数据的实时性;同时,我们需要对同一设备的不同位置的信号进行同步采集,并借助一些手段来提取特征(例如绘制轴心轨迹图)以判断设备的运行状态。传统的数据采集系统设计中,通常采用单片机或DSP作为主控制器来控制ADC、存储器及其他相关的外围电路来工作。随着可再生能源应用的日益增多,以此建立的分布式发电系统也逐渐增加。为了更好地对分布式电源进行控制,通常需要对多个模拟信号进行实时数据采集,同时为了保证数据的一致性,必须同时对数据进行采样[1-2]。常用的数据采集方案往往以单片机为控制核心,控制A/D(模数转换器)对多路信号进行采集及处理,但由于单片机本身的指令周期以及处理速度的影响,难以达到对多通道高速数据实时采集的要求;并且单片机控制的各种功能模块要靠软件的运行来实现,软件运行时间在整个采样时间中占很大的比例,对并行的多路高速数据采集的速度和效率较低;而FPGA在高速数据采集方面相比单片机具有较好的优势,全部控制逻辑由硬件来完成,适合对时序要求严格的多路高速实时数据采集系统[3]。

  1 系统结构图
  分布式电源通常通过并网逆变器接入电网,为了实现对分布式发电的灵活控制,需要采集电网侧的电压电流信号、分布式电源逆变器侧的电压电流信号以及逆变器直流母线侧的电压和电流。采集系统整体结构如图1所示。主要包括电压电流互感器、强电隔离电路、模拟信号处理电路、模数转换(A/D)电路、A/D控制电路、FFT运算电路、频率测量电路、三相PLL相位锁定电路、双口RAM控制模块以及CPU对FPGA控制的逻辑控制模块等[4]。




  设计的采集系统主要采用Altera公司的FPGA(Cyclone II EP2C20Q240)来实现[6]。在FPGA内部,集成了大部分的控制模块,主要有A/D转换控制模块、双口RAM控制模块、频率测量模块及FFT运算模块等,采集到的数据存储到外部的双口RAM中,以便与CPU共享数据。
  2 系统模块设计
  2.1 模拟信号处理电路
  模拟信号处理电路如图2所示,主要处理传感器输出的模拟信号,并送入A/D模块。电阻R1的阻值选择10 kΩ,可以减少整个电路对干扰的敏感性;电容C1可以减少高频干扰电流的差模和共模的干扰,为了使信号不产生延时,电容值一般选取100 pF以下;为了使整个电路有很强的抗共模干扰能力,在运算放大器的同相输入端接2R2的电阻以使整个电路保持较好的对称性;输入端的2个分裂电阻之间接篏位二极管以对整个电路保护,防止突然的过电压,篏位二极管应该选择具有低反向电流的快速二极管,在本设计中选用安捷伦的HSMS2702。
  2.2 A/D转换控制模块
  A/D转换电路采用德州仪器(TI)公司生产的ADS7864[5],该芯片是高速6通道全差分输入双12位A/D转换器,内部含有2个500 kHz采样速率的逐次逼近模数转换器,可以同时进行采样和转换,2个模数转换器分别对应三路输入通道(第一个模数转换器对应的通道为A0、B0、C0,第二个模数转换器对应的通道为A1、B1、C1),芯片含有三路差分采样/保持放大器和一个多路模拟开关。六路通道被分为三对,各由HOLDA、HOLDB、HOLDC三个信号控制为采样或保持模式,输入信号在进入采样保持电路之前经过全差分电路运算,使其在500 kHz采样率的情况下仍能保持高达80 dB的共模抑制比,对于高噪声环境下输入噪声的抑制起到了非常重要的作用。
                          
                       
                          
                               
  ADS7864有三种读出模式,设计中通过CPU设置FPGA中的寄存器来确定采取何种模式,这样CPU可以根据实际需要单独地对某一路信号进行采样。在此设置为循环模式,在第一个读信号RD到来时读取通道A0的数据,第二个读信号RD到来时读取通道A1的数据,随后是B0、Bl、C0和C1, A/D转换时序图如图3所示,每个读操作将使ADS7864输出16位信息,其中D15用于表明读出数据是否有效(“1”有效),D14、D13、D12 用于表示所读出数据的通道,D0~D11为该通道采样结果数据。



  根据系统要求,采用3片6通道的ADS7864构成A/D转换电路,FPGA和A/D的硬件接口如图4所示。通过FPGA进行同步控制,实现对18路输入信号的同步快速采样。本系统将被测的三相电压分别接至A0、B0、C0;三相电流分别接至A1、B1、C1;通过对HOLDA、HOLDB、HOLDC三个信号同时置低电平,实现三相电压、电流的同步采样,采样转换后的值被保存在6个寄存器中。



                          
                       
                          
                               



  根据ADS7864的时序图,在FPGA芯片EP2C20Q240中采用状态机来设计A/D转换控制模块,在Quartus II 7.2中进行了仿真,数据读取方式为循环模式,仿真结果如图5所示。




  2.3 频率测量模块
  在频率测量模块中,首先对电压信号进行滤波和整形,经过比较器后得到一个方波信号,输出的方波信号作为频率测量模块的输入信号。常用的频率测量方法有直接测频法、测周期法和等精度测频法。直接测频法的基本原理是在单位时间T内对被测脉冲信号进行计数,若脉冲数为N,被测信号的频率为f=N/T;测周法是用被测信号作为测量时间闸门,在被测脉冲的一个周期内,对周期为T的标准信号进行计数,得到的计数值为N,则所测信号的频率为f=1/(T×N)。但是这两种方法都会产生±1的误差,直接测频法侧重于高频应用,而测周法侧重于低频应用。本文采用等精度测频法,等精度频率测量方法是在直接测频方法基础上发展而来的,它的实际闸门时间是不固定的,而是被测信号周期的整数倍,故与被测信号同步,因此又称为多周期同步法。此方法消除了对被测信号计数时产生的±1个数字误差,测量精度大大提高,而且实现了在整个测量期间的等精度测量,具有精度高及在测量过程中精度保持恒定的特点,且不随被测号变化而变化。等精度测频法的基本原理如图6所示。



                          
                       
                          
                               

  2.4 双口RAM控制模块

  在本设计中,应用FPGA采集多路数据,还需要把采集到的部分数据上传到CPU,同时CPU也会和FPGA交换数据,因此FPGA和CPU之间首先要解决两者之间的通信方式。常用的数据交换主要有串行通信、并行通信、直接存储器存取、共享存储器等方式。串行通信方式是利用处理器本身提供的串行口或者在芯片的基础上用软件或硬件开发一个串行口实现处理器之间的通信。这种方式相对来说比较简单,适合处理器之间通信量不是很大或者较远距离传输的场合。并行数据传输技术是提高数据传输率的重要手段,但是,由于并行传送方式的前提是用同一时序传输信号和接收信号,而过分提升时钟频率将难以让数据传送的时序与时钟合拍,布线长度稍有差异,数据就会以与时钟不同的时序送达,导致传输错误,同时提升时钟频率还容易引起信号线间的相互干扰,因此,并行方式难以实现高速化。直接存储器存取是一种完全由硬件执行数据交换的工作方式,在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存与设备之间进行;DMA方式一般用于高速地传送成组的数据,但是两个处理器不能同时访问存储器。共享存储器的方式通常采用双口RAM来实现,双口RAM是一种性能优越的快速通信器件,它提供两套完全独立的端口,每个端口都有完整的地址、数据和控制线,此时两个处理器可以同时访问双口RAM,具有很快的存取速度,可以实现高速的数据交换。
  本设计中采用共享存储器的方式,选用一片CY7C026,是一个16 KB×16的双口静态RAM,硬件接口结构框图如图7所示,使用FPGA分配片选、读/写和BUSY信号,防止FPGA和DSP同时对同一地址空间存取造成的冲突。



?
  2.5 双端口RAM的应用    
  利用传统方法设计的高速数据采集系统由于集成度低、电路复杂,高速运行电路干扰大,电路可靠性低,难以满足高速数据采集工作的要求。应用FPGA可以把数据采集电路中的数据缓存、控制时序逻辑、地址译码、总线接口等电路全部集成进一片芯片中,高集成性增强了系统的稳定性,为高速数据采集提供了理想的解决方案。
  2.6 逻辑控制模块

  DSP通过逻辑控制模块向FPGA发一些指令,同时读取FPGA的状态;系统中把FPGA看做DSP的一个外设,使用DSP的XZCS0AND1作为FPGA的片选信号,这样,CPU既可以向FPGA发送命令,也可以从FPGA中读一些状态。
  在Quartus II 7.2软件平台中包括一个专用模块库,称之为IP Core,其中的各种硬件功能模块都是经过EDA厂商周密设计并且通过验证的。设计中FFT运算模块采用Altera公司自带的FFT IP Core来实现,在FPGA中以硬件逻辑实现FFT运算的功能,简化设计并提高了系统的可靠性。
  本文设计了一种多路数据同步实时采集系统,应用FPGA控制采集系统的各个模块,其最大的特点是结构灵活,有较强的通用性,适于模块化设计,适合于实时信号处理,从而能够提高整个系统的采集和处理效率。分析了各个子模块的硬件结构框图和控制实现方法。实际应用表明,采用该方法设计的系统能有效地完成多路同步实时数据采集任务。
?
?
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-29 14:49 , 耗时 0.088335 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表