首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于USB总线的车轮踏面擦伤数据传输系统设计

作者:郑千洪 王 黎 高晓蓉 来源:现代电子技术


  摘 要:针对车轮踏面擦伤采集的数据到PC机的传输问题,设计一种基于USB总线技术的数据通信系统。该系统利用FPGA实现采集数据流的收发时序,通过USB 2.0接口芯片CY7C68013与主机进行通信。详细介绍该数据传输系统的硬件结构、软件设计、USB芯片固件设计和工作流程,该数据传输系统相对于传统的PCI数据传输系统,具有简便灵活、支持热拔插技术,在便携式车轮踏面擦伤检测中可以广泛的运用。
  关键词:车轮踏面擦伤检测;数据传送;USB 2.0;FPGA
  中图分类号:TP391文献标识码:B
  文章编号:1004-373X(2008)22-125-03
  
  Design of Data Transmission System for Detection of Wheel Tread Based on USB
  ZHENG Qianhong,WANG Li,GAO Xiaorong
  (College of Sciences,Southwest Jiaotong University,Chengdu,610031,China)
  Abstract:In order to transmit the sampled data of the wheel tread abrade to the PC terminal,the data transmission system based on USB technology is designed in this article.The timing of the sampled data stream is controlled by FPGA which communicates with the PC terminal with the help of USB2.0 interface chip CY7C68013.In this article,the hardware structure of data transmission system,the software design,the working flow and firmware of the USB interface chip are systematically discussed.Compared to the traditional PCI bus transmitting system,this system is designed to support plug and play technology,thus it can be widely used in the portable detection for the wheel tread.
  Keywords:wheel tread abrade detection;data transmission;USB 2.0;FPGA
  
  1 引 言
  
  车轮作为机车车辆的重要部件,其车轮踏面故障的测量是铁路部门一直密切关注的课题,踏面的擦伤影响到机车运行安全性、平稳性和运营经济性等重要因素。目前,车轮踏面擦伤检测的数据传输大多是基于PCI接口技术的,安装不够方便、不支持热插拔,且价格较贵。本文介绍一种基于FPGA和USB 2.0踏面擦伤数据传输系统设计,通过构建FPGA时序控制传输模块来实现Cypress的CY7C68013芯片工作于从属FIFO模式,并通过USB芯片固件程序让该数据传输系统工作于块传输模式,从而实现采集数据到PC机的高速传输。
  2 EZ-USB FX2工作原理[1]
  EZ-USB FX2是USB 2.0协议的完全解决方案,兼容USB的4种数据传送模式: 块传输、中断传输、同步传输、控制传输。该系列芯片将增强型的8051单片机内核、智能USB接口引擎、USB收发模块、存储器及串行口等集成一起,一方面减少了芯片接口时序,通过地址和数据总线访问片外资源,另一方面能提供I2C总线接口、3组实现数据和地址访问的I/O接口。计算机与USB设备的数据通讯主要包括2个方面:读取采样数据、给USB设备发送控制命令。EZ-USB FX2提供多个端点来实现USB不同的传输方式。EZ-USB的串口实现了固件程序的下载。当EZ-USB FX2工作于从属FIFO模式时,外围电路可像普通FIFO一样对FX2中的端点缓冲区数据进行读写。
  
  3 硬件设计
  
  3.1 硬件系统结构设计框架
  数据传输的硬件电路框架如图1所示,该电路主要包括2个设计部分:FPGA时序控制模块;EZ-USB-FX2接口模块。FPGA时序控制模块主要负责处理从数据采集器采集的踏面擦伤数据的缓存,该模块包含3个独立模块:SDRAM数据存储模块、SDRAM读写控制器、FIFO控制器。采集的数据进入SDRAM存储器,在时钟频率控制下,SDRAM控制器控制SDRAM存储模块的读写,把数据传输到FIFO控制器侧,FIFO控制器接收到此数据后,对其进行缓存处理,并在FIFO时序状态下,传输数据到EZ-USB-FX2接口的从属FIFO模块。EZ-USB-FX2的SI收发器通过工作于Slave FIFO的USB模式,对数据进行传输,在USB数据枚举时,USB控制器的工作频率工作在40 MHz。PC 机端口收到从SI收发器串行传输过来的数据。从而完成采集数据的传输。
  
  3.2 FPGA Slave FIFO控制器设计
  采用FX2 的Slave FIFO模式传输数字信号,在这种模式下,FX2内部的增强型8051CPU不会参与数据的传输,它只负责对FX2内部寄存器进行配置以及响应相关设备请求和生成相关控制信号。从FPGA中的数字信号直接送到FX2内部端点FIFO中,同时PC机端可以从此FIFO中读取数据。采用这种方式可以最大限度地提高数据传输的吞吐量,这样可以实现大量数据传输的要求。本文设计的是基于同步的Slave FIFO传输模式,因此在FPGA侧设计了一个同步FIFO写控制器,采用的同步时钟为40 MHz。
  3.3 SDRAM的数据存储与控制传输
  SDRAM模块在该系统中主要是负责数据存储。数据的传输主要有2种模式:即传统的输入/输出端口模式,DMA传输模式。由于Slave FIFO控制器端是工作在40 MHz的频率下,本文采用在FPGA模块上进行DMA数据传输模式。这种传输的优势在于速度的极大提高,数据直接在CPU与外设设备之间进行。DMA传输的主要问题是DMAC控制器的配置,DMAC支持4种传输方式:内存到内存、内存到外设、外设到内存、外设到外设。而具体传输的数据的大小则是由 DMAC 或者外设来决定。这样,DMAC 有8种数据流传输和控制方式。本文采用的为外设到内存模式,如图2所示:
  
  在外设到内存传输,DMAC 控制传输大小,在这种传输类型下,若外设传输的数据大小始终只会是burst的倍数。本系统选用DMA通道0,写源地址到DMACCxSrcAddr寄存器,写目的地址到DMACCxDestAddr寄存器,通过控制信息寄存器DMACCxControl设置burst大小为16个字节类型。SDRAM的FIFO深度为32个字节。
  
  
  4 软件设计
  
  USB芯片要能完成与 PC 主机的通信,必须开发内部USB 芯片的固件程序,提供必要的设备描述符信息,响应主机的通信请求,并完成与 FPGA 的数据传输。FPGA 控制芯片的程序则完成与 USB 和SDRAM存储数据的传输。主机端,则必须有能够支持 USB 协议并控制传输的 USB 驱动程序。
  4.1 USB驱动程序设计
  对于USB设备来说,其WDM驱动程序分为USB底层(总线)驱动程序和USB功能(设备)驱动程序。USB内核模式驱动程序的分层体系结构如图3所示。
  
  USB驱动程序的具体工作过程:当应用程序想对USB设备进行I/O操作时,它需调用Windows API 函数,I/O管理器将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB功能驱动程序。USB功能驱动程序收到这个IRP后,根据IRP中包含的具体操作代码构造相应USB请求块(URB),并把此URB放到一个新的IRP中,然后把它传递给USB底层驱动程序。USB底层驱动程序根据IRP中所包含的URB执行相应的操作,并把操作的结果返回给USB功能驱动程序。USB功能驱动程序接收到此返回的IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP操作结果传回给应用程序,至此应用程序对设备的1次I/O操作完成。
  4.2 Fx2固件程序设计
  图4[2]是Fx2固件程序的开发流程,在这一过程中,主要的是初始化实现,中断使能函数实现,USB事件句柄函数的设置实现。
  Cypress公司为CY68013提供了一个开放框架,可以在Keil C51环境下开发,故采用此框架来进行Fx2固件程序设计。该固件程序主要涉及PERIPH.C实例化。该文件负责和周边器件的互联。通过该文件的实例化,来实现需求的功能。在该文件中,主要涉及以下几个函数:
  (1) TD_Init函数:负责对USB端点进行初始化设置。本系统中将端点2设置为512个字节,缓存深度为4级,模式设为自动输入方式。
  (2) TD_Poll函数:负责系统中循环任务的处理。负责对各个端点的状态进行查询,处理各种OUT或IN端点的交互。
  (3) DR_VendorCmnd函数:负责用户自定义命令的译码工作,用户请求通过端点0传输给内核。通过CY7C68013上的SIE,查询固定地址单元即可获得当前的命令代码。
  
  4.3 数据传输结果调试分析
  由于最后对数据进行处理是在Matlab软件中进行,所以数据存储格式要求可以被Matlab识别。踏面检测的原始数据通过A/D转化成数字信号,如图5所示(只采用4路加速度信号)。通过USB传输到PC机端的采集数据在Matlab工作区间的显示如图6所示,通过对比发现:在数据的吞吐量为3 Mb/s左右的时候,数据的量化阶数误差为10-3,而再通过4路D/A信号转换,可以精确的实现数据的高速传输。
  
  
  5 结 语
  
  该数据传输系统硬件上采用EZ-USB-FX2接口模块,由于系统易受到外界干扰,所以加强软硬件滤波和抗干扰等设计十分重要,故可以在FPGA 开发板上进行相应的硬件滤波和抗干扰等模块设计,这可使系统的准确度进一步提高。
  
  参考文献
  [1]钱峰.EZ-USB Fx2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006.
  [2]王成儒.USB 2.0原理与工程开发[M].长沙:国防工业出版社,2004.
  [3]张树春,刘成安.基于USB总线的FPGA与PC机接口通信的实现[J].微计算机信息,2005,21(4):202-203.
  [4]范雅林.运行车辆轮踏面缺陷的自动检测[J].铁道运营技术,2000(6):114-117.
  [5]皮颖,冯其波,膝永平,等.车轮踏面擦伤动态测量系统的动力学分析及计算机仿真[J].北方交通大学学报,2001(6):73-76.
  [6]罗玉平,陈海涛,施业斌.基于FPGA的USB 2.0控制器设计[J].电子技术应用,2002(12):53-56.
  [7]祁欣.检测车轮表面缺陷超声波探头[J].传感器技术,1998(6):45-47.
  [8]李景泉.刘继.车轮踏面擦伤自动检测方法的研究和试验.同济大学学报:自然科学版,2003,31(4):473-476.
  [9]邬紫珊.运用客车轮对踏面擦伤故障分析.铁道车辆,2002(2):43-44.
  [10]陈秀玲,周欣.基于USB接口和FPGA控制的数据采集系统的设计.微型电脑应用,2003,19(12):23-26.