USB低速设备数据传输控制方法及控制器转让专利

申请号 : CN201210453547.8

文献号 : CN103810127B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张妍彦赵远鸿康利云

申请人 : 深圳市中兴微电子技术有限公司

摘要 :

本发明公开了一种USB低速设备数据传输控制方法及控制器。该方法包括:在传输开始时,检测USB低速设备的D+信号线和D‑信号线,如果D+信号线和D‑信号线均处于空闲状态,则拉高D+信号线;在主机侧将D+信号线拉低后,直接进入复位状态,并拉高D+信号线;在主机侧复位完成后,控制数据传输通道EP并与主机侧进行数据传输,在传输结束后,将D+信号线和D‑信号线均设置为空闲状态。借助于本发明的技术方案,使原兼容USB低速的USB装置仅支持USB低速的外设功能,控制器的面积减少了50%,并按照USB的协议要求正确实现了物理层之间的接口通信传输及传输中通道的检测握手。

权利要求 :

1.一种USB低速设备数据传输控制方法,其特征在于,包括:在传输开始时,检测USB低速设备的D+信号线和D-信号线,如果所述D+信号线和所述D-信号线均处于空闲状态,则拉高D+信号线;

在主机侧将所述D+信号线拉低后,直接进入复位状态,并拉高D+信号线;

在所述主机侧复位完成后,控制数据传输通道EP并与所述主机侧进行数据传输,在传输结束后,将所述D+信号线和所述D-信号线均设置为空闲状态;

所述方法,还包括:预先设置EP的先入先出队列FIFO的大小;

在数据传输停止预定时间后,产生暂停中断,进入暂停模式,并通过暂停信号通知物理层进入暂停模式,在检测到唤醒信号或复位信号后,退出所述暂停模式,并通知所述物理层退出所述暂停模式。

2.如权利要求1所述的方法,其特征在于,控制所述EP具体包括:步骤1,判断EP是否准备好接收令牌包,如果判断为是,则执行步骤2,如果判断为否,则将所述EP设置为空闲状态;

步骤2,更新所述EP的先入先出队列FIFO中存储的数据,接收所述令牌包,并对所述令牌包进行译码解析;

步骤3,判断所述令牌包是否携带有数据包,如果判断为是,执行步骤4,否则执行步骤

5;

步骤4,处理所述令牌包,返回正确的响应,并将所述EP设置为空闲状态;

步骤5,处理所述令牌包,如果所述令牌包为IN事务传输令牌,则将所述EP设置为发送状态;如果所述令牌包为OUT事务传输令牌,则将所述EP设置为接收状态。

3.如权利要求2所述的方法,其特征在于,在所述EP为发送状态时,与所述主机侧进行数据传输具体包括:判断所述EP是否准备好发送数据包,如果判断为是,则接收OUT令牌包,并发送数据包,同时产生发送数据中断给所述主机侧,否则,结束发送,并通知所述主机侧。

4.如权利要求2所述的方法,其特征在于,在所述EP为接收状态时,与所述主机侧进行数据传输具体包括:在所述EP为接收状态时,判断所述EP是否准备好接收数据包,如果判断为是,则接收IN令牌包,并发送数据包,同时产生发送数据中断给所述主机侧,否则,结束接收,并通知所述主机侧。

5.如权利要求1所述的方法,其特征在于,所述方法还包括:预先配置EP的数目;

自动探测数据传输过程中的错误,通知主机侧并产生中断。

6.一种控制器,其特征在于,用于控制USB低速设备的数据传输,所述控制器具体包括:检测模块,用于在传输开始时,检测USB低速设备的D+信号线和D-信号线,如果所述D+信号线和所述D-信号线均处于空闲状态,则拉高D+信号线;

复位模块,用于在主机侧将所述D+信号线拉低后,直接进入复位状态,并拉高D+信号线;

传输模块,用于在所述主机侧复位完成后,控制数据传输通道EP并与所述主机侧进行数据传输,在传输结束后,将所述D+信号线和所述D-信号线均设置为空闲状态;

配置模块,用于预先设置EP的先入先出队列的大小;

暂停模块,用于在数据传输停止预定时间后,产生暂停中断,进入暂停模式,并通过暂停信号通知物理层进入暂停模式,在检测到唤醒信号或复位信号后,退出所述暂停模式,并通知所述物理层退出所述暂停模式。

7.如权利要求6所述的控制器,其特征在于,所述传输模块具体包括:第一判断子模块,用于判断EP是否准备好接收令牌包,如果判断为是,则调用更新子模块,如果判断为否,则将所述EP设置为空闲状态;

更新子模块,用于更新所述EP的先入先出队列FIFO中存储的数据;

接收子模块,用于接收所述令牌包;

第一处理子模块,用于对所述令牌包进行译码解析;

第二判断子模块,用于根据所述第一处理子模块的处理结果判断所述令牌包是否携带有数据包,如果判断为是,调用第二处理子模块,否则,调用第三处理子模块;

第二处理子模块,用于处理所述令牌包,返回正确的响应,并将所述EP设置为空闲状态;

第三处理子模块,用于处理所述令牌包,如果所述令牌包为IN事务传输令牌,则将所述EP设置为发送状态;如果所述令牌包为OUT事务传输令牌,则将所述EP设置为接收状态。

