首页> 中国专利> 基于FPGA模块实现USB接口功能验证测试的电路结构及其方法

基于FPGA模块实现USB接口功能验证测试的电路结构及其方法

摘要

本发明涉及一种基于FPGA模块实现USB接口功能验证测试的电路结构,其中电路结构包括FPGA模块、ARM芯片,FPGA模块中装载有USB主机控制程序,FPGA模块通过LVDS信号接口与待测试的USB设备连接,FPGA模块与ARM芯片连接,ARM芯片与测试计算机连接。本发明还涉及一种利用该电路结构进行USB接口功能验证测试的方法。采用该种基于FPGA模块实现USB接口功能验证测试的电路结构及其方法,通过测试计算机与USB设备通信完成了与USB设备的识别和枚举过程,并通过ARM芯片解析测试计算机发送的命令和控制USB设备发送给测试计算机的命令,不仅能够更加全面、更加方便及更加有效的验证USB接口,而且结构简单实用,操作过程快捷方便,工作性能稳定可靠,适用范围较为广泛。

著录项

  • 公开/公告号CN102087624A

    专利类型发明专利

  • 公开/公告日2011-06-08

    原文格式PDF

  • 申请/专利权人 上海摩波彼克半导体有限公司;

    申请/专利号CN200910199826.4

  • 发明设计人 张结华;

    申请日2009-12-02

  • 分类号G06F11/22(20060101);

  • 代理机构31002 上海智信专利代理有限公司;

  • 代理人王洁;郑暄

  • 地址 201204 上海市浦东新区张衡路180弄1号楼4F

  • 入库时间 2023-12-18 02:30:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-10-28

    专利权的转移 IPC(主分类):G06F11/22 专利号:ZL2009101998264 登记生效日:20221017 变更事项:专利权人 变更前权利人:芯鑫融资租赁(北京)有限责任公司 变更后权利人:展讯通信(上海)有限公司 变更事项:地址 变更前权利人:101399 北京市顺义区临空经济核心区融慧园6号楼8-07 变更后权利人:201203 上海市浦东新区张江高科技园区祖冲之路2288弄展讯中心1号楼

    专利申请权、专利权的转移

  • 2019-04-02

    专利权的转移 IPC(主分类):G06F11/22 登记生效日:20190314 变更前: 变更后: 申请日:20091202

    专利申请权、专利权的转移

  • 2017-07-28

    专利权的转移 IPC(主分类):G06F11/22 登记生效日:20170711 变更前: 变更后: 申请日:20091202

    专利申请权、专利权的转移

  • 2013-07-24

    授权

    授权

  • 2011-07-20

    实质审查的生效 IPC(主分类):G06F11/22 申请日:20091202

    实质审查的生效

  • 2011-06-08

    公开

    公开

查看全部

说明书

技术领域

本发明涉及电子设备的USB接口领域,特别涉及电子设备的功能芯片的USB接口技术领域,具体是指一种基于FPGA模块实现USB接口功能验证测试的电路结构及其方法。

背景技术

USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。版本经历了多年的发展,到现在已经发展为2.0版本,成为目前电脑中的标准扩展接口。目前主板中主要是采用USB1.1和USB2.0(本文章主要是针对USB1.1),。而且USB接口还可以通过专门的USB连机线实现双机互连,并可以通过Hub扩展出更多的接口。USB具有传输速度快(USB1.1是12Mbps,USB2.0是480Mbps),使用方便,支持热插拔,连接灵活,独立供电等优点,可以连接鼠标、键盘、打印机、扫描仪、摄像头、闪存盘、MP3机、手机、数码相机、移动硬盘、外置光软驱、USB网卡、ADSL Modem、Cable Modem等,几乎所有的外部设备。

根据USB的协议USB1.1电气特性主要是对信号的发送及电压分布情况的描述。下面我们将分别对其进行详细介绍,首先来看看其信号的发送。

1、信号的发送

USB通常使用一种差分的输出驱动器来控制数据信号在USB电缆上的发送,在了解具体的信号发送之前,我们先来谈谈有关USB设备的特性。

(1)USB驱动器的特性及其使用

