APP下载

USB2.0设备控制器中工作模式控制电路设计

2014-07-25刘清明

网络安全与数据管理 2014年14期
关键词:枚举控制电路数据包

刘清明,方 毅,王 永

(1.中国科学技术大学 电子科学与技术系,安徽 合肥230027;2.中国科学技术大学 信息科学实验中心,安徽 合肥230027)

通用串行总线USB(Universe Serial Bus)的出现大大简化了计算机与外设间的互联,USB具有使用方便、支持多种速率传输、高可靠性以及价格低廉等非常优秀的特点[1]。USB发展非常迅速,目前已经成为最常用的接口方式。USB的发展历史从最初的只支持低速(1.5 Mb/s)和全速(12 Mb/s)的 USB1.0、USB1.1,发展到支持全速(12 Mb/s)和高速(480 Mb/s)的 USB2.0,最新标准 USB3.1于2013年发布,USB3.1支持全速和高速传输,并在USB3.0超高速模式(5 Gb/s)基础上把速度提升到10 Gb/s。鉴于USB3.0、USB3.1的主机和集线器向下兼容 USB2.0全速、高速设备,设计开发一款USB2.0设备控制器有重要的实际意义[2]。USB2.0的设备连接到主机或者集线器之后,默认以全速方式连接,之后主机发出复位信号给所连接的设备,设备控制器需要检测到复位信号并作出相应的动作,同时进行高速握手,高速握手成功后设备以高速传输模式与主机通信。同样,USB总线一定时间没有动作,为了省电设备需进入挂起(suspend)状态,当总线有动作会把挂起的设备唤醒。这些都在USB2.0设备控制器的工作模式控制电路中完成。

1 USB设备控制器结构

图1所示为USB2.0系统的功能框图,由USB主机和USB PHY、USB SIE、应用四部分组成。其中USB2.0设备控制器包含物理层(PHY)和串行接口引擎SIE(Serial Interface Engine)两部分。

图1 USB2.0系统功能模块图

文中设计的USB SIE包括:工作模式控制、数据包处理、USB 事务处理、枚举控制、TX buffer、RX buffer、设备描述符存储器。其中工作模式控制模块完成复位检测、高速握手、挂起和唤醒。设备与主机建立高速连接后,在通信之前,主机需要了解设备并为设备分配驱动程序,枚举实现这个过程[3]。枚举过程首先是主机向默认地址发送Get Desriptor以获取设备的描述信息,主机了解设备的基本信息后给设备分配新地址。完成地址分配后,主机向分配的新地址发送请求获取设备能力,以给设备加载适合的驱动程序,驱动程序对设备进行配置。枚举过程由枚举控制、USB事务处理、数据包处理、设备描述符存储器等模块共同完成。例如,枚举开始阶段主机发送Get Desriptor以获取设备描述信息,这个控制传输事务包含 3个阶段:令牌包、数据包、握手包[4]。USB2.0 SIE的数据包模块检测接收到的令牌包的包标识(PID)并进行校验;校验无误后接收数据包,并进行PID校验和对数据的CRC校验;校验无误后向主机返回握手包ACK,以表明一个控制传输事务的完成,否则丢弃接收到的数据包并向主机发送NAK握手包。枚举控制模块根据这个事务判断接收到的是Get Desriptor,读取存储在描述符存储器的设备描述符,以IN事务发送给主机。这样枚举过程的Get Desriptor控制传输完成。工作模式控制电路的正常工作是设备控制器与主机通信并进行数据交互的前提,本文重点介绍此电路的设计。

2 工作模式控制电路设计

为判断设备应该工作在何种状态,通过检测USB总线上的状态及其持续时间来确定。因此程序中设计使用了两个计数器timer1和timer2,通过使用cleartimer1和cleartimer2两个变量来灵活控制两个计数器的计数,进而实现精确定时。