8.如权利要求7所述的控制器,其特征在于,所述传输模块具体包括:第三判断子模块,用于在所述EP为发送状态时,判断所述EP是否准备好发送数据包,如果判断为是,则调用第一发送子模块,否则,结束发送,并通知所述主机侧;

第一发送子模块,用于接收OUT令牌包,并发送数据包,同时产生发送数据中断给所述主机侧。

9.如权利要求7所述的控制器,其特征在于,所述传输模块具体包括:第四判断子模块,用于在所述EP为接收状态时,判断所述EP是否准备好接收数据包,如果判断为是,则调用第二发送子模块,否则,结束接收,并通知所述主机侧;

第二发送子模块,用于接收IN令牌包,并发送数据包,同时产生发送数据中断给所述主机侧。

10.如权利要求6所述的控制器,其特征在于,所述控制器进一步包括:配置模块,用于配置EP的数目;

纠错模块,用于自动探测数据传输过程中的错误,通知主机侧并产生中断。

说明书 :

USB低速设备数据传输控制方法及控制器

技术领域

[0001] 本发明涉及移动通讯领域,特别是涉及一种通用串行总线(IntelUniversalSerial Bus,简称为USB)低速设备数据传输控制方法及控制器。

背景技术

[0002] USB是家喻户晓的数据传输接口,自1994年11月诞生第一个草案至今,USB接口以其即插即用(Plug&Play)、接口电路简单、成本低、以及传输速度快的特点,已成为几乎所有需要进行数据传输的电子设备的标准配备;应用领域包括个人计算机、消费及移动类产品的快速同步即时传输;USB接口发展到今天应用最广的是USB2.0和USB3.0两个版本,USB3.0向下兼容USB2.0,二者的性能对比如表1所示:
[0003] 表1
[0004]
[0005] 在现有技术中,USB的设备类型(device class)都会表现出一些USB的基本特征,但USB设备还是可以分成一些共同的类型,同类型的设备可以拥有一些共同的行为特征和工作协议,表2为一些基本的USB的设备类型分类。
[0006] 表2
[0007]设备类型(device class) 设备举例
音频(audio) 扬声器
通信 MODEM
人机接口设备(HID) 键盘、鼠标
图像 摄像机、扫描仪
显示 监视器
物理回应设备 动力回馈式游戏操作杆
电源 不间断电源供电
打印机设备类 打印机
Bulk存储器 硬盘
存储设备类 CD_ROM、移动硬盘
[0008] 从表2中可以看出,USB人机接口设备(Human Interface Device,简称为HID)类是一个比较大的类,HID类主要用于计算机操作的一些方面,例如:USB鼠标、USB键盘、USB游戏操作杆、USB触摸板、USB轨迹球、电话拨号设备、模拟式磁带录放机(Video Cassette Recorder,简称为VCR)遥控等设备;HID的交换数据存储存在称为报表(report)的结构内。主机在控制传输和中断传输中发送及请求报表,从而发送和接收数据,报表的格式非常有弹性,可以处理任何类型的数据;设备可以在未预期的时间发送信息给主机,例如:键盘的按键或是鼠标的移动,所以主机会定时轮询设备,来取得最新的数据;对于HID设备来说,其传输速度为1.5Mbps,属于低速外设;在大部分的USB2.0装置中,低速外设都是作为可兼容的装置存在,但是对于HID设备来说,只需要低速的设备装置即可,因此在USB2.0的基础上提取USB的低速外设部分,去除USB高速、全速、以及功能受限主机(OTG)的功能,使得USB的低速外设装置面积更小,效率更高;设计一种低速(LS)的传输外设装置是一种理想的方案。
[0009] USB LS的传输外设装置的具体应用目标包括:实现协议层的LS外设传输控制,通过UTMI(USB2.0 Transceiver Macrocell Interface)接口和物理层进行数据传输过程中的控制和检错,进行物理层和内部缓冲寄存器(buffer)的数据交换,通过高级微控制器总线(Advanced Microcontroller Bus Architecture,简称为AMBA)的高级高性能总线(Advanced High performance Bus,简称为AHB)接口和核控制器进行通信,从而完成基本的bulk IN/OUT、控制传输、以及中断传输等。
[0010] 图1是现有技术中USB LS的模块示意图,如图1所示,主要包括UTM数据同步、包解码和译码,RAM控制,数据传输通道(EP)控制、CPU接口四个部分;由于通常物理层的时钟和控制器的时钟不属于同一个时钟域,所以数据首先由UTM进行数据同步,随后解码/译码模块处理传输包,包括包头的处理、数据传输以及CRC校验;EP是USB中的数据传输管道,EP控制模块控制分为一般EP控制和EP0控制两部分,进行数据传输时的EP控制;CPU接口允许CPU通过总线访问装置内部的控制、状态寄存器,以及每个EP的FIFO,CPU接口可以支持32bit的数据;RAM控制模块控制USB和CPU之间的单端口RAM的访问。
[0011] 现有技术中的USB2.0的控制器可以支持高速、全速/低速,并且可以作为主机(HOST)和设备(DEVICE),或者功能受限主机(OTG),这样的控制器可以完成USB2.0协议规定的主要功能,其基本的控制状态机步骤如下(异常未列出):
[0012] 步骤1、传输开始时,检测D+/D-信号线,如果二者处于空闲状态,检测自身的ID,根据物理层(Physical Layer,简称为PHY)提供的数据,可以判断控制器自己是DEVICE还是HOST,如果是HOST,进入步骤2;否则,进入步骤5;其中,D+信号线和D-信号线是USB用户数据传输的差分线。
[0013] 步骤2、HOST通过控制UTMI信号线,通过PHY对D+/D-线进行拉高和拉低的操作,与DEVICE进行连接;进入步骤3;
[0014] 步骤3、连接成功后进行复位操作,复位的过程可以通过DEVICE端对D+/D-线上的操作判断DEVICE是哪一种速度;进入步骤4;
[0015] 步骤4、复位完成后,控制器按照判断好的速度进行控制信息和数据包的传递;传输结束,回到IDLE状态,等待下一次传输;
[0016] 步骤5、如果检测到控制器为DEVICE,会进入OTG的模式,发起SRP(USB2.0的OTG协议中的唤醒部分),对HOST方进行唤醒操作,当主机被成功唤醒后,控制器退出OTG模式,与HOST侧进行连接;进入步骤6;
[0017] 步骤6、主机和DEVICE连接,DEVICE按照寄存器配置的速度进行复位操作,如果是高速,那么DEVCIE会首先拉高D-线,表示高速复位,如果是全速和低速,那么DEVICE会首先拉高D+线,表示全速/低速复位;进入步骤7;
[0018] 步骤7、复位完成后,HOST按照判断好的速度进行控制信息和数据包的传递;DEVIE控制器接收命令令牌包,按照命令包做出响应,例如,传输数据包或者握手等信息,同时进行数据包正确传输的判断,包括:CRC检验,传输数据包是否符合协议中传输类型的要求等;传输结束,回到IDLE状态,等待下一次传输。
[0019] 从上述处理可以看出,在现有技术中,USB LS的控制都是和全速的状态机在一起完成的,这样对于只要求LS的设备浪费了大量的设计资源,对于仅需要运用USB的LS的外设而言,并不需要全速和高速的功能。