一个USB设备端的连接器是由D+、D-及Vbus,GND和其它数据线构成的简短连续电路,并要求连接器上有电缆屏蔽,以免设备在使用过程中被损坏。它有两种工作状态,即低态和高态。在低态时,驱动器的静态输出端的工作电压Vol变动范围为0~0.3V,且接有一个15kΩ的接地负载。处于差分的高态和低态之间的输出电压变动应尽量保持平衡,以能很好地减小信号的扭曲变形。

低速驱动器特性:

一个低速USB设备在插口端必须要有一个带有串行A口连接器的可控制电缆,其速率为1.5Mb/s。当电缆与设备相连时,在D+/D-线上必须要有一个200~450PF的单终端电容器。低速电缆的传播时延必须小于18ns,从而保证信号响应在其上升沿或下降沿的第一个中点处产生,以允许电缆与一块电容器相连。请参阅图1所示,其中列出了低速驱动器的信号波形。

全速驱动器特性:

一个全速USB设备的连接是通过阻抗为90Ω±15%,最大单路时延为26ns的屏蔽双绞线电缆进行的,其到达的最大速率为12Mb/s,并且每个驱动器的阻抗必须在28Ω~44Ω之间。请参阅图2所示,其中描述了全速驱动器的信号波形。

再请参阅图3和图4所示,其中分别列出了全速和低速USB设备在集线器的终端位置及其所连的功能设备。从图可以看出在电缆的下形端的电阻Rpu在两图中的连接位置是不同的:

●全速设备中的Rpu电阻是接在D+线上的

●低速设备中的Rpu电阻是接在D-线上的

下行端口处的Rpu电阻是与地相连的,其电阻为15KΩ±5%。

这个Rpu电阻的选取要满足一定的条件,为了在一个复位操作结束后方便地确定可被执行的总线状态,那么选取Rpu时要能使D+/D-线上的电压在2.5us的最大复位松驰时间内可在0~Vih内自由变动。为了满足这一条件,带有可分电缆的设备必须使用加载电压在3.0~3.6V间阻抗为1.5KΩ±5%的电阻;而具有可控电缆的设备可以使用两种方法中的任一种。注意:终端电阻不包括主机/HUB上的15KΩ±5%的电阻。

所有集线器和高速的功能设备上行端口(朝主机方向的)必须使用高速的驱动器,上行集线器端口既可以高速又可以低速来传送数据,但是在信号发送时总是使用高速和边缘速率。低速数据的传输不改变驱动器的特性,低速设备的上行端口必须使用低速驱动器。

所有集线器(包括主机的)外部下行端口必须能适用于两种特性的驱动器,也就是说,任何类型的设备都能被插入这些端口中。当收发器工作在高速模式时,它使用高速和边缘速率来进行信号的发送;工作在低速时,它使用低速和边缘速率来发送数据。

(2)接收器特性

一个差分输入接收器用来接收USB数据信号,当两个差分数据输入处在共同的0.8~2.5V的差分模式范围时,请参阅图5所示。

LVDS信号特性:

LVDS技术是一种低摆幅的通用I/O标准,其低摆幅和低电流驱动输出实现了低噪声和低功耗,解决了物理层点对点传输的瓶颈问题,满足了数据高速传输的要求。降低供电电压减少了高密度集成电路的功耗,减少了芯片内部的散热,从而提高了芯片的集成度。LVDS具有数据率高、功耗低、端接匹配容易、可靠性高、成本低等优点。

LVDS的物理接口使用1.2V偏置,约400mV摆幅的信号,LVDS驱动器和接收器是电流驱动方式,不依赖于特定的供电电压,很容易迁移到低电压供电的系统中去,而且性能不变。图2是一个简单的单向LVDS接口连接图,每个点对点连接的差分对由一个驱动器、互连介质和一个接收器组成,驱动器和接收器主要完成,TTL信号和LVDS信号的互相转换;互连介质包括电缆、PCB上的差分线对和匹配阻抗。

