基于FPGA的信号采集模块设计与实现
设计了一种支持32路4-20mA电流信号采集的电路模块。模块包括电流信号处理电路、A/D转换电路、FPGA和PCI接口等电路,通过FPGA来实现控制和数据传输。并对驱动软件设计等做了详细描述。每个通道都可单独设置信号输入范围、增益、采样率、通道扫描顺序,可以通过定时中断实现32路电流信号的零相位差自动采集。实际测试结果表明,本设计使用简单,运行稳定可靠。
【关键词】A/D转换 FPGA CPCI
1 设计原理
本文通过精密电阻将电流信号转变为电压信号,通过4片A/D芯片AD7606来采集电压信号,A/D转换后的数字信号通过PCI总线传送到CPU中,功能主要由AD7606、FPGA、PCI9054等组成。
2 硬件设计
2.1 电流输入I/V换前置处理电路
通过取样电阻以把输入的4-20mA电流信号转换成为电压信号,此处选择500欧姆的精密,32路4-20mA电流环输入通过500欧姆的精密电阻转换为2~10V电压输入,在此精密电阻选择金属膜电阻,其温度稳定系数最高可以达到±5PPM/°C,可以根据实际成本控制情况选择精度范围。
2.2 A/D转换处理电路设计
A/D转换器件选用AD7602,AD7606的模拟输入阻抗为1MΩ抗混叠滤波器的3dB截止频率为22kHz;所有通道均能以200kSPS的速率进行采样,当采样速率为200kSPS时,它具有40dB抗混叠抑止特性。本设计采用4片AD7602并联工作可以同时对32路模拟信号进行采集.
2.3 PCI接口电路设计
设计中采用了从DMA数据传输操作逻辑,启动采样后,采用32位×64的FIFO作为数据采集前端与PCI总线的数据缓冲,PCI 9054作为主控设备,利用其DMA通道进行数据传输。FPGA用以实现PCI 9054与FIFO的I/O逻辑、传输控制逻辑、中断逻辑以及主机对数据采集通道的前端控制。
3 逻辑设计
FPGA作为本设计的核心工作,按功能分主要有控制寄存器、PCI Local-Bus 接口、FIFO和中断寄存器。PCI Local-Bus 接口和PCI9054芯片相连,负责PCI总线的数据通信。通过PCI Local Bus总线接收CPU的控制信息来配置控制寄存器。FIFO在FPGA内部实现,设置为32位×64的FIFO,默认FIFO中的半满中断向上相连,连接关系如图1所示。
4 驱动软件设计
本模块运行在VxWorks操作系统下,具体的驱动实现过程如下:首先对4个A/D芯片进行复位操作,然后配置4片A/D芯片的电压输入范围,通过RANGE来选择模拟输入范围,第三步开始A/D转换,将CONVST置低,查询四个A/D芯片的BUSY引脚的状态,此时控制寄存器控制A/D芯片的CS管脚和RD管脚来选通A/D芯片输出数据到FIFO芯片;控制寄存器控制FIFO的WR管脚将A/D转换后的数据锁存到FIFO中;FIFO中收到32路数据后会产生半满中断;中断提交到PCI9054芯片,PCI 9054获得局部总线的控制权后,将数据写入PCI总线存储空间,从而实现一次采样和传输。
5 调试与验证
本设计应用的系统测试的线性度要求为0.1%,这一目标直接决定了系统误差的控制。输入电流在满量程20mA电流输入时转换后的数字量为FFE8到FFFF之间,4mA输入电流的转换值为4000±10,线性度优于0.1%,系统的测量精度完成符合或优于设计要求。若在使用较低吞吐率、需要更高信噪比或者更宽动态范围的应用中,可以使用AD7606提供的二阶巴特沃兹滤波器后,上再加入数字滤波处理将可以进一步提高系统的精度,SNR性能也能得到更大改善。
6 结束语
系统严格按照工业标准设计,数据和控制信号隔离的设计方式提高了模块的转换精度,PCB板设计时也充分的考虑了电磁兼容性问题。软件中采用PCI9054DMA方式来传输数据,通过高精度的AD7606实现了16Bit的分辨率,在经长时间考核A/D转换数据精度可达0.1%。在6U的工控板上实现32路4-20电流信号的零相位差采集,集成度高,模块运行稳定可靠。整个设计结构紧凑,本设计已经在工业控制环境下多次应用,性能稳定,抗干扰能力强,并且适用于各种工业控制场合。
参考文献
[1]周启平,张杨.VxWorks下设备驱动程序及BSP开发指南[M].北京:中国电力出版社,2004.
[2]刘璞,王春平,徐艳 基于FPGA 的串口与链路口联合通信设计与实现[J].计算机测量与控制,2014.22(2),544-547.
作者单位
江苏自动化研究所 江苏省连云港市 222061