基于W5300和FPGA的实时数据采集系统设计

Home / 博客 / 基于W5300和FPGA的实时数据采集系统设计

(以下文章来自:http://xilinx.eetrend.com/article/4032)

数据采集是信号处理的前提,大量采样数据的实时传输十分重要。以太网由于传输速度快、传输距离远,可以方便地实现系统的远程控制。采用微控制单元和硬件协议控制芯片实现数据的网络传输在硬件构架上比较简单,容易实现且成本较低。

本文基于硬件以太网协议芯片W5300和FPGA,设计并实现了一套可以与远程上位机进行实时通信的数据采集系统,可实现对信号的高速采集和实时数据传输。

1 数据采集系统组成结构
数据采集系统采用模块化设计,主要由电源模块、A/D模块、控制模块和网络模块组成,组成框图如图1所示。

FPGA-W5300-1

2 数据采集系统的设计与实现

2.1 硬件设计

2.1.1 控制模块
本系统中控制模块采用Xilinx公司Spartan-3系列XC3S400[2]作为主控芯片,系统时钟为50 MHz。该器件丰富的I/O管脚可以完全满足系统需要且价格便宜。剩余的管脚用于控制三态缓冲芯片74HC245,可连接红外感应器等器件作为信号采集的触发信号。控制模块主要完成A/D模块时序生成、网口模块初始化和读写时序及与上位机的实时数据通信。

2.1.2 A/D模块
A/D模块采用ADI公司的AD7357,该芯片为差分输入、双通道、4.2 MS/s、14位SAR型ADC[3]。为实现差分驱动,采用低失真差分ADC驱动器AD8138实现信号的单端转差分放大。该芯片可产生两个幅值相等、相位相差180°且以共模电压为中心的差分信号同时驱动ADC的VIN+和VIN-管脚[4]。共模电压由AD7357内部2.048 V基准电压通过分压提供。首先通过高精度、低噪声、低温漂运算放大器AD8628对REFA/B管脚的基准电压进行缓冲,以提高驱动能力。A/D采样电路如图2所示。

FPGA-W5300-2

2.1.3 网络模块
为实现采样数据的实时传输并与上位机进行实时通信,选用Winzet公司的硬件以太网协议芯片W5300搭建网络模块。该芯片内部集成10/100 M以太网控制器、MAC和TCP/IP协议栈,支持8个独立端口同时连接,通信速率最高可达到80 Mb/s;与主机接口支持8/16 bit数据总线,支持2种主机接口模式;内部有128 KB TX/RX存储器,可根据端口通信数据吞吐量动态调整其分配[5]。

由于AD7357为14位SAR型ADC,故将BIT16EN管脚拉高,采用16 bit数据总线模式;地址总线采用直接地址模式;同时将W5300芯片的管脚TEST-MODE[3:0]接地,选择内部PHY模式;OP-MODE[2:0]接地,选择全功能自动握手模式;RJ-45接头选用集成网络变压器的13F-60。网络模块电路如图3所示。

FPGA-W5300-3

2.2 软件设计
由于W5300不支持上电复位,故系统上电后首先通过延时产生5 ?滋s低电平复位信号。为使W5300锁相环逻辑稳定,复位信号恢复高电平后继续等待20 ms。复位结束后系统对W5300进行初始化,包括主机接口设置、网络信息设置和内部TX/RX存储器的分配[5]。

本系统中利用状态机依次对MAC地址、子网掩码、本机IP地址、本机端口号等8个寄存器进行配置,其余寄存器采用默认配置。初始化结束后系统打开端口0,并设置为服务器模式,选用TCP/IP协议传输,进入监听状态,当检测到上位机的握手命令时建立连接。

建立连接后,查询W5300接收寄存器是否有来自上位机的数据。如果有,则接收数据,处理完毕后继续查询;如果没有,则系统检测是否有外部触发信号或上位机命令,当检测到时,A/D模块开始工作,通过调整A/D模块的工作时钟可实现采样率0.5 MS/s~4 MS/s的变化。为实现数据的连续传输,在FPGA内部建立二级FIFO缓冲。在数据采集过程中,如果收到上位机结束命令或者网络异常中断,则W5300关闭端口,然后重新打开进行监听,等待下一次连接。整个程序的流程图如图4所示。

FPGA-W5300-4

FPGA程序开发采用Verilog语言[6],在集成开发环境ISE13.2下进行调试和编译,通过JTAG接口将程序下载到FPGA器件中。程序的主要功能是完成对W5300寄存器的读写控制、FIFO缓冲的读写控制、TCP传输协议的实现以及AD7357采样时序的生成。由于实时传输数据量较大,各模块对时序要求非常严格,若时序不正常,则会导致数据的错误或丢失。以W5300的读寄存器时序为例,必须满足的几个要求是:芯片使能信号CS拉低时间大于65 ns,且再次拉低间隔时间大于28 ns;读使能信号RD拉低时间大于65 ns;读使能信号拉高后数据保持时间tD小于7 ns。为满足此时序要求,在该模块中,系统时钟采用50 MHz,一个时钟周期为20 ns,利用状态机产生读时序,一个读寄存器周期为120 ns,即6个时钟周期。图5[5]为读寄存器时序要求。

FPGA-W5300-5

 2.3 整体电路实现
在进行电路设计时,需要将模拟供电与数字供电分开,且模拟地与数字地隔离或用磁珠相连,以降低数字电路和模拟电路之间的干扰;将网口模块RXIP/RXIN、TXOP/TXON信号对按差分信号布线,长度一致且尽量靠近[7];信号输入采用同轴接头,为缩小体积,元器件全部采用缩小体积表面封装。

3 测试结果
程序下载完毕后,首先利用ISE自带的Chipscope软件观察各模块时序是否满足要求。调试正常后,选用安捷伦公司的波形发生器输出50 Hz~1 MHz正弦信号和方波信号,峰峰值为1 V。通过简易的上位机软件控制网络的连接和断开、数据采集的开始和结束及采样数据的存储。随后利用Matlab进行数据的分析处理,绘制时域波形和频谱分析。经过反复测试,系统正常工作时可实现两路A/D以1.5 MS/s采样率对50 Hz~750 kHz信号的准确采样和稳定传输。图6为750 kHz正弦信号的局部采样结果. 

FPGA-W5300-6

本系统利用W5300搭建网络模块,实现了A/D采样数据的实时传输。若接入以太网,则可实现系统的远程控制。实验结果表明,系统工作稳定。目前,本系统已应用于某型号测速雷达,代替了以往的PCI采集卡,降低了设备成本,提高了设备的通用性。为了进一步提高系统性能,可加入外挂RAM代替FPGA内部FIFO,同时W5300采用DMA模式传输可进一步提高传输速率,最高可达80 Mb/s。在此前提下,可选用有效位数更多、采样率更高的A/D芯片,以拓宽系统的适用范围。

作者:白佳俊1,孟祥勇2,张德平1,冯 起1,袁乃昌1 来源:电子技术应用2013年第4期

 

更多信息与我们交流:

WIZnet邮箱:[email protected]

WIZnet中文主页:http://www.iwiznet.cn

WIZnet企业微博:http://e.weibo.com/wiznet2012