1 引言
自动测试系统ats(automatic test system)集成测试所需的全部激励与测量设备,计算机高效完成各种模式的激励及响应信号的采集、存储与分析,对被测单元进行自动状态监测、性能测试和故障诊断。总线是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通信方式,实现计算机和测试系统硬件之间控制信号和测试数据高速、可靠的传输;通过适当修改硬件测试接口,即可利用新开发固件和应用软件实现通用化测试目的,具有较高的实用价值。基于该设计方案的某型号自动测试系统已成功应用于航天测试领域。
基于激光雷达光电倍增管门控实现了雷达门控系统的软件控制
预测十年后光纤传输系统技术:干线单波长可达Tbps 单纤可达Pbps量级
Arm CCA赋能开发者拥有机密计算能力
黄金和比特币领涨最大投资是哪一个
PD通信芯片LDR6028在OTG声卡Type-C数据线的应用
基于USB通信技术的自动测试系统设计
微软Surface新品设备现身跑分库,采用英特尔第10代Ice Lake处理器
温振传感器是如何实现故障预警的?
论配置和颜值 华为荣耀V9当仁不让 美女上手图赏
摩尔线程携手数科网维聚焦OFD创新 助推中国数字办公进程
什么无线蓝牙耳机平价实惠?2022真无线蓝牙耳机排行榜
智能家居的安全状况目前令人尴尬又担忧主要有以下原因
苹果曝光新专利:3D相机将支持手势操控
大众与供应商就半导体短缺而导致的损失进行索赔
集成电路通信处理器TMRC32438的特性及应用分析
关于Bosch Sensortec发布全新传感器解决方案的介绍和应用
wifi无线广播的制作
低压连接器和高压连接器介绍
如何让物联网攻不可破
5g比4g强在哪_4G已经这么快了,为什么我们还需要5G