发明内容

[0020] 本发明提供一种USB低速设备数据传输控制方法及控制器,以解决现有技术中由于USB LS的控制与全速和高速的控制在一起完成而导致的USB LS的设备浪费了大量的设计资源的问题。
[0021] 本发明提供一种USB低速设备数据传输控制方法,包括:在传输开始时,检测USB低速设备的D+信号线和D-信号线,如果D+信号线和D-信号线均处于空闲状态,则拉高D+信号线;在主机侧将D+信号线拉低后,直接进入复位状态,并拉高D+信号线;在主机侧复位完成后,控制数据传输通道EP并与主机侧进行数据传输,在传输结束后,将D+信号线和D-信号线均设置为空闲状态。
[0022] 优选地,控制EP具体包括:步骤1,判断EP是否准备好接收令牌包,如果判断为是,则执行步骤2,如果判断为否,则将EP设置为空闲状态;步骤2,更新EP的先入先出队列FIFO中存储的数据,接收令牌包,并对令牌包进行译码解析;步骤3,判断令牌包是否携带有数据包,如果判断为是,执行步骤4,否则执行步骤5;步骤4,处理令牌包,返回正确的响应,并将EP设置为空闲状态;步骤5,处理令牌包,如果令牌包为IN事务传输令牌,则将EP设置为发送状态;如果令牌包为OUT事务传输令牌,则将EP设置为接收状态。
[0023] 优选地,在EP为发送状态时,与主机侧进行数据传输具体包括:判断EP是否准备好发送数据包,如果判断为是,则接收OUT令牌包,并发送数据包,同时产生发送数据中断给主机侧,否则,结束发送,并通知主机侧。
[0024] 优选地,在EP为接收状态时,与主机侧进行数据传输具体包括:在EP为接收状态时,判断EP是否准备好接收数据包,如果判断为是,则接收IN令牌包,并发送数据包,同时产生发送数据中断给主机侧,否则,结束接收,并通知主机侧。
[0025] 优选地,上述方法还包括:预先配置EP的数目、以及各个EP的先入先出队列的大小;自动探测数据传输过程中的错误,通知主机侧并产生中断;在数据传输停止预定时间后,产生暂停中断,进入暂停模式,并通过暂停信号通知物理层进入暂停模式,在检测到唤醒信号或复位信号后,退出暂停模式,并通知物理层退出暂停模式。
[0026] 本发明还提供了一种控制器,用于控制USB低速设备的数据传输,包括:检测模块,用于在传输开始时,检测USB低速设备的D+信号线和D-信号线,如果D+信号线和D-信号线均处于空闲状态,则拉高D+信号线;复位模块,用于在主机侧将D+信号线拉低后,直接进入复位状态,并拉高D+信号线;传输模块,用于在主机侧复位完成后,控制数据传输通道EP并与主机侧进行数据传输,在传输结束后,将D+信号线和D-信号线均设置为空闲状态。
[0027] 优选地,传输模块具体包括:第一判断子模块,用于判断EP是否准备好接收令牌包,如果判断为是,则调用更新子模块,如果判断为否,则将EP设置为空闲状态;更新子模块,用于更新EP的先入先出队列FIFO中存储的数据;接收子模块,用于接收令牌包;第一处理子模块,用于对令牌包进行译码解析;第二判断子模块,用于根据第一处理子模块的处理结果判断令牌包是否携带有数据包,如果判断为是,调用第二处理子模块,否则,调用第三处理子模块;第二处理子模块,用于处理令牌包,返回正确的响应,并将EP设置为空闲状态;第三处理子模块,用于处理令牌包,如果令牌包为IN事务传输令牌,则将EP设置为发送状态;如果令牌包为OUT事务传输令牌,则将EP设置为接收状态。
[0028] 优选地,传输模块具体包括:第三判断子模块,用于在EP为发送状态时,判断EP是否准备好发送数据包,如果判断为是,则调用第一发送子模块,否则,结束发送,并通知主机侧;第一发送子模块,用于接收OUT令牌包,并发送数据包,同时产生发送数据中断给主机侧。
[0029] 优选地,传输模块具体包括:第四判断子模块,用于在EP为接收状态时,判断EP是否准备好接收数据包,如果判断为是,则调用第二发送子模块,否则,结束接收,并通知主机侧;第二发送子模块,用于接收IN令牌包,并发送数据包,同时产生发送数据中断给主机侧。
[0030] 优选地,上述控制器进一步包括:配置模块,用于配置EP的数目,以及各个EP的先入先出队列的大小;纠错模块,用于自动探测数据传输过程中的错误,通知主机侧并产生中断;暂停模块,用于在数据传输停止预定时间后,产生暂停中断,进入暂停模式,并通过暂停信号通知物理层进入暂停模式,在检测到唤醒信号或复位信号后,退出暂停模式,并通知物理层退出暂停模式。
[0031] 本发明有益效果如下:
[0032] 通过去除控制器中对全速和高速的控制,解决了现有技术中由于USB LS的控制与全速和高速的控制在一起完成而导致的USB LS的设备浪费了大量的设计资源的问题,使原兼容USB低速的USB装置仅支持USB低速的外设功能,控制器的面积减少了50%,并按照USB的协议要求正确实现了物理层之间的接口通信传输及传输中通道的检测握手。
[0033] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