LVDS驱动器由一个驱动差分线对的电流源组成,通常为3.5mA。LVDS接收器具有很高的输入阻抗,驱动器输出的电流大部分都流过100欧姆的匹配电阻,并在接收器的输入端产生大约350mV的电压。当驱动器翻转时,则改变流经电阻的电流方向,产生有效的逻辑“1”和逻辑“0”状态。LVDS接收器可以承受±1V的电压变化,当存在系统噪声时,噪声以共模方式同时耦合到一对差分线上,并在接收器中相减,从而消除噪声

在FPGA中的实现Vitex系列FPGA的IOB(I/O Block)单元完全符合LVDS的IEEE规范,从而简化了系统及板级间的设计。IOB内集成有电流源,不需要再外接,且有3.3V和2.5V两种固定电压工作模式及一种扩展工作模式,为实现LVDS接口提供了最方便、灵活的解决方案。扩展工作模式提供更大的驱动能力和电压摆幅(350~750mV),更适合长距离或电缆式的LVDS接口应用。

可以看出FPGA的2.5V的电压模式是符合USB1.1的电气特性。故通过FPGA的LVDS接口验证USB1.1接口。

发明内容

本发明的目的是克服了上述现有技术中的缺点,提供一种更加全面、方便及有效的验证USB接口、结构简单实用、操作过程快捷方便、工作性能稳定可靠、适用范围较为广泛的基于FPGA模块实现USB接口功能验证测试的电路结构及其方法。

为了实现上述的目的,本发明的基于FPGA模块实现USB接口功能验证测试的电路结构及其方法如下:

该基于FPGA模块实现USB接口功能验证测试的电路结构,其主要特点是,所述的电路结构包括FPGA模块、ARM(Advanced RISC Machine)芯片,所述的FPGA模块中装载有USB主机控制程序,所述的FPGA模块通过LVDS信号接口与待测试的USB设备相连接,所述的FPGA模块与所述的ARM芯片相连接,且所述的ARM芯片与测试计算机相连接。

该基于FPGA模块实现USB接口功能验证测试的电路结构中的FPGA模块为FGPA芯片,所述的ARM芯片上的GPIO端口和PHOST端口与所述的FPGA芯片的GPIO端口相连接。

该基于FPGA模块实现USB接口功能验证测试的电路结构中的ARM芯片通过串行通信接口与所述的测试计算机相连接。

该利用上述的电路结构进行USB接口功能验证测试的方法,其主要特点是,所述的方法包括以下步骤:

(1)所述的FPGA模块进行USB设备识别检测处理操作;

(2)所述的测试计算机通过所述的FPGA模块进行获取USB设备描述符信息的处理操作;

(3)所述的FPGA模块进行USB设备地址设定的处理操作;

(4)所述的FPGA模块进行获取配置描述符信息的处理操作;

(5)所述的FPGA模块进行设置USB设备配置的处理操作。

该进行USB接口功能验证测试的方法中的FPGA模块进行USB设备识别检测处理操作,包括以下步骤:

(11)所述的FPGA模块进行新的USB设备接入检测处理;

(12)所述的FPGA模块重新设置该接入的新的USB设备;

(13)所述的FPGA模块建立与该新的USB设备之间的信号通路;

(14)所述的FPGA模块检测该新的USB设备的数据传输速度。

该进行USB接口功能验证测试的方法中的FPGA模块进行新的USB设备接入检测处理,包括以下步骤:

(111)所述的FPGA模块监视每个端口的信号电压;

(112)当检测到某个端口的信号电压升高,则产生相应的中断事件;

(113)所述的FPGA模块发送状态获取请求,从而获取该新的USB设备的连接时间。

该进行USB接口功能验证测试的方法中的FPGA模块重新设置该接入的新的USB设备,包括以下步骤:

(121)所述的FPGA模块发送配置设置请求;

(122)所述的FPGA模块使得该新的USB设备的USB数据线处于重启状态至少10ms。

该进行USB接口功能验证测试的方法中的FPGA模块建立与该新的USB设备之间的信号通路,包括以下步骤:

(131)所述的FPGA模块发送获取状态请求来验证该新的USB设备是否处于重启状态;

(132)当该新的USB设备释放重启状态并进入默认状态时,则所述的FPGA模块建立与该新的USB设备之间的信号通路。

该进行USB接口功能验证测试的方法中的FPGA模块检测该新的USB设备的数据传输速度,包括以下步骤:

(141)所述的FPGA模块判断与该新的USB设备相连接的D+信号线和D-信号线中哪根信号线在空闲时有更高的电压;

(142)如果D+信号线上电压更高,则该新的USB设备为全速设备;

(143)如果D-信号线上电压更高,则该新的USB设备为低速设备。

该进行USB接口功能验证测试的方法中的测试计算机通过FPGA模块进行获取USB设备描述符信息的处理操作,包括以下步骤:

(21)所述的测试计算机通过FPGA模块向该新的USB设备发送USB协议规定的获取USB设备描述符命令,以取得缺省控制管道所支持的最大数据包长度;

(22)所述的FPGA模块接收该新的USB设备的响应信息,并读取该响应信息中的描述符的前8个字节,从而得到该新的USB设备的最大数据包长度。

该进行USB接口功能验证测试的方法中的FPGA模块进行USB设备地址设定的处理操作,包括以下步骤:

(31)所述的FPGA模块向该新的USB设备发送设置地址请求,且该设置地址请求中包括有新的地址信息;

(32)该新的USB设备读取该设置地址请求,并返回相应的确认消息,同时保存该新的地址信息。

该进行USB接口功能验证测试的方法中的FPGA模块进行获取配置描述符信息的处理操作,包括以下步骤:

(41)所述的FPGA模块根据新的地址信息向该新的USB设备重新发送获取设备描述符命令,以读取该新的USB设备描述符的全部字段并了解该新的USB设备的总体信息;

(42)所述的FPGA模块向该新的USB设备循环发送获取设备配置命令,并接收该新的USB设备的应答信息,从而获得该新的USB设备的全部配置信息;

(43)所述的测试计算机通过该FPGA模块向该新的USB设备发送获取设备字符串命令,以获得该新的USB设备的字符集描述;

(44)所述的测试计算机上弹出窗口,展示该新的USB设备的信息;

(45)根据该新的USB设备对获取设备描述符命令和获取设备配置命令的应答信息,所述的测试计算机进行相应的USB驱动程序的搜索和加载。

该进行USB接口功能验证测试的方法中的新的USB设备的字符集描述,包括生产厂商、产品描述和型号。

该进行USB接口功能验证测试的方法中的FPGA模块进行设置USB设备配置的处理操作,包括以下步骤:

(51)所述的FPGA模块发送设置配置命令请求,为该新的USB设备选择合适的配置;

(52)如果设置配置成功,则该新的USB设备进入配置状态。

采用了该发明的基于FPGA模块实现USB接口功能验证测试的电路结构及其方法,由于其中将USB主机控制程序装载入FPGA模块内,并通过ARM芯片的GPIO和PHOST端口连接FPGA模块的GPIO配置及控制USB设备,从而完成了对USB设备的系统控制,并通过FPGA模块的LVDS信号作为USB的D+、D-数据线进行数据传输,通过测试计算机连接FPGA的USB设备的D+、D-信号,在ARM芯片中存储某一USB设备的设备描述符和配置描述符等USB信息,通过测试计算机与USB设备通信,从而完成了与USB设备的识别和枚举过程,并通过ARM芯片解析测试计算机发送的命令和控制USB设备发送给测试计算机的命令,不仅能够更加全面、更加方便及更加有效的验证USB接口,而且结构简单实用,操作过程快捷方便,工作性能稳定可靠,适用范围较为广泛。

附图说明

图1为现有技术中USB设备低速驱动器信号波形示意图。

图2为现有技术中USB设备全速驱动器信号波形示意图。

图3为现有技术中全速USB设备电缆和电阻连接示意图。

图4为现有技术中低速USB设备电缆和电阻连接示意图。

图5为现有技术中差分输入接收器的差分输入阻抗范围示意图。

图6为本发明的基于FPGA模块实现USB接口功能验证测试的电路结构整体示意图。

具体实施方式

为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。

请参阅图6所示,该基于FPGA模块实现USB接口功能验证测试的电路结构,其中,所述的电路结构包括FPGA模块、ARM芯片,所述的FPGA模块中装载有USB主机控制程序,所述的FPGA模块通过LVDS信号接口与待测试的USB设备相连接,所述的FPGA模块与所述的ARM芯片相连接,且所述的ARM芯片与测试计算机相连接。