图2为工作模式控制电路的状态转换图,主要实现4个主要功能:高速握手(highspeed handshake、设备挂起(suspend)、挂起恢复(resume)、复位检测。

图2 工作模式控制电路状态图

2.1 高速握手

USB2.0设备连接到主机后,主机给设备供电并发送复位信号复位设备,之后设备进入全速模式工作,由图 2所示在 fullspeed状态检测到 SE0(linestate[1:0]=00)持续2.5 μs后,高速握手开始,设备控制器进入 sendchirp状态,设备向主机发送一个持续时间大于1 ms的K(linestate[1:0]=01)信号以检测主机是否支持高速模式。设备进入recvchirp状态并准备接收来自主机的JK序列。主机支持高速并检测到K之后,向设备发送JKJKJK序列以检测设备是否支持高速模式。设备控制器在recvchirp状态成功检测到3对JK序列后高速握手成功,进入到highspeed模式工作;否则,设备以全速模式工作。

2.2 设备挂起

根据USB2.0协议,为了减小功耗,当总线3 ms没有动作时,设备需进入挂起(suspend)状态,设备在挂起状态只能消耗小于500 μA的电流,并且进入挂起后设备需要保留原来的状态。

(1)全速模式挂起:检测到总线状态为SE0达到 3 ms,设备从fullspeed状态进入suspend状态。

(2)高速模式挂起:设备工作在高速模式时,由于高速复位和高速挂起都是发送一个大于3 ms的总线空闲信号,因此设备需要区分这两个事件。如图2,处于highspeed状态时,设备检测到总线空闲(SE0)3 ms,进入hsrevert状态。之后检测总线状态不为SE0,此后设备挂起。假如在 hsrevert状态后还检测到 SE0持续 100 μs,则判断为高速复位,clrtimer2=1。设备状态转换到sendchirp状态,开始设备的高速握手。

2.3 挂起恢复

设备处于挂起状态时,在它的上行口接收到任何非空闲信号时可以使设备恢复工作[5]。

(1)全速挂起恢复:设备从挂起状态起检测到的不是持续的J,则恢复到fullspeed状态,以全速模式工作。

(2)高速挂起恢复:挂起时保留着高速连接状态,highspeed=1且hssupport=1,挂起恢复需要判断是由总线动作引起还是系统复位引起。设备中测到总线状态为SE0,说明是由复位引起的挂起恢复,设备状态进入suspreset,然后检测到 SE0持续 2.5 μs后,进入高速握手过程sendchirp状态;反之,检测到挂起恢复信号 K,则设备从挂起恢复到高速模式。

2.4 复位检测

集线器通过在端口驱动一个SE0状态向所连接的USB设备发出复位信号。复位操作可以通过USB系统软件驱动集线器端口发出复位信号,也可以在设备端RESET信号置1,进行硬件复位。

(1)设备是从挂起状态复位:在suspend状态检测到SE0时,设备跳转到suspreset状态,检测总线状态为超过2.5 μs的SE0后设备启动高速握手检测,即进入sendchirp状态。

(2)设备从非挂起的全速状态复位:设备在检测到2.5 μs<T<3.0 ms的 SE0状态后启动高速握手检测。

(3)设备从非挂起的高速状态复位:设备在highspeed状态检测到总线上持续时间3.0 ms的SE0后,设备状态转换到hsrevert,以移除高速终端并重连D+的上拉电阻,此时为全速连接状态;之后设备需要在 100 μs<T<875 μs的时间内采样总线状态,检测到SE0持续2.5 μs后,进入sendchirp状态,开始高速握手过程。

3 仿真及验证

编写Testbench,在ModelSim中对设计的SIE进行仿真验证,结果符合USB2.0协议规范要求。在此简述工作模式控制电路中关于高速握手的仿真过程和结果。当设备连接到集线器后,进入init状态,通过timer2计数到OxFFFF(即 17 ms),使设备跳转 fullspeed状态。在 fullspeed状态,timer2计数到 OxA6(即 2.5 μs),设备进入到高速握手的sendchirp阶段。Sendchirp代码如下,对应仿真结果图3所示。

图3 发送chirpK检测主机是否支持高速

支持高速传输的主机接收到K后,发送3对KJ序列检测设备是否支持高速传输。设备进入recvchirp状态,判断是否接收到符合要求的3对JK序列。Recvchirp状态对应代码如下:

检测到linestate为持续时间达到2.5 μs(timer1计数到OxA6)10或 01时,判断为检测到 J或 K chirp。每检测到一个 K或 J,赋 clrtimer1=1来清零 timer1,同时 chirpcnt加1。设备支持高速传输模式,且成功检测到KJKJKJ,同时chirpcnt计数到6,则设备高速握手成功,进入高速工作模式。假如在chirp检测等待时间(1.1 ms)内没有等到检测到3对KJ信号,则握手失败,设备以全速模式工作。高速模式下的部分发送波形如图4所示。

图4 接收来自主机的JKJKJK握手信号

本文先介绍了USB2.0设备控制器总体架构及各模块功能,之后详细分析了USB2.0设备控制器工作模式控制电路需要实现的功能及设计细节,并在系统中进行了仿真验证。结果表明,所设计的工作模式控制电路功能正确,能配合其他模块一起进行USB设备开发。

[1]刘志华,郭付才,彭新伟,等.基于 CY7C68013A的FPGA配置和通信接口设计[J].电子技术应用,2013,39(2):18-19.

[2]AXELSON J.USB开发大全(第四版)[M].李鸿鹏,郑瑞霞,陈香凝,等译.北京:人民邮电出版社,2011.

[3]萧世文,宋延清.USB 2.0硬件设计[M].北京.清华大学出版社,2002.

[4]USB serial bus specification revision 2.0[EB/OL].(2002-04)[2014-03].http://www.usb.org.

[5]沈小磊,张晓彤,李占才.USB设备控制器的硬件实现与研[J].计算机工程,2007,33(24):247-249.

猜你喜欢

枚举控制电路数据包
基于理解性教学的信息技术教学案例研究
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
2017款本田雅阁车控制电路(二)
数组在处理枚举无规律数据中的应用
SmartSniff
2014款雷克萨斯CT200h车控制电路(一)
2018款别克GL8车控制电路(二)
2016款迈腾B8L车控制电路(一)
基于太阳影子定位枚举法模型的研究