"); //-->
基于FPGA的多路模拟量、数字量采集与处理系统
在电气测控系统中,常常需要采集各种模拟量信号、数字量信号,并对它们进行相应的处理。一般情况
下,测控系统中用普通MCU(如51、196等单片机或控制型DSP)是可以完成系统任务的。但当系统中要采
集的信号量特别多时(特别是各种信号量、状态量),仅仅靠用普通MCU的资源就往往难以完成任务。此
时,一般只能采取多MCU联机处理模式,或者靠其它芯片扩展系统资源来完成系统的监测任务。这样做不
仅增加了大量的外部电路和系统成本,而且大大增加了系统的复杂性,因而系统的可靠性就会受一定的
影响,这显然不是设计者所愿意看到的。本文所提出的一种基于FPGA技术的模拟量、数字量采集与处理
系统,利用FPGA的I/O端口多,且可以自由编程支配、定义其功能的特点,配以VHDL编写的FPGA内部执行
软件,能很好地解决采集的信号路数多的问题。因为用VHDL编写的执行软件内部对各组数字量是按并行
处理的,而且FPGA硬件的速度是ns级的,这是当前任何MCU都难以达到的速度,因此本系统比其它系统更
能实时地、快速地监测信号量的变化。所以在状态量特别多的监测系统中,本系统将更能发挥出自身的
优势。
本系统中的外围电路设计相对简单、可靠,且鉴于FPGA和VHDL语言自身的特点,系统具有较好的扩展性
,在监测和控制系统中也具有一定的通用性。系统主要包括:FPGA芯片区、多路选择与A/D采样电路、交
流信号调理电路、光耦隔离驱动电路、时钟电源区、PROM代码下载电路等几部分。结构示意如图1所示。
图1 基于FPGA技术的多路模拟量、数字量采集与处理系统框图
1 FPGA芯片特点分析及资源分配
本系统中的FPGA是采用Xilinx公司的Spantan-II系理XC2S100-5 PQ208。该系列的内核采用2.5V供电,工
作频率最高可达200 MHz;I/O端口供电电压为3.3V,可以承受5V的输入高电平。
Spartan-II系列具有丰富的I/O口资源,I/O口输出缓冲器呆以接收高达24mA的拉电流和48mA的灌电流。
缺省时,I/O输出口的驱动能力的12mA,也可以设置成2、4、6、8、16或24mA。
FPGA内部资源划分为四大部分,如图2所示。
①FPGA逻辑运算中心。用来接收其它各部分的数据,并按照程序中设定的方案对所收到的数据进行相应
的分析和处理。包括:对从MCU接收来的数据指令进行分析,并按其指令要求进行相应操作;接收A/D采
样来的数据,对数据进行各种处理,如求其有效值,进行FFT分析等;接收来自数字量的各种信息数据,
按设定的模式对其进行判断处理,并负责按接收的CPU指令输出相应的数字量。
②A/D控制单元。主要负责控制外部A/D芯片和多路开关的选通时序,以及实现对A/D采要过程的合理控制
。因为,在FPGA芯片内部,不像在MCU内部那样有丰富的外设控制资源供用户使用,要用FPGA来控制A/D
采样过程的动作,必须用软件来模拟实现各种A/D控制资源。利用这些自设定的A/D控制管理资源,配以
合理的软件控制时序,才能保证采样过程的顺利进行。
③数字量监测控制单元。负责所有要监视和控制的数字量的状态数据的采集和控制命令的输出。这一部
分同样也需要用软件来模拟实现各种对数字量的管理控制,只有配备较完备的外设控制管理单元,整个
数字量的管理控制才能正确合理地进行。
④FPGA接口逻辑控制单元。在FPGA内部设计了FPGA模块与外界MCU的接口单元,这虽然占去了一定的内部
资源,但是考虑到在一般的工程系统中不仅仅包括对各种信息的采集控制,还往往包括通信、显示以及
进行一些复杂算术运行等等。FPGA虽然有其显著的长处,但是在这些方面实现起来就往往不如普通MCU来
得容易,因此考虑到本系统的通用性,在设计上增加了FPGA模块与外界MCU的接口单元。
图2 FPGA内部资源分配示意图
2 交流模拟量采集的控制与管理
在交流模拟量采集外围电路中,A/D芯片采用的是BB公司的ADS774。多路交流量是通过4051的多路开关后
输入到ADS774芯片的。交流信号在进入ADS774之前要经过信号调量电路,调理成ADS774认可的模拟信号
。
FPGA实现的交流量采样处理控制软件由五部分组成:
第一部分为设定的3个与A/D采样有关的16位指令寄存器组:A/D参数寄存器(ADPR)、输出控制寄存器(
ADOR)、A/D控制寄存器(ADCR)。
ADPR(XXXXXXXXX XXXXX XX)的各位定义如下:位1、位0选择每周波采样的点数(00表示每周波采16个
点,01表示每周波采32个点,10表示每周波采64个点,11表示每周波采128个点)。位6~位2用来表示
FPGA的时钟频率,00001表示时钟频率为1MHz,11111表示时钟频率为31MHz,00000表示时钟频率为32MHz
。位15~位7表示所采样信号的频率,这9位表示的范围为1Hz~512Hz。
ADOR是与FPGA输出有关的寄存器。该寄存器的作用是:当MCU要读取某通道信号的信息时,FPGA应该输出
该信号的哪次谐波电压。如为FFFFH,表示DSP读到的是该通道信号的有效值;如果ADOR的值为0010H,那
么,DSP读到的是该通道信号的2次谐波电压。
ADCR寄存器控制A/D采样的通道数的选择以及与A/D采样有关的寄存器的复位控制等,这也是考虑到系统
的通用性而设计的:如000C表示采样第11路交流模拟量电压;0011则表示同时采样前六路信号等等。
第二部分为设计产生A/D与CD4051芯片的控制信号。如在图2中,在采样12路交流模拟量的情况下,FPGA
需要产生7路控制信号,这7路控制信号应该满足一定的时序要求。图3给出了同时采样前六路信号时FPGA
的控制信号时序。
Abcs2[0,1,2]总线信号实际上是多路开关通道选择的3个控制信号selA、selB、selC。需要说明的是,因
为要进行修正,在对6路交流信号采样的同时,也对4051的+5V和AGND进行了采样,所以实际上测量的通
道数为8路。
从图3可看出,abcs2[0,1,2]总线信号每19.531 25μs加1,每156.25μs重新循环一次,满足8路交流同
步采样的要求。
从25μs时刻的局部放大图可以看出,当(23.6μs时刻)4051选择通道1时,ADS774的CS和R/C信号同时
为低,延时0.5μs左右CE端出现上升沿(24.1μs),启动A/D转换,这符合ADS774的A/D转换时序。需要
指出,如果CE端直接接高电平,那么,R/C的下降沿将直接启动A/D转换。之所以用两个信号来启动A/D转
换,是为了减少A/D的误触发。考虑到4051的导通延时,所以在通道切换0,5μs后才启动A/D转换。图3
中没有画出4051的INH信号,在采样前6路交流信号时,该信号一直为低。如果同时采样12路信号,那么
,abcs2[0,1,2]总线信号每9.765 625μs加1,每78.125μs重新循环1次;INH信号每78.125μs电平变化
1次,用来选择哪个4051导通。
第三部分为A/D输入数据缓冲区和数字滤波模块。A/D转换完成后,ADS774的引脚STS给FPGA输出转换完成
信号(低电平)。FPGA接收这一信号后,将产生读ADS774的时序,把12位的A/D转换数据读入到数据缓冲
区的二维数组datain(abcv)(sampn)中。Abcv为通道号,sampn表示周波信号中所采样的第几个点。将
一个周期的12路信号采样完后,置标志ADFLAG为1,进行数据的滤波处理。首先,对datain(abcv)
(sampn)的值进行修正;给定sampn,对前6路信号来说,datain(7)(sampn)存储的是AGND的A/D转换值,
将datain(i)(sampn)减去datain(7)(sampn)的值存储在datamid(i)(sampn)中(i=1,…,6)。与此类
似,后六路的采样值datain(i)(sampn)减去datain(15)(sampn)的值存储在datamid(i)(sampn)
(i=8,…,14)。然后,给定abcv,对datamid(abcv)(j)(j=0,…,15)这16个点的数据进行FIR滤波,将
FIR滤波后的数据存储在datamd(abcv)(sampn)数组中。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。