其中,所述的FPGA模块为FGPA芯片,所述的ARM芯片上的GPIO端口和PHOST端口与所述的FPGA芯片的GPIO端口相连接;所述的ARM芯片通过串行通信接口与所述的测试计算机相连接。

该利用上述的电路结构进行USB接口功能验证测试的方法,其中包括以下步骤:

(1)所述的FPGA模块进行USB设备识别检测处理操作,包括以下步骤:

(a)所述的FPGA模块进行新的USB设备接入检测处理,包括以下步骤:

(i)所述的FPGA模块监视每个端口的信号电压;

(ii)当检测到某个端口的信号电压升高,则产生相应的中断事件;

(ii)所述的FPGA模块发送状态获取请求,从而获取该新的USB设备的连接时间;

(b)所述的FPGA模块重新设置该接入的新的USB设备,包括以下步骤:

(i)所述的FPGA模块发送配置设置请求;

(ii)所述的FPGA模块使得该新的USB设备的USB数据线处于重启状态至少10ms;

(c)所述的FPGA模块建立与该新的USB设备之间的信号通路,包括以下步骤:

(i)所述的FPGA模块发送获取状态请求来验证该新的USB设备是否处于重启状态;

(ii)当该新的USB设备释放重启状态并进入默认状态时,则所述的FPGA模块建立与该新的USB设备之间的信号通路;

(d)所述的FPGA模块检测该新的USB设备的数据传输速度,包括以下步骤:

(i)所述的FPGA模块判断与该新的USB设备相连接的D+信号线和D-信号线中哪根信号线在空闲时有更高的电压;

(ii)如果D+信号线上电压更高,则该新的USB设备为全速设备;

(iii)如果D-信号线上电压更高,则该新的USB设备为低速设备;

(2)所述的测试计算机通过所述的FPGA模块进行获取USB设备描述符信息的处理操作,包括以下步骤:

(a)所述的测试计算机通过FPGA模块向该新的USB设备发送USB协议规定的获取USB设备描述符命令,以取得缺省控制管道所支持的最大数据包长度;

(b)所述的FPGA模块接收该新的USB设备的响应信息,并读取该响应信息中的描述符的前8个字节,从而得到该新的USB设备的最大数据包长度;

(3)所述的FPGA模块进行USB设备地址设定的处理操作,包括以下步骤:

(a)所述的FPGA模块向该新的USB设备发送设置地址请求,且该设置地址请求中包括有新的地址信息;

(b)该新的USB设备读取该设置地址请求,并返回相应的确认消息,同时保存该新的地址信息;

(4)所述的FPGA模块进行获取配置描述符信息的处理操作,包括以下步骤:

(a)所述的FPGA模块根据新的地址信息向该新的USB设备重新发送获取设备描述符命令,以读取该新的USB设备描述符的全部字段并了解该新的USB设备的总体信息;

(b)所述的FPGA模块向该新的USB设备循环发送获取设备配置命令,并接收该新的USB设备的应答信息,从而获得该新的USB设备的全部配置信息;

(c)所述的测试计算机通过该FPGA模块向该新的USB设备发送获取设备字符串命令,以获得该新的USB设备的字符集描述;该新的USB设备的字符集描述,包括生产厂商、产品描述和型号;

(d)所述的测试计算机上弹出窗口,展示该新的USB设备的信息;

(e)根据该新的USB设备对获取设备描述符命令和获取设备配置命令的应答信息,所述的测试计算机进行相应的USB驱动程序的搜索和加载;

(5)所述的FPGA模块进行设置USB设备配置的处理操作,包括以下步骤:

(a)所述的FPGA模块发送设置配置命令请求,为该新的USB设备选择合适的配置;

(b)如果设置配置成功,则该新的USB设备进入配置状态。

在实际使用当中,本发明中的通过FPGA的LVDS接口验证USB接口的过程中,为了USB1.1得到更加全面的,更加方便及有效的验证USB1.1接口。本发明提出了对USB1.1的HOST和DEVICE的验证方案,USB1.1HOST的FPGA验证:

首先将USB1.1HOST放入FPGA内,用FPGA的LVDS信号作为USB的D+、D-数据线进行数据传输。通过ARM GPIO和PHOST端口连接FPGA的GPIO配置及控制FPGA,完成对USB HOST的系统控制。通过FPGA的LVDS的信号连接USB1.1的DEVICE(如U盘)。对USB1.1的设备进行枚举。

枚举数据传输的全过程:

(1)集线器检测新设备

主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个设备在D+都有一个1.5kΩ的上拉电阻。当用USB线将PC和设备接通后,设备的上拉电阻使信号线的电位升高,因此被主机集线器检测到。

(2)主机知道了新设备连接后

每个集线器用中断传输来报告在集线器上的事件。当主机知道了这个事件,它给集线器发送一个Get_Status请求来了解更多的消息。返回的消息告诉主机一个设备是什么时候连接的。

(3)集线器重新设置这个新设备

当主机知道有一个新的设备时,主机给集线器发送一个Set_Feature请求,请求集线器来重新设置端口。集线器使得设备的USB数据线处于重启(RESET)状态至少10ms。

(4)集线器在设备和主机之间建立一个信号通路

主机发送一个Get_Status请求来验证设备是否激起重启状态。返回的数据有一位表示设备仍然处于重启状态。当集线器释放了重启状态,设备就处于默认状态了,即设备已经准备好通过Endpoint 0的默认流程响应控制传输。即设备现在使用默认地址0x0与主机通信。

(5)集线器检测设备速度

集线器通过测定哪根信号线(D+或D-)在空闲时有更高的电压来检测设备是低速设备还是全速设备。(全速和高速设备D+有上拉电阻,低速设备D-有上拉电阻)。

以下,需要USB的firmware(固件)进行干预

(6)获取最大数据包长度

测试计算机(PC)向address 0发送USB协议规定的Get_Device_Descriptor命令,以取得缺省控制管道所支持的最大数据包长度,并在有限的时间内等待USB设备的响应,该长度包含在设备描述符的bMaxPacketSize0字段中,其地址偏移量为7,所以这时主机只需读取该描述符的前8个字节。注意,主机一次只能列举一个USB设备,所以同一时刻只能有一个USB设备使用缺省地址0。

以下操作雷同,不同操作系统设定时延是不一样的,比如说win2k大概是几毫秒,如果没有反应就再发送一次命令,重复三次。

(7)主机分配一个新的地址给设备

主机通过发送一个Set_Address请求来分配一个唯一的地址给设备。设备读取这个请求,返回一个确认,并保存新的地址。从此开始所有通信都使用这个新地址。

(8)主机向新地址重新发送Get_Device_Descriptor命令,此次读取其设备描述符的全部字段,以了解该设备的总体信息,如VID,PID。

(9)主机向设备循环发送Get_Device_Configuration命令,要求USB设备回答,以读取全部配置信息。

(10)主机发送Get_Device_String命令,获得字符集描述(unicode),比如产商、产品描述、型号等等。

(11)此时主机将会弹出窗口,展示发现新设备的信息,产商、产品描述、型号等。

(12)根据Device_Descriptor和Device_Configuration应答,PC判断是否能够提供USB的Driver,一般win2k能提供几大类的设备,如游戏操作杆、存储、打印机、扫描仪等,操作就在后台运行。但是Win98却不可以,所以在此时将会弹出对话框,索要USB的Driver。

(13)加载了USB设备驱动以后,主机发送Set_Configuration(x)命令请求为该设备选择一个合适的配置(x代表非0的配置值)。如果配置成功,USB设备进入“配置”状态,从而枚举完成。

对于USB1.1HOST的FPGA验证,通过ARM控制USB HOST对USB DEVICE进行枚举,并通过串口将枚举的信息传递到PC机,以便能清楚知道枚举的信息。如果能枚举成功,说明USB HOST基本功能正常。

ARM芯片控制USB HOST发送给USB的设备命令和解析接收USB的设备的命令。并将发送和接收的命令通过串口送到PC机上。

USB枚举步骤:

(1)获取设备描述符。

