CN102087624B - 基于fpga模块实现usb接口功能验证测试的电路结构及其方法 - Google Patents

基于fpga模块实现usb接口功能验证测试的电路结构及其方法 Download PDF

Info

Publication number
CN102087624B
CN102087624B CN 200910199826 CN200910199826A CN102087624B CN 102087624 B CN102087624 B CN 102087624B CN 200910199826 CN200910199826 CN 200910199826 CN 200910199826 A CN200910199826 A CN 200910199826A CN 102087624 B CN102087624 B CN 102087624B
Authority
CN
China
Prior art keywords
fpga module
usb device
new
usb
described fpga
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 200910199826
Other languages
English (en)
Other versions
CN102087624A (zh
Inventor
张结华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Shanghai Mobilepeak Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Mobilepeak Semiconductor Co Ltd filed Critical Shanghai Mobilepeak Semiconductor Co Ltd
Priority to CN 200910199826 priority Critical patent/CN102087624B/zh
Publication of CN102087624A publication Critical patent/CN102087624A/zh
Application granted granted Critical
Publication of CN102087624B publication Critical patent/CN102087624B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

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

Description

基于FPGA模块实现USB接口功能验证测试的电路结构及其方法
技术领域
本发明涉及电子设备的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接口,而且结构简单实用,操作过程快捷方便,工作性能稳定可靠,适用范围较为广泛。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

Claims (7)

1.一种利用基于FPGA模块实现USB接口功能验证测试的电路结构进行USB接口功能验证测试的方法,其特征在于,所述的电路结构包括FPGA模块、ARM芯片,所述的FPGA模块中装载有USB主机控制程序,所述的FPGA模块通过LVDS信号接口与待测试的USB设备相连接,所述的FPGA模块与所述的ARM芯片相连接,且所述的ARM芯片与测试计算机相连接,所述的方法包括以下步骤:
(1)所述的FPGA模块进行USB设备识别检测处理操作,包括以下步骤:
(11)所述的FPGA模块进行新的USB设备接入检测处理;
(12)所述的FPGA模块重新设置该接入的新的USB设备;
(13)所述的FPGA模块建立与该新的USB设备之间的信号通路;
(14)所述的FPGA模块检测该新的USB设备的数据传输速度;
(2)所述的测试计算机通过所述的FPGA模块进行获取USB设备描述符信息的处理操作,包括以下步骤:
(21)所述的测试计算机通过FPGA模块向该新的USB设备发送USB协议规定的获取USB设备描述符命令,以取得缺省控制管道所支持的最大数据包长度;
(22)所述的FPGA模块接收该新的USB设备的响应信息,并读取该响应信息中的描述符的前8个字节,从而得到该新的USB设备的最大数据包长度;
(3)所述的FPGA模块进行USB设备地址设定的处理操作,包括以下步骤:
(31)所述的FPGA模块向该新的USB设备发送设置地址请求,且该设置地址请求中包括有新的地址信息;
(32)该新的USB设备读取该设置地址请求,并返回相应的确认消息,同时保存该新的地址信息;
(4)所述的FPGA模块进行获取配置描述符信息的处理操作;
(5)所述的FPGA模块进行设置USB设备配置的处理操作,包括以下步骤:
(51)所述的FPGA模块发送设置配置命令请求,为该新的USB设备选择合适的配置;
(52)如果设置配置成功,则该新的USB设备进入配置状态。
2.根据权利要求1所述的利用基于FPGA模块实现USB接口功能验证测试的电路结构进行USB接口功能验证测试的方法,其特征在于,所述的FPGA模块进行新的USB设备接入检测处理,包括以下步骤:
(111)所述的FPGA模块监视每个端口的信号电压;
(112)当检测到某个端口的信号电压升高,则产生相应的中断事件;
(113)所述的FPGA模块发送状态获取请求,从而获取该新的USB设备的连接时间。
3.根据权利要求1所述的利用基于FPGA模块实现USB接口功能验证测试的电路结构进行USB接口功能验证测试的方法,其特征在于,所述的FPGA模块重新设置该接入的新的USB设备,包括以下步骤:
(121)所述的FPGA模块发送配置设置请求;
(122)所述的FPGA模块使得该新的USB设备的USB数据线处于重启状态至少10ms。
4.根据权利要求1所述的利用基于FPGA模块实现USB接口功能验证测试的电路结构进行USB接口功能验证测试的方法,其特征在于,所述的FPGA模块建立与该新的USB设备之间的信号通路,包括以下步骤:
(131)所述的FPGA模块发送获取状态请求来验证该新的USB设备是否处于重启状态;
(132)当该新的USB设备释放重启状态并进入默认状态时,则所述的FPGA模块建立与该新的USB设备之间的信号通路。
5.根据权利要求1所述的利用基于FPGA模块实现USB接口功能验证测试的电路结构进行USB接口功能验证测试的方法,其特征在于,所述的FPGA模块检测该新的USB设备的数据传输速度,包括以下步骤:
(141)所述的FPGA模块判断与该新的USB设备相连接的D+信号线和D-信号线中哪根信号线在空闲时有更高的电压;
(142)如果D+信号线上电压更高,则该新的USB设备为全速设备;
(143)如果D-信号线上电压更高,则该新的USB设备为低速设备。
6.根据权利要求1所述的利用基于FPGA模块实现USB接口功能验证测试的电路结构进行USB接口功能验证测试的方法,其特征在于,所述的FPGA模块进行获取配置描述符信息的处理操作,包括以下步骤:
(41)所述的FPGA模块根据新的地址信息向该新的USB设备重新发送获取设备描述符命令,以读取该新的USB设备描述符的全部字段并了解该新的USB设备的总体信息;
(42)所述的FPGA模块向该新的USB设备循环发送获取设备配置命令,并接收该新的USB设备的应答信息,从而获得该新的USB设备的全部配置信息;
(43)所述的测试计算机通过该FPGA模块向该新的USB设备发送获取设备字符串命令,以获得该新的USB设备的字符集描述;
(44)所述的测试计算机上弹出窗口,展示该新的USB设备的信息;
(45)根据该新的USB设备对获取设备描述符命令和获取设备配置命令的应答信息,所述的测试计算机进行相应的USB驱动程序的搜索和加载。
7.根据权利要求6所述的利用基于FPGA模块实现USB接口功能验证测试的电路结构进行USB接口功能验证测试的方法,其特征在于,所述的新的USB设备的字符集描述,包括生产厂商、产品描述和型号。
CN 200910199826 2009-12-02 2009-12-02 基于fpga模块实现usb接口功能验证测试的电路结构及其方法 Active CN102087624B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910199826 CN102087624B (zh) 2009-12-02 2009-12-02 基于fpga模块实现usb接口功能验证测试的电路结构及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910199826 CN102087624B (zh) 2009-12-02 2009-12-02 基于fpga模块实现usb接口功能验证测试的电路结构及其方法

Publications (2)

Publication Number Publication Date
CN102087624A CN102087624A (zh) 2011-06-08
CN102087624B true CN102087624B (zh) 2013-07-24

Family

ID=44099441

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910199826 Active CN102087624B (zh) 2009-12-02 2009-12-02 基于fpga模块实现usb接口功能验证测试的电路结构及其方法

Country Status (1)

Country Link
CN (1) CN102087624B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609222B (zh) * 2012-02-13 2015-03-25 山东华芯半导体有限公司 基于命令描述符的闪存控制方法
CN103048559B (zh) * 2012-11-27 2015-09-16 北京华大信安科技有限公司 测试usb设备的方法及自动化测试设备
CN104267331A (zh) * 2014-09-16 2015-01-07 四川和芯微电子股份有限公司 Usb芯片的测试方法
CN105893301A (zh) * 2015-04-17 2016-08-24 乐视致新电子科技(天津)有限公司 外接功能模块的控制电路、外接功能模块及终端设备
CN104965166A (zh) * 2015-07-16 2015-10-07 四川和芯微电子股份有限公司 Usb芯片的测试方法及系统
CN105786752B (zh) * 2016-01-22 2018-08-28 北京大学 一种计算设备与fpga间的usb通信方法和通信系统
CN106126380A (zh) * 2016-06-21 2016-11-16 福州瑞芯微电子股份有限公司 一种基于fpga的lvds接口测试方法及系统
CN107656882A (zh) * 2016-07-25 2018-02-02 深圳市中兴微电子技术有限公司 一种通用串行总线控制器验证方法、系统及设备
CN109870640A (zh) * 2019-02-14 2019-06-11 西安太乙电子有限公司 一种基于ate的usb接口类芯片测试方法
CN109977044B (zh) * 2019-03-27 2021-02-19 歌尔光学科技有限公司 Usb设备枚举检测方法和系统及固件升级方法和系统
CN114442514A (zh) * 2020-11-02 2022-05-06 芯启源(上海)半导体科技有限公司 一种基于fpga的usb3.0/3.1控制系统
US11843376B2 (en) * 2021-05-12 2023-12-12 Gowin Semiconductor Corporation Methods and apparatus for providing a high-speed universal serial bus (USB) interface for a field-programmable gate array (FPGA)
CN114563691B (zh) * 2022-04-29 2022-06-28 南京宏泰半导体科技有限公司 一种集成电路高速数字接口通用检测装置及方法
CN116225771B (zh) * 2023-05-08 2023-07-25 上海励驰半导体有限公司 一种系统外部监控复位电路、芯片、电子设备及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831938A (zh) * 2005-12-27 2006-09-13 株洲南车时代电气股份有限公司 应用于铁道机车的语音录音方法及装置
CN1863166A (zh) * 2006-04-29 2006-11-15 中山大学 基于arm和usb储存装置的无线通信仿真装置
CN101055469A (zh) * 2007-05-24 2007-10-17 谢步明 基于arm9核微处理器的列车控制单元
CN101446988A (zh) * 2007-11-27 2009-06-03 上海摩波彼克半导体有限公司 基于软件对通用异步收发器进行自动化测试的装置及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831938A (zh) * 2005-12-27 2006-09-13 株洲南车时代电气股份有限公司 应用于铁道机车的语音录音方法及装置
CN1863166A (zh) * 2006-04-29 2006-11-15 中山大学 基于arm和usb储存装置的无线通信仿真装置
CN101055469A (zh) * 2007-05-24 2007-10-17 谢步明 基于arm9核微处理器的列车控制单元
CN101446988A (zh) * 2007-11-27 2009-06-03 上海摩波彼克半导体有限公司 基于软件对通用异步收发器进行自动化测试的装置及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于USB+LVDS的FPGA远程测试系统;陈一新;《电子测试》;20090430(第4期);第73-76页 *
陈一新.基于USB+LVDS的FPGA远程测试系统.《电子测试》.2009,(第4期),第73-76页.

Also Published As

Publication number Publication date
CN102087624A (zh) 2011-06-08

Similar Documents

Publication Publication Date Title
CN102087624B (zh) 基于fpga模块实现usb接口功能验证测试的电路结构及其方法
KR100755971B1 (ko) 듀얼 인터페이스 방식으로 동작하는 단일 포트 유에스비장치
CN100483379C (zh) 与主机通信的方法和装置
EP2375340B1 (en) Apparatus interoperable with backward compatible optical USB device
CN102045112B (zh) 光学通用串行总线装置及其操作方法
US9032105B2 (en) Scalable method and apparatus to configure a link
US7814255B1 (en) Multi-interface multi-channel modular hot plug I/O expansion
CN106209695B (zh) 给加载/存储通信协议提供低功率物理单元
KR101220464B1 (ko) 광 연결을 이용한 고속 인터페이스 장치
US20060106962A1 (en) USB On-The-Go implementation
US20110191503A1 (en) Motherboard Compatible with Multiple Versions of Universal Serial Bus (USB) and Related Method
EP2987087A1 (en) Device, method and system for operation of a low power phy with a pcie protocol stack
GB2450591A (en) USB port and plug that uses the PCI Express interface data transfer specification by having two pairs of data lines.
CN1890620A (zh) 具有改进型通讯路径和安全功能的Express Card电源开关装置
JP4039948B2 (ja) Usbにおけるデバイスの接続状態の認識
TWI428759B (zh) 光學usb裝置及其操作方法
CN107153456A (zh) Otg连接控制方法、otg连接控制装置及电子设备
KR100659986B1 (ko) 유에스비 장치의 연결 인식 방법 및 그 방법을 수행하는휴대용 단말기
CN115858426A (zh) 一种硬盘接口、硬盘及电子设备
CN104123257A (zh) 通用串行总线装置、通信方法及计算机可读存储介质
TW202145022A (zh) 介面連接裝置、系統及其方法
CN207249662U (zh) 自适应usb同步器
CN113821077A (zh) 主板及应用所述主板的电子装置
CN101231540B (zh) 服务器主机板
KR20140099047A (ko) 유선 통신 클라이언트 장치 및 그 동작 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170711

Address after: 201203 Shanghai Zhangjiang High Tech Park of Pudong New Area Chunxiao Road No. 439 Building No. 2

Patentee after: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Address before: 201204, building 1, building 180, Zhang Heng Road, Pudong New Area, Shanghai, 4F

Patentee before: Shanghai Mobilepeak Semiconductor Co.,Ltd.

TR01 Transfer of patent right

Effective date of registration: 20190314

Address after: 101399 Building 8-07, Ronghui Garden 6, Shunyi Airport Economic Core Area, Beijing

Patentee after: Xin Xin finance leasing (Beijing) Co.,Ltd.

Address before: 201203 No. 439 Chunxiao Road, Zhangjiang High-tech Park, Pudong New Area, Shanghai

Patentee before: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

TR01 Transfer of patent right
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20110608

Assignee: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Assignor: Xin Xin finance leasing (Beijing) Co.,Ltd.

Contract record no.: X2021110000008

Denomination of invention: Circuit structure and method of USB interface function verification test based on FPGA module

Granted publication date: 20130724

License type: Exclusive License

Record date: 20210317

EE01 Entry into force of recordation of patent licensing contract
TR01 Transfer of patent right

Effective date of registration: 20221017

Address after: 201203 Shanghai city Zuchongzhi road Pudong New Area Zhangjiang hi tech park, Spreadtrum Center Building 1, Lane 2288

Patentee after: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Address before: 101399 Building 8-07, Ronghui Garden 6, Shunyi Airport Economic Core Area, Beijing

Patentee before: Xin Xin finance leasing (Beijing) Co.,Ltd.

TR01 Transfer of patent right