[0034] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0035] 图1是现有技术中USB LS的模块示意图;
[0036] 图2是本发明实施例的USB低速设备数据传输控制方法的流程图;
[0037] 图3是本发明实施例的USB2.0 LS外设验证环境搭建时的一种可借鉴方案的连接示意图;
[0038] 图4是本发明实施例的EP0的控制主状态转移的流程图;
[0039] 图5是本发明实施例的EP0为IDLE模式时的控制流程图;
[0040] 图6是本发明实施例的EP0进入发送模式后的控制流程图;
[0041] 图7是本发明实施例的EP0进入接收模式后的控制流程图;
[0042] 图8是本发明实施例的初始化时复位的波形示意图;
[0043] 图9是本发明实施例的EP0进行控制IN控制传输时的波形示意图;
[0044] 图10是本发明实施例的EP4进行OUT传输时的波形示意图;
[0045] 图11是本发明实施例的控制器的结构示意图。

具体实施方式

[0046] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0047] 为了解决现有技术中由于USB LS的控制与全速和高速的控制在一起完成而导致的USB LS的设备浪费了大量的设计资源的问题,本发明提供了一种USB低速设备数据传输控制方法及控制器,在本发明实施例中,基于USB2.0的结构和原理,在原有基础上进行改进,使原兼容USB低速的USB2.0装置仅支持USB低速的device功能,使得原来的USB2.0装置可以仅完成USB低速的device(外设)功能,使得面积减少了50%,并按照USB的协议要求正确实现了物理层之间的接口通信传输及传输中通道的检测握手。以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
[0048] 方法实施例
[0049] 根据本发明的实施例,提供了一种USB低速设备数据传输控制方法,图2是本发明实施例的USB低速设备数据传输控制方法的流程图,如图2所示,根据本发明实施例的USB低速设备数据传输控制方法包括如下处理:
[0050] 步骤201,在传输开始时,检测USB低速设备的D+信号线和D-信号线,如果D+信号线和D-信号线均处于空闲状态,则拉高D+信号线;
[0051] 步骤202,在主机侧将D+信号线拉低后,直接进入复位状态,并拉高D+信号线;
[0052] 步骤203,在主机侧复位完成后,控制数据传输通道EP并与主机侧进行数据传输,在传输结束后,将D+信号线和D-信号线均设置为空闲状态。
[0053] 在步骤203中,控制EP具体包括:
[0054] 步骤1,判断EP是否准备好接收令牌包,如果判断为是,则执行步骤2,如果判断为否,则将EP设置为空闲状态;
[0055] 步骤2,更新EP的先入先出队列FIFO中存储的数据,接收令牌包,并对令牌包进行译码解析;
[0056] 步骤3,判断令牌包是否携带有数据包,如果判断为是,执行步骤4,否则执行步骤5;
[0057] 步骤4,处理令牌包,返回正确的响应,并将EP设置为空闲状态;
[0058] 步骤5,处理令牌包,如果令牌包为IN事务传输令牌,则将EP设置为发送状态;如果令牌包为OUT事务传输令牌,则将EP设置为接收状态。
[0059] 在EP为发送状态时,与主机侧进行数据传输具体包括:判断EP是否准备好发送数据包,如果判断为是,则接收OUT令牌包,并发送数据包,同时产生发送数据中断给主机侧,否则,结束发送,并通知主机侧。
[0060] 在EP为接收状态时,与主机侧进行数据传输具体包括:在EP为接收状态时,判断EP是否准备好接收数据包,如果判断为是,则接收IN令牌包,并发送数据包,同时产生发送数据中断给主机侧,否则,结束接收,并通知主机侧。
[0061] 优选地,在本发明实施例中,可以预先配置EP的数目、以及各个EP的先入先出队列的大小;还可以自动探测数据传输过程中的错误,通知主机侧并产生中断;在数据传输停止预定时间后,产生暂停中断,进入暂停模式,并通过暂停信号通知物理层进入暂停模式,在检测到唤醒信号或复位信号后,退出暂停模式,并通知物理层退出暂停模式。
[0062] 从上述处理可以看出,在本发明实施例中,控制器通过UTMI接口和物理层进行数据交换,同步控制器的PHY的时钟域,这样控制器内部就可以工作在总线时钟下,而不需要和PHY保持一致;图3是本发明实施例的USB2.0LS外设验证环境搭建时的一种可借鉴方案的连接示意图,如图3所示,在控制器与PHY连接时,只需要把图3中的MiniAB接口换成HOST的VIP接口,在控制器端通过总线接口(AHB接口)和CPU相连接即可。
[0063] 本发明实施例的控制器装置能够编码、译码、纠错和控制所有发送和接收到的USB数据包,IN传输的控制数据流通过外设的发送FIFO进行,OUT传输的控制数据流通过外设的接收FIFO进行;本发明实施例的控制器支持动态FIFO。
[0064] 此外,本发明实施例支持可配置的EP数目,EP数目是0 4,均可按照传输要求配置,~例如:对于BULK OUT操作EP可设置为RX endpoint,对于BULKIN操作EP可设置为TX endpoint;另外,EP的FIFO可以配置为不同的大小,满足不同传输的要求,是传输能力多样化;能够接受主机(HOST)方发出的SOF包,并产生SOF中断;并在数据传输中产生相应的控制中断。
[0065] 本发明实施例的控制器还支持DEVICE模式的暂停(SUSPEND)操作,例如,当USB上没有数据传输3ms时,控制器可以产生SUSPEND中断,进入SUSPEND模式,在该模式下,控制器通过SUSPEND信号通知PHY进入SUSPEND模式,此时PHY时钟关断,直到总线上监测到唤醒或者复位信号,控制器退出SUSPEND并通过SUSPEND信号通知PHY,PHY退出SUSPEND状态。
[0066] 本发明实施例的控制器还支持数据的循环冗余校验(Cyclic RedundancyCheck,简称为CRC),具有数据纠错能力,能够自动探测USB传输过程中的协议错误,并返回STALL包,并产生中断,当CPU接收到该中断时,可以终止当前传输,清除STALL的中断位,控制器自动返回IDLE状态。
[0067] 以下结合附图,以USB2.0版本为例,对本发明实施例的上述技术方案进行详细的说明。
[0068] 在现有技术中,针对低速装置,USB的控制器中的很多功能是不需要的,例如,HOST功能、高速部分、以及OTG功能等;本发明实施例为了实现对基于USB2.0低速装置的传输控制,保留了低速部分DEVICE的控制部分,以及CRC检验和协议判断的部分,去除了HOST功能,高速部分以及OTG的部分功能;本发明实施例的基本的控制状态机步骤如下(异常未列出):
[0069] 步骤1、传输开始时,检测D+/D-信号线,如果二者处于空闲状态,发起SRP操作,即拉高D+线;等待HOST侧响应;
[0070] 步骤2、HOST侧将D+线拉低,表示被唤醒,DEVICE跳出SRP状态直接进入复位状态,拉高D+线;进入步骤3;
[0071] 步骤3、在本状态中,FS和LS的复位是一致的,都是拉高D+线,HOST接收到复位信号后,开始复位操作,复位完成后,HOST开始进行数据包和命令信息的传输;进入步骤4;
[0072] 步骤4、在数据传输过程中,低速设备对于D+/D-线的状态判断与全速和高速相反,传统的控制器通过判断UTMI的信号linstate的状态区分全速和低速,本发明实施例不需要进行速度判断;
[0073] 步骤5、传输结束,回到IDLE状态,等待下一次传输。
[0074] 通过上述控制器的主状态机的说明,可以看出本发明实施例去掉了大部分的控制状态和判断部分,达到了缩减电路资源的目的。
[0075] 基本的USB2.0控制器还需要完成对EP的控制,按照USB2.0协议,EP之间建立连接,形成数据传输的管道;本发明实施例在USB2.0的基础上提取USB的低速外设,并对内部状态机进行控制:包括主状态机,以控制USB装置的整体工作,完成对USB装置内部EP的控制。本发明实施例对于EP的控制采用单独的控制状态机,控制单个EP的数据通道,EP0是EP中比较特殊的一个,用来完成LINK UP等初始化的操作,以EP0的控制传输为例说明本装置对EP的控制过程;
[0076] 图4是本发明实施例的EP0的控制主状态转移的流程图,传统的USB控制器是软件通过读EP0状态寄存器,判断EP0是否处于空闲,如果是的话,可以挂起,或者发送SETUP令牌包;然后进入IDLE状态;本发明实施例也可以通过软件读EP0的状态,但不会发起SETUP令牌,因为命令令牌只能由HOST发出;本发明实施例的EP0直接处于IDLE状态;之后,传统的USB控制器是可以通过软件配置,使EP0进入发送或者接收模式;本发明实施例会等待接收HOST侧的令牌包,如果是IN操作,则EP进入发送状态,如果是OUT操作,则EP进入接收状态。
[0077] 图5是本发明实施例的EP0为IDLE模式时的控制流程图,如图5所示,在本发明实施例中,当上电和复位时,EP进入IDLE模式;在主状态机中,当进行SETUP传输,即USB进行枚举状态时,进入IDLE模式;进入IDLE模式后,进行以下步骤:
[0078] 步骤1,准备接收数据包或者令牌包,如果没有准备好,回到IDLE状态,转备好后,进入步骤2;
[0079] 步骤2,更新FIFO中存储的数据,接收命令;
[0080] 步骤3,接收到命令后,进行译码,对命令进行解析,按照USB2.0的协议判断命令令牌是否带有数据包,如果不带有数据包进入步骤4,否则进入步骤5;
[0081] 步骤4,处理令牌包,设置数据,并返回正确的响应,回到IDLE状态;
[0082] 步骤5,处理令牌包,设置数据;判断是否是IN事务传输令牌,是的话进入发送模式(图6),不是则进入步骤6;
[0083] 步骤6,进入OUT事务传输,进入接收模式(图7)。
[0084] 图6是本发明实施例的EP0进入发送模式后的控制流程图,如图6所示,如果EP0为TX模式,传统USB控制器可以发送和接收OUT令牌包,本发明实施例只能够接收OUT令牌包;所有接收到的IN令牌包都会被当做数据处理,如果此时接收到SETUP命令或者OUT令牌包,会产生SETUPEND的条件,EP0退出TX模式,另外,如果传输的数据包的长度小于EP0配置的最大包长度,或者接收到空包,USB退出该状态;其它EP的TX模式与此类似,处理步骤如下:
[0085] 步骤1,准备发送包判断,如果没有转备好,直接结束发送,返回STALL响应,表示数据没有准备好,否则进入步骤2;
[0086] 步骤2,接收OUT令牌包,发送DATA0数据包,同时产生发送数据中断给CPU;
[0087] 步骤3,OUT事务结束。
[0088] 图7是本发明实施例的EP0进入接收模式后的控制流程图,如图7所示,EP0在RX模式是,传统USB控制器可以发送和接收IN令牌包,本发明实施例只能够接收IN令牌包;所有接收到的OUT令牌包都会被当做数据处理,如果接收到SETUP或者OUT令牌包,会产生SETUPEND条件,RX模式终止;另外如果主机端发送无效的令牌包或者空包,又或者发送的包长度小于最大包长度,也会产生SETUPEND条件;它EP的TX模式与此类似,处理步骤如下:
[0089] 步骤1,准备接收包判断,如果没有转备好,直接结束发送,返回STALL响应,表示数据没有准备好,否则进入步骤2;
[0090] 步骤2,接收IN令牌包后,发送数据包,同时产生发送数据中断给CPU;
[0091] 步骤3,IN事务结束。
[0092] 在本发明实施例中,该控制器的状态受物理层接口信号主要是DP/DM信号的控制,表示为两种状态,K状态和J状态;该状态由UTMI信号接口的linestate表示,具体如下:assign j=linestate[1]& linestate[0];assign k= linestate[1]&linestate[0]。图8~ ~
是本发明实施例的初始化时复位的波形示意图,如图8所示,dm信号拉高,dp不变,经过SE0状态后dm信号拉高;图9是本发明实施例的EP0进行控制IN控制传输时的波形示意图,如图9所示,其中一个SETADDR的数据包如下:HOST端设置地址为5b,控制器回应令牌包为d2,CLK为1.5Mbps;图10是本发明实施例的EP4进行OUT传输时的波形示意图,如图10所示,数据长度为64。
[0093] 综上所述,借助于本发明实施例的技术方案,通过去除控制器中对全速和高速的控制,解决了现有技术中由于USB LS的控制与全速和高速的控制在一起完成而导致的USB LS的设备浪费了大量的设计资源的问题,使原兼容USB低速的USB装置仅支持USB低速的外设功能,控制器的面积减少了50%,并按照USB的协议要求正确实现了物理层之间的接口通信传输及传输中通道的检测握手。
[0094] 装置实施例
[0095] 根据本发明的实施例,提供了一种控制器,用于控制USB低速设备的数据传输,图11是本发明实施例的控制器的结构示意图,如图11所示,根据本发明实施例的控制器包括:
检测模块110、复位模块112、以及传输模块114,以下对本发明实施例的各个模块进行详细的说明。
[0096] 检测模块110,用于在传输开始时,检测USB低速设备的D+信号线和D-信号线,如果D+信号线和D-信号线均处于空闲状态,则拉高D+信号线;
[0097] 复位模块112,用于在主机侧将D+信号线拉低后,直接进入复位状态,并拉高D+信号线;
[0098] 传输模块114,用于在主机侧复位完成后,控制数据传输通道EP并与主机侧进行数据传输,在传输结束后,将D+信号线和D-信号线均设置为空闲状态。
[0099] 传输模块114具体包括:
[0100] 第一判断子模块,用于判断EP是否准备好接收令牌包,如果判断为是,则调用更新子模块,如果判断为否,则将EP设置为空闲状态;
[0101] 更新子模块,用于更新EP的先入先出队列FIFO中存储的数据;
[0102] 接收子模块,用于接收令牌包;
[0103] 第一处理子模块,用于对令牌包进行译码解析;
[0104] 第二判断子模块,用于根据第一处理子模块的处理结果判断令牌包是否携带有数据包,如果判断为是,调用第二处理子模块,否则,调用第三处理子模块;
[0105] 第二处理子模块,用于处理令牌包,返回正确的响应,并将EP设置为空闲状态;
[0106] 第三处理子模块,用于处理令牌包,如果令牌包为IN事务传输令牌,则将EP设置为发送状态;如果令牌包为OUT事务传输令牌,则将EP设置为接收状态。
[0107] 第三判断子模块,用于在EP为发送状态时,判断EP是否准备好发送数据包,如果判断为是,则调用第一发送子模块,否则,结束发送,并通知主机侧;
[0108] 第一发送子模块,用于接收OUT令牌包,并发送数据包,同时产生发送数据中断给主机侧。
[0109] 第四判断子模块,用于在EP为接收状态时,判断EP是否准备好接收数据包,如果判断为是,则调用第二发送子模块,否则,结束接收,并通知主机侧;
[0110] 第二发送子模块,用于接收IN令牌包,并发送数据包,同时产生发送数据中断给主机侧。
[0111] 优选地,在本发明实施例中,控制器进一步包括:
[0112] 配置模块,用于配置EP的数目,以及各个EP的先入先出队列的大小;
[0113] 纠错模块,用于自动探测数据传输过程中的错误,通知主机侧并产生中断;
[0114] 暂停模块,用于在数据传输停止预定时间后,产生暂停中断,进入暂停模式,并通过暂停信号通知物理层进入暂停模式,在检测到唤醒信号或复位信号后,退出暂停模式,并通知物理层退出暂停模式。
[0115] 从上述处理可以看出,在本发明实施例中,控制器通过UTMI接口和物理层进行数据交换,同步控制器的PHY的时钟域,这样控制器内部就可以工作在总线时钟下,而不需要和PHY保持一致;图3是本发明实施例的USB2.0 LS外设验证环境搭建时的一种可借鉴方案的连接示意图,如图3所示,在控制器与PHY连接时,只需要把图3中的MiniAB接口换成HOST的VIP接口,在控制器端通过总线接口(AHB接口)和CPU相连接即可。
[0116] 本发明实施例的控制器装置能够编码、译码、纠错和控制所有发送和接收到的USB数据包,IN传输的控制数据流通过外设的发送FIFO进行,OUT传输的控制数据流通过外设的接收FIFO进行;本发明实施例的控制器支持动态FIFO。
[0117] 此外,本发明实施例支持可配置的EP数目,EP数目是0 4,均可按照传输要求配置,~例如:对于BULK OUT操作EP可设置为RX endpoint,对于 BULKIN操作EP可设置为TX endpoint;另外,EP的FIFO可以配置为不同的大小,满足不同传输的要求,是传输能力多样化;能够接受主机(HOST)方发出的SOF包,并产生SOF中断;并在数据传输中产生相应的控制中断。
[0118] 本发明实施例的控制器还支持DEVICE模式的暂停(SUSPEND)操作,例如,当USB上没有数据传输3ms时,控制器可以产生SUSPEND中断,进入SUSPEND模式,在该模式下,控制器通过SUSPEND信号通知PHY进入SUSPEND模式,此时PHY时钟关断,直到总线上监测到唤醒或者复位信号,控制器退出SUSPEND并通过SUSPEND信号通知PHY,PHY退出SUSPEND状态。
[0119] 本发明实施例的控制器还支持数据的循环冗余校验(Cyclic RedundancyCheck,简称为CRC),具有数据纠错能力,能够自动探测USB传输过程中的协议错误,并返回STALL包,并产生中断,当CPU接收到该中断时,可以终止当前传输,清除STALL的中断位,控制器自动返回IDLE状态。
[0120] 以下结合附图,以USB2.0版本为例,对本发明实施例的上述技术方案进行详细的说明。
[0121] 在现有技术中,针对低速装置,USB的控制器中的很多功能是不需要的,例如,HOST功能、高速部分、以及OTG功能等;本发明实施例为了实现对基于USB2.0低速装置的传输控制,保留了低速部分DEVICE的控制部分,以及CRC检验和协议判断的部分,去除了HOST功能,高速部分以及OTG的部分功能;本发明实施例的基本的控制状态机步骤如下(异常未列出):
[0122] 步骤1、传输开始时,检测D+/D-信号线,如果二者处于空闲状态,发起SRP操作,即拉高D+线;等待HOST侧响应;
[0123] 步骤2、HOST侧将D+线拉低,表示被唤醒,DEVICE跳出SRP状态直接进入复位状态,拉高D+线;进入步骤3;
[0124] 步骤3、在本状态中,FS和LS的复位是一致的,都是拉高D+线,HOST接收到复位信号后,开始复位操作,复位完成后,HOST开始进行数据包和命令信息的传输;进入步骤4;
[0125] 步骤4、在数据传输过程中,低速设备对于D+/D-线的状态判断与全速和高速相反,传统的控制器通过判断UTMI的信号linstate的状态区分全速和低速,本发明实施例不需要进行速度判断;
[0126] 步骤5、传输结束,回到IDLE状态,等待下一次传输。
[0127] 通过上述控制器的主状态机的说明,可以看出本发明实施例去掉了大部分的控制状态和判断部分,达到了缩减电路资源的目的。
[0128] 基本的USB2.0控制器还需要完成对EP的控制,按照USB2.0协议,EP之间建立连接,形成数据传输的管道;本发明实施例在USB2.0的基础上提取USB的低速外设,并对内部状态机进行控制:包括主状态机,以控制USB装置的整体工作,完成对USB装置内部EP的控制。本发明实施例对于EP的控制采用单独的控制状态机,控制单个EP的数据通道,EP0是EP中比较特殊的一个,用来完成LINK UP等初始化的操作,以EP0的控制传输为例说明本装置对EP的控制过程;
[0129] 图4是本发明实施例的EP0的控制主状态转移的流程图,传统的USB控制器是软件通过读EP0状态寄存器,判断EP0是否处于空闲,如果是的话,可以挂起,或者发送SETUP令牌包;然后进入IDLE状态;本发明实施例也可以通过软件读EP0的状态,但不会发起SETUP令牌,因为命令令牌只能由HOST发出;本发明实施例的EP0直接处于IDLE状态;之后,传统的USB控制器是可以通过软件配置,使EP0进入发送或者接收模式;本发明实施例会等待接收HOST侧的令牌包,如果是IN操作,则EP进入发送状态,如果是OUT操作,则EP进入接收状态。
[0130] 图5是本发明实施例的EP0为IDLE模式时的控制流程图,如图5所示,在本发明实施例中,当上电和复位时,EP进入IDLE模式;在主状态机中,当进行SETUP传输,即USB进行枚举状态时,进入IDLE模式;进入IDLE模式后,进行以下步骤:
[0131] 步骤1,准备接收数据包或者令牌包,如果没有准备好,回到IDLE状态,转备好后,进入步骤2;
[0132] 步骤2,更新FIFO中存储的数据,接收命令;
[0133] 步骤3,接收到命令后,进行译码,对命令进行解析,按照USB2.0的协议判断命令令牌是否带有数据包,如果不带有数据包进入步骤4,否则进入步骤5;
[0134] 步骤4,处理令牌包,设置数据,并返回正确的响应,回到IDLE状态;
[0135] 步骤5,处理令牌包,设置数据;判断是否是IN事务传输令牌,是的话进入发送模式(图6),不是则进入步骤6;
[0136] 步骤6,进入OUT事务传输,进入接收模式(图7)。
[0137] 图6是本发明实施例的EP0进入发送模式后的控制流程图,如图6所示,如果EP0为TX模式,传统USB控制器可以发送和接收OUT令牌包,本发明实施例只能够接收OUT令牌包;所有接收到的IN令牌包都会被当做数据处理,如果此时接收到SETUP命令或者OUT令牌包,会产生SETUPEND的条件,EP0退出TX模式,另外,如果传输的数据包的长度小于EP0配置的最大包长度,或者接收到空包,USB退出该状态;其它EP的TX模式与此类似,处理步骤如下:
[0138] 步骤1,准备发送包判断,如果没有转备好,直接结束发送,返回STALL响应,表示数据没有准备好,否则进入步骤2;
[0139] 步骤2,接收OUT令牌包,发送DATA0数据包,同时产生发送数据中断给CPU;
[0140] 步骤3,OUT事务结束。
[0141] 图7是本发明实施例的EP0进入接收模式后的控制流程图,如图7所示,EP0在RX模式是,传统USB控制器可以发送和接收IN令牌包,本发明实施例只能够接收IN令牌包;所有接收到的OUT令牌包都会被当做数据处理,如果接收到SETUP或者OUT令牌包,会产生SETUPEND条件,RX模式终止;另外如果主机端发送无效的令牌包或者空包,又或者发送的包长度小于最大包长度,也会产生SETUPEND条件;它EP的TX模式与此类似,处理 步骤如下:
[0142] 步骤1,准备接收包判断,如果没有转备好,直接结束发送,返回STALL响应,表示数据没有准备好,否则进入步骤2;
[0143] 步骤2,接收IN令牌包后,发送数据包,同时产生发送数据中断给CPU;
[0144] 步骤3,IN事务结束。
[0145] 在本发明实施例中,该控制器的状态受物理层接口信号主要是DP/DM信号的控制,表示为两种状态,K状态和J状态;该状态由UTMI信号接口的linestate表示,具体如下:assign j=linestate[1] & linestate[0];assign k= linestate[1]&linestate[0]。图8~ ~
是本发明实施例的初始化时复位的波形示意图,如图8所示,dm信号拉高,dp不变,经过SE0状态后dm信号拉高;图9是本发明实施例的EP0进行控制IN控制传输时的波形示意图,如图9所示,其中一个SETADDR的数据包如下:HOST端设置地址为5b,控制器回应令牌包为d2,CLK为1.5Mbps;图10是本发明实施例的EP4进行OUT传输时的波形示意图,如图10所示,数据长度为64。
[0146] 综上所述,借助于本发明实施例的技术方案,通过去除控制器中对全速和高速的控制,解决了现有技术中由于USB LS的控制与全速和高速的控制在一起完成而导致的USB LS的设备浪费了大量的设计资源的问题,使原兼容USB低速的USB装置仅支持USB低速的外设功能,控制器的面积减少了50%,并按照USB的协议要求正确实现了物理层之间的接口通信传输及传输中通道的检测握手。
[0147] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0148] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0149] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0150] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0151] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0152] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的控制器中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0153] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。