(2)设置USB设备地址。

(3)获取配置描述符。

(4)设置USB设备配置。

USB1.1DEVICE的FPGA验证:

首先将USB1.1DEVICE放入FPGA内,通过ARM GPIO和PHOST端口连接FPGA的GPIO配置及控制USB1.1device,完成对USB device的系统控制,通过FPGA的LVDS信号作为USB的D+、D-数据线进行数据传输,通过PC机连接FPGA的USB device D+、D-信号。在ARM中存储某一USB设备的设备描述符和配置描述符等USB信息。通过PC机与USB device通信,完成与USB device识别和枚举过程。通过ARM解析PC发送的命令和控制USB device发送给PC的命令。

PC机与USB device通信,完成与USB device识别和枚举过程。通过ARM解析PC发送的命令和控制USB device发送给PC的命令。如果PC机能枚举成功,表明能正确识别USB设备

做为USB设备枚举过程是主机发送命令。设备解析命令。给主机回相应的设备的信息。

下面以一个U盘为例来说明在枚举过程中USB host和device的行为:

(1)主机第一次发出请求描述符命令,数据流为:

80 06 00 02 00 00 09 00;

bRequest的值0x06,代表Get_Descriptor命令。

设备返回的数据为:

12 01 00 02 00 00 00 40 51 09 0E 16 00 02 01 02 03 01

bLenght的值为0x12,表示此描述符的长度。bDecriptorType的值为0x01,代表设备描述符。bcdUSB的值为0x0200,代表USB协议的版本号,此处2.0版,如果为0x0110则表示1.1版。bDeviceClass和bDeviceSubClass都为0,bMaxPacketSize0的值为0x40,表示端点0的数据包最大长度为64字节。iManufacturer、iProduct和iSerialNumber的分别为0x01、0x02和0x03,表示字符串索引,在主机读取字符串的命令中将以这几个值来填充wIndex字段。

(2)主机再次发出请求描述符指令,数据流为:

80 06 00 02 00 00 09 00

wValue的高字节为0x02表示配置描述符,表示请求配置描述符,wLength的值为0x0009,表示要求返回的数据长度为9个字节。

设备返回的数据只有9个字节:

09 02 20 00 01 01 00 80 32

第一位数为bLeng域,其值为0x09,代表此描述符的长度。bDecriptorType的值为0x02,表示配置描述符。wTotalLength的值为0x0020,表示包括此配置描述符、接口描述符、端点描述符和设备类及厂商定义的描述符的总长为32个字节。bNumInterfaces的值为0x01,表示该配置支持1个接口。MaxPower的值为0x32,表示总线耗电量为50×2=100mA。

(3)在请求完配置描述符后,主机发出请求字符串描述符指令

设备返回相应字符串描述符数据流为:

80 06 00 03 00 00 02 00

wValue的高字节为0x03,表示字符串描述符。wIndex的值为0x0000,表示读取语言ID。wLength为0x0002要求设备返回2个字节数据。设备返回的数据为04 03,第一个字节为0x04表示语言ID字符串描述符长度为4个字节。

(4)在读取完字符串描述符后,主机发出Set_Configuration选择配置索引以激活这个设备的一个配置,然后设备对这一命令作出回应。此时枚举完成。

采用了上述的基于FPGA模块实现USB接口功能验证测试的电路结构及其方法,由于其中将USB主机控制程序装载入FPGA模块内,并通过ARM芯片的GPIO和PHOST端口连接FPGA模块的GPIO配置及控制USB设备,从而完成了对USB设备的系统控制,并通过FPGA模块的LVDS信号作为USB的D+、D-数据线进行数据传输,通过测试计算机连接FPGA的USB设备的D+、D-信号,在ARM芯片中存储某一USB设备的设备描述符和配置描述符等USB信息,通过测试计算机与USB设备通信,从而完成了与USB设备的识别和枚举过程,并通过ARM芯片解析测试计算机发送的命令和控制USB设备发送给测试计算机的命令,不仅能够更加全面、更加方便及更加有效的验证USB接口,而且结构简单实用,操作过程快捷方便,工作性能稳定可靠,适用范围较为广泛。

在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号