1 引言
自动测试系统ATS(AutomaticTestSystem)集成测试所需的全部激励与测量设备,计算机高效完成各种模式的激励及响应信号的采集、存储与分析,对被测单元进行自动状态监测、性能测试和故障诊断。总线是ATS的重要组成部分,是计算机与测试硬件内部及外设传递信息的公共通路,其性能参数直接影响ATS整体的功能实现和性能指标。
通用串行总线USB(Universal Serial Bus)主要用于PC与外围USB设备互联。其物理连接是一种分层的菊花链结构,最多支持5 Hub层及127个外设。该结构独立性强。抗干扰性强、传输速率高、占用资源有限、使用灵活、支持热插拔,因此USB技术逐渐成为现代ATS数据传输的发展趋势。
这里通过Cypress公司的USB单片机CY7C68013A的PE和GPIF接口实现计算机与测试控制器件FPGA和缓冲FIFO的高速数据通信,完成ATS测试指令信号和数据的下载,自检和反馈数据的上传功能,实现测试技术的智能化。重点从USB硬件和固件代码设计阐述在测试系统数据传输过程中 USB技术的应用。
2 USB接口通信工作流程
USB具有灵活的1二作流程,如图1所示。
图1中,USB设备的工作流程从设备连接→上电→复位→分配地址→配置操作→执行固件代码,6大工作状态,这些状态在USB主机的控制下实现状态间的转换和总线的访问。USB设备随时根据总线活动情况判断是否进入或退出挂起状态,节省USB系统的功耗。
从图1分析可知,USB通信包括USB系统应用软件、设备及总线驱动程序和USB固件3层。应用软件设计由2部分组成:动态链接库和应用程序。动态链接库负责与内核态的USB功能驱动程序通信并接收应用程序对USB设备I/O的各种操作请求,应用程序调用Win32 APl函数DeviceToCon-trol向设备发出命令;USB设备驱动程序通过总线驱动程序发出输入输出请求(IRP),实现对USB设备信息的发送和接收;总线驱动程序负责总线检测、电源管理和USB事务处理,固件程序实现FX2器件的初始化设置,设备请求处理,电源管理和外围通信功能,是整个通信架构的核心。在测试系统中,通过固件代码建立数据物理通道并实现通信协议,用户可通过测试软件对USB设备进行功能控制,实现数据的有效通信和测试任务高效、可靠地完成。
3 测试系统USB硬件电路原理
CY7C68013A(简称68013A)集成USB2.0收发器、串行接口引擎(SIE)、增强8051内核和可编程外围接口,提供一个高效的USB2.0解决方案,它可配置为3种数据通信模式:端口、GPIF和Slave FIFO模式。本设计利用GPIF方式快速、灵活等特点,有效地解决了端口方式下USB2.0设备数据传输速度瓶颈,大大提高了数据的传输速率。FX2专门为GPIF提供外围接口信号,如8/16位数据线、CTL、Ready信号及地址线。从通用性、低功耗等方面考虑,将68013A的PA,PB,PD和 PE 4个I/O端口,6个CTL[5:0]和6个RDY[5:0]与FIFO或FPGA相连实现数据通信和握手、控制等功能。
图2为GPIF方式硬件连接框图,其中IFCLK是双向时钟信号,当配置为输出时,IFCLK被FX2驱动为30 MHz/48MHz:当配置为输入时,时钟范围为5~48 MHz;GPIFADR(9)信号为外部设备提供地址线,在总线上地址值是自增的;FD[15:0]是USB主机通过FX2和外部设备进行数据传输的数据线,可配置成8位或16位;CTL[5:0]为外设控制信号,如读写选通、使能等;RDY[5:0]为外设状态检测信号,如外部FIFO的空、满等。
整个系统的工作原理:主机通过应用软件设置将相应的测试指令和数据经USB总线下载到68013A内部FIFO中,按照同件代码配置相关寄存器、端口和中断,实现与FIFO和FPGA的数据通信。外部使用两片FIFO匹配数据传输速率,由外部控制信号RD(或RD2)/WR(或WR2)来控制数据的读/写。为防止数据的空读或写溢出,用标志端EF和HF标明FIFO状态。这种内外FIFO双缓冲设计为大容量、高速数据传输提供更大的缓冲空间和时序匹配。 FPGA从FIFO1接收数据的同时,按照从PE口收到的Status[7:0]指令,判断所接收数据的类型和职能,将数据传输到相应的测试调理和输出电路,执行相应操作,判断被测试对象的工作情况;如从PE端口收到的是自检命令,则将测试数据回采,判断系统自身工作情况。被测试对象反馈的信号和测试采集的数据,自检数据经FPGA数据融合处理,从FIFO2传到68013A的GPIF接收端口,所有CY7C68013A的内部数据和端口操作全部由固件程序描述。
4 固件程序设计
68013A固件负责处理主机各种USB设备请求,控制68013A与外围电路FPGA进行数据传输,协调主机和FPGA 之间的通信。设计利用Cypress公司生产的EZ-USB固件程序框架,其中包括初始化、处理USB设备请求、中断和USB电源管理等任务,固件的编译在KeilμVision2的集成开发环境中进行。68013A固件设计流程如图3所示。该设计主要包括5个部分:fw.c(框架源文件)、 periph.c(用户任务调度函数文件)、dscr.a51(描述符表)、USBJmpTb.OBJ(中断跳转表)、Ezusb.lib(EZ_USB 库文件)。用户仅需对dscr.a51和pe-riph.c修改文件中部分代码即可完成USB设备的各种功能。periph.c文件通过调用任务分配、标准设备请求和中断处理等函数来处理USB事件。其中主要修改TD_Init()和TD_Poll()两个任务分配函数。TD_Init()函数用于负责初始化端点状态变量,配置外围I/O接口及设置端口初始值。TD_Poll()主要是初始化功能寄存器,并对设备进行重新列举,完成主机对设备的配置任务;执行过程中响应中断,对中断作相应处理并控制外围电路。
5 GPIF waveforms设计及测试分析
利用GPIF Designer编辑GPlF waveform波形文件,然后转换生成GPIF.c文件,作为固件的一部分,加入keil c工程进行编译。每个GPIF波形描述符都由7段组成:state0~state6(简称S0~S6)。执行完S0-S6的动作后,都进入idle状态 (S7),以准备启动下一次GPIF动作。每个state可定义为非决定态(NDP)或决定态(DP)。当state为NDP时只是简单地延时;为DP 时,它将根据RDY[0:5]上的输入信号状态及内部FIFO的可编程标志和内部自定义的Ready标志,将这些信号进行逻辑处理,并根据逻辑结果在选择即将执行的state。每个state执行时可指定CTL[0:5]输出状态。从而控制外围时序电路。图4和图5分别是GPIF波形编辑文件和测试结果。图5中下载了开关量,模拟量和数字量信号,各1路,4C6600为START发送握手标志。
6 结束语
充分利用CY7C68013A的GPIF通信方式,实现计算机和测试系统硬件之间控制信号和测试数据高速、可靠的传输;通过适当修改硬件测试接口,即可利用新开发固件和应用软件实现通用化测试目的,具有较高的实用价值。基于该设计方案的某型号自动测试系统已成功应用于航天测试领域。