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

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

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

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

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所示。

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程序开发采用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]为读寄存器时序要求。

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正弦信号的局部采样结果.

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

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

欢迎与我们交流更多信息!

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

  1. python数据采集系统_基于python的聚焦网络爬虫数据采集系统设计与实现

    基于 python 的聚焦网络爬虫数据采集系统设计与实现 杨国志 ; 江业峰 [期刊名称] < <科学技术创新> > [年 ( 卷 ), 期] 2018(000)027 [摘要 ...

  2. 基于FPGA实现ADC7768数据采集系统设计(8路)

    一件事,只要愿意去做并且认真去做,总会发现其中的趣味和意义. 1 简介 针对特殊系统中对于一些微弱信号的采集和监测设计了一种基于大规模现场可编程逻辑器件(FPGA),采用AD7768芯片,实现32位高 ...

  3. Matlab与FPGA图像处理系列——基于FPGA的实时边缘检测系统设计,sobel边缘检测流水线实现

    注:下载链接的资源是图片存 ROM 后读取进行 Sobel 检测显示在 VGA上,可供参考. 摘要:本文设计了一种基于 FPGA 的实时边缘检测系统,使用OV5640 摄像头模块获取实时的视频图像数据 ...

  4. bh1750采集流程图_基于MSP430和CC2530的温室大棚数据采集系统设计

    农作物的生长受到自然条件的影响,如温湿度.二氧化碳浓度和光照等.随着计算机技术和无线传感网络的发展,用信息技术改造农业尤其是农业温室大棚是农业发展的必然阶段.温室环境检测是实现温室智能化控制的一个重要 ...

  5. 基于环境光照度和物体距离的数据采集系统设计

    视频演示链接:labview上位机和FPGA下位机的心得_哔哩哔哩_bilibili 目录 基于环境光照度和物体距离的数据采集系统设计 第1章 绪论 1.1课题目的与现状 第2章 硬件平台基本概述及编 ...

  6. 基于FPGA的实时图像边缘检测系统设计(上)

    今天给大侠带来基于FPGA的实时图像边缘检测系统设计,由于篇幅较长,分三篇.今天带来第一篇,上篇,话不多说,上货. 导读 随着科学技术的高速发展,FPGA在系统结构上为数字图像处理带来了新的契机.图像 ...

  7. 一、FPGA Cyclone Ⅳ OV5640图像实时采集系统设计

    一.FPGA Cyclone Ⅳ OV5640图像实时采集系统设计 1.系统框架 2.摄像头配置模块 3.图像数据拼接模块 4.SDRAM操作模块 5.乒乓缓存模块 6.VGA驱动模块 7.顶层模块 ...

  8. stm32中用到的实时系统_基于STM32的实时语音处理系统设计

    基于 STM32 的实时语音处理系统设计 [摘要]设计一个基于 STM32 的实时语音处理系统.硬件模块通过放大. 除杂完成将语音信号转换成处理器能够进行高效处理的有效数字信号, 软件部分 主要涉及到 ...

  9. 基于FPGA的通信显示系统设计

    一.系统介绍 本设计给出了一种基于FPGA的通信显示系统设计方法,采用EDA作为开发工具,QuartusII作为运行程序的平台,结合所学知识设计一个基于FPGA的通信显示系统设计,通过串口调试器发送图 ...

最新文章

  1. 16S+功能预测也能发Sciences:尸体降解过程中的微生物组
  2. centos php 局域网访问,CentOS8安装搭建php环境
  3. 原理竟然是这!2021年字节跳动74道高级程序员面试
  4. 科大星云诗社动态20210224
  5. python生成奇数列表_python3:列出一个不需要迭代的奇数列表
  6. 错误录入 算法_如何使用验证错误率确定算法输出之间的关系
  7. 磁盘性能分析一:IO负载高的判断详解
  8. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(1) - 概述 传输指令
  9. mimemultipart java_H5提交MIME类型为multipart/form-data类型的表单,后端如何处理(比如java,.NET)?...
  10. 计算机中加密文件找不见,文件夹保护3000找不到文件夹加密记录怎么办?
  11. 如何在Spring框架中使用RMI技术
  12. Java常用开发工具推荐
  13. cms网站模板php修改,帝国cms前台投稿模板修改
  14. urllib的使用1
  15. 今日恐慌与贪婪指数为15 恐慌程度较昨日持续下降
  16. jmeter-same user on each interation
  17. PowerDesigner菜单翻译
  18. 教你看懂Code128条形码
  19. 服务器pcie 3.0装固态硬盘,PCIe SSD怎么装系统?实操发现竟然这么简单!
  20. SketchUp模型组件【iMod · 精选244 —— 现代卧室SU模型】

热门文章

  1. 远程桌面提示RPC不可用
  2. .net 时间操作(datetime数据类型,datetime方法)
  3. ddbs mysql_ddbs简介
  4. 利用计算机提出算法分析问题,应用计算机计算不可积类型的积分算法分析
  5. treelistview 所有节点失去焦点_球天下-儿皇梦只是一厢情愿 皇马已失去对博格巴的兴趣...
  6. qdialog 只有点击才能获得焦点_张怡筠:怎么做,孩子才能真正爱上学习?
  7. 长沙android工程师,长沙安卓工程师辅导
  8. matlab两个曲线的名称怎么显示出来的,求MATLAB的高手,怎么把两张仿真曲线合并显示在一张图上?...
  9. linux composer使用php,记录linux下composer使用的坑爹过程
  10. pip 换清华源 更新所有库 windows