专利名称:Usb接口控制模块和usb设备的数据传输控制方法
技术领域:
本发明涉及通信领域,具体而言,涉及一种USB接口控制模块和USB设备的数据传输控制方法。
背景技术:
USB (Universal Serial Bus,通用串行总线)是一种应用在PC领域的新型接口技术。USB接口技术经过多年发展已经经历了 USB1. 1,USB2. 0,USB3. O三个阶段,现在最新的USB通信协议是USB3. O。USB接口具有易于使用、传输速率高、成本低、可靠性强、功耗低等优点,而且支持热插拔、基于上述特点使得USB接口被广泛使用,现已成为PC机上使用最广泛的接口。USB设备一般包含USB接口的USB系统芯片,在该芯片的设计中,会将USB通信模块集成到系统芯片中,因而,需要一个USB接口控制模块来保证整个芯片能够实现USB通信功能。USB设备与USB主机(一般为PC机)进行通信时,必须有端口缓存空间用于存储接收到的数据和待发送的数据,在现有的USB设备设计中,USB端口缓存空间都是容量固定且地址固定的缓存空间,一般以寄存器或者FIFO的形式作为缓存。如图1所示,现有技术的USB接口控制模块包括寄存器、传输控制模块、控制器和端口缓存,系统芯片通过配置寄存器来控制USB接口控制模块中的控制器,进而实现USB通信,通信时接收和发送的数据都先存在端口缓存中。由于系统芯片执行程序时的数据都是存放在芯片数据存储器中,故系统芯片还要做USB端口缓存和数据存储器之间的数据搬移的工作。因而,在进行USB传输时,当传输数据量较大时,系统芯片需要多次将数据从芯片数据存储器转移到USB端口缓存(或是从端口缓存到芯片数据存储器),所以传输速度较慢。针对相关技术中当传输数据量较大时,USB设备传输速度较慢的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种USB接口控制模块和USB设备的数据传输控制方法,以解决当传输数据量较大时,USB设备传输速度较慢的问题。为了实现上述目的,根据本发明的一个方面,提供了 一种USB接口控制模块。根据本发明的USB接口控制模块用于连接主机与USB系统芯片,USB设备的端口缓存空间为SRAM,其中,SRAM是USB系统芯片的数据存储器的一部分,USB接口控制模块包括主控单元和数据传输单元,其中,数据传输单元用于读取SRAM的数据至主控单元,主控单元用于将数据传输单元读取到的数据打包并发送给主机,以及接收并解析主机下发的数据包,数据传输单元还用于将主控单元解析后的数据写入至SRAM。进一步地,该USB接口控制模块还包括地址寄存器,用于存储SRAM的初始地址;以及地址控制单元,用于读取地址寄存器中存储的地址,并在数据传输单元每读取或写入IByte数据时,将读取到的地址加I后提供给数据传输单元,其中,数据传输单元还用于根据地址控制单元提供的地址读取或写入数据。进一步地,主控单元还用于在与主机完成一次数据传输后,向地址控制单元提供传输结果信息,其中,传输结果信息包括传输成功信息和传输失败信息;地址控制单元还用于在获取到传输失败信息时,重新读取地址寄存器中存储的地址。进一步地,主控单元还用于在完成数据传输之后,向地址控制单元提供传输结果信息之前,接收主机下发的传输结果数据包,并解析传输结果数据包得到传输结果信息。为了实现上述目的,根据本发明的另一方面,提供了一种USB设备的数据传输控制方法。根据本发明的USB设备的数据传输控制方法包括读取SRAM的数据;以及将读取到的数据打包并发送给主机,其中,USB设备的端口缓存空间为SRAM,SRAM是USB设备的系统芯片数据存储器的一部分。进一步地,在读取SRAM的数据之前,该方法还包括获取SRAM的初始地址,其中,读取SRAM的数据包括读取SRAM中第一地址的数据得到IByte数据;将第一地址加I后得到第二地址;以及读取SRAM中第二地址的数据得到IByte数据,其中,首次读取SRAM数据时的地址为初始地址。进一步地,在读取到的数据打包并发送给主机,完成一次向主机的数据发送后,该方法还包括获取传输结果信息,其中,传输结果信息包括传输成功信息和传输失败信息;以及在获取到传输失败信息时,重新获取SRAM的初始地址。为了实现上述目的,根据本发明的又一方面,提供了另一种USB设备的数据传输控制方法。根据本发明的USB设备的数据传输控制方法包括接收并解析主机下发的数据包;以及将解析后的数据写入至SRAM,其中,USB设备的端口缓存空间为SRAM,其中,SRAM是USB设备的系统芯片数据存储器的一部分。进一步地,在将解析后的数据写入至SRAM之前,该方法还包括获取SRAM的初始地址,其中,将解析后的数据写入至SRAM包括将解析后的IByte数据写入至SRAM中第一地址;将第一地址加I后得到第二地址;以及将解析后的下IByte数据写入至SRAM中第二地址,其中,解析后的首Byte数据写入至初始地址。进一步地,在将解析后的数据全部写入至SRAM,完成一次主机的数据接收后,该方法还包括获取传输结果信息,其中,传输结果信息包括传输成功信息和传输失败信息;以及在获取到传输失败信息时,重新获取SRAM的初始地址。通过本发明,采用包括以下部分的USB接口控制模块数据传输单元用于读取SRAM的数据至主控单元,主控单元用于将数据传输单元读取到的数据打包并发送给主机,以及接收并解析主机下发的数据包,数据传输单元还用于将主控单元解析后的数据写入至SRAM,其中,SRAM为USB设备的端口缓存空间,同时,SRAM是USB系统芯片的数据存储器的一部分,通过将USB系统芯片数据存储器的一部分作为USB设备的端口缓存空间,从而节省了数据传输过程中系统芯片数据存储器到USB端口缓存的数据搬移过程,解决了传输数据量较大时,USB设备传输速度较慢的问题,进而达到了提高USB设备传输速度的效果。
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据相关技术的USB接口控制模块的原理框图;图2是根据本发明第一实施例的USB接口控制模块的原理框图;图3是根据本发明第二实施例的USB接口控制模块的原理框图;图4是根据本发明第三实施例的USB接口控制模块的原理框图;图5是根据本发明第一实施例的USB设备的数据传输控制方法的流程图;以及图6是根据本发明第二实施例的USB设备的数据传输控制方法的流程图。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。首先介绍本具体实施方式
提供的USB接口控制模块的实施例。图2是根据本发明第一实施例的USB接口控制模块的原理框图,如图2,该USB接口控制模块用于连接主机与USB系统芯片,其中,USB设备的端口缓存空间为静态随机存储器(Static Random Access Memory, SRAM),该SRAM是USB系统芯片的数据存储器的一部分,USB接口控制模块包括主控单元和数据传输单元。在USB设备与主机的数据传输中,主控单元首先接收并解析主机下发的数据包,得到数据传输方向信息。当传输方向为USB设备至主机时,数据传输单元读取SRAM的数据至主控单元,也即读取USB设备的端口缓存空间的数据至主控单元,主控单元将读取到的数据打包并发送给主机,完成USB设备至主机的数据传输。在此过程中,读取端口缓存空间时无需先将数据由系统芯片数据存储器至缓存,而是直接可读取到缓存内容,节省了 USB端口缓存和数据存储器之间的数据搬移,提高了 USB设备至主机的数据传输速度。当传输方向为主机至USB设备时,主控单元将主机下发的数据接收并解析,数据传输单元将解析后的数据写入至USB设备的端口缓存空间,也即直接写入至SRAM完成主机至USB设备的数据传输。在此过程中,将接收到的数据直接写入至系统芯片的数据存储器,系统芯片的CPU在访问数据时无需先将数据由缓存移至数据存储器,节省了 USB端口缓存和数据存储器之间的数据搬移,提高了主机至USB设备的数据传输速度。在该实施例中,将系统芯片数据存储器的一部分配置为USB端口缓存空间,在进行数据的读写时直接对数据存储器进行读写,从而避免了系统芯片在端口缓存和数据存储器之间搬移数据的过程,提高了 USB设备的数据传输速度。进一步地,当用户设计不同的USB设备固件时,可以通过配置寄存器的值来灵活设置各个端口缓存的实际空间大小和地址,从而使得USB端口缓存得到了更加高效、更加灵活的应用。图3是根据本发明第二实施例的USB接口控制模块的原理框图,如图3所示,该USB接口控制模块用于连接主机与USB系统芯片,其中,USB设备的端口缓存空间为SRAM,该SRAM是USB系统芯片的数据存储器的一部分,USB接口控制模块包括主控单元、数据传输单元、地址寄存器和地址控制单元。
在USB设备与主机的数据传输中,主控单元首先接收并解析主机下发的数据包,得到数据传输方向信息。当传输方向为USB设备至主机时,数据传输单元读取SRAM的数据至主控单元,主控单元将读取到的数据打包并发送给主机,完成USB设备至主机的数据传输。其中,数据传输单元在读取SRAM中的数据时,读取地址由地址控制单元提供。地址控制单元在数据传输单元读取开始时,首先读取地址寄存器中存储的SRAM的初始地址N,并将初始地址N提供给数据传输单元,数据传输单元读取SRAM中初始地址N对应位置的IByte数据,在数据传输单元读取IByte数据后,地址控制单元将读取到的初始地址N加I后提供给数据传输单元,数据传输单元读取SRAM中地址N+1对应位置的IByte数据,在数据传输单元读取2Byte数据后,地址控制单元将读取到的初始地址N加2后提供给数据传输单元,数据传输单元读取SRAM中地址N+2对应位置的IByte数据,以此类推,直至将要传输至主机的数据读取完毕。当传输方向为主机至USB设备时,主控单元将主机下发的数据接收并解析,数据传输单元将解析后的数据写入至USB设备的端口缓存空间。其中,数据传输单元在将数据写入SRAM中时,写入地址由地址控制单元提供。地址控制单元在数据传输单元写入开始时,首先读取地址寄存器中存储的SRAM的初始地址N,并将初始地址N提供给数据传输单元,数据传输单元将IByte数据写入SRAM中初始地址N对应位置,在数据传输单元写入IByte数据后,地址控制单元将读取到的初始地址N加I后提供给数据传输单元,数据传输单元将IByte数据写入SRAM中地址N+1对应位置,在数据传输单元写入2Byte数据后,地址控制单元将读取到的初始地址N加2后提供给数据传输单元,数据传输单元将IByte数据写入SRAM中地址N+2对应位置,以此类推,直至将要接收到的数据写入完毕。在USB设备将数据上传至主机、完成一次数据传输之后,主机下发传输结果数据包,主控单元解析传输结果数据包得到传输结果信息,其中,传输结果信息包括传输成功信息和传输失败信息,在解析之后,主控单元将传输结果信息提供给地址控制单元,如果获取到传输失败信息,地址控制单元重新读取地址寄存器中存储的地址,并将重新的地址提供给数据传输单元,以使数据传输单元重新作该次数据的传输。在该实施例中,通过设置地址寄存器存储SRAM的初始地址,从而用户在设置各个端口缓存的实际空间大小和地址时,只需配置地址寄存器即可;通过地址控制单元向数据传输单元提供数据传输的地址,随传输数据量变化自动改变地址,从而能够正确、快速地保证对SRAM的数据读写;在一次数据传输之后,根据主机下发的信息进行传输结果的检测,在传输失败时重新进行传输,提高了 USB数据传输的完整性和准确性。图4是根据本发明第三实施例的USB接口控制模块的原理框图,如图4所示,该USB接口控制模块设有数据传输控制模块(也即数据传输单元),将系统芯片数据存储器的一部分配置为USB端口缓存空间,采用SRAM作为USB端口缓存空间,SRAM是芯片数据存储器的一部分,通过配置该USB接口控制模块的寄存器能够灵活设置分配给USB端口缓存空间的初始地址和容量。USB接口控制模块包括USB设备控制器(UDC,也即主控单元)、数据传输控制模块(也即数据传输单元)、缓存地址控制器(也即地址控制单元)、数据载入控制模块、时钟同步控制模块、SFRffB总线接口。其中,UDC是USB接口控制模块中的主要模块,在USB传输中,UDC模块负责按照USB协议分析接收到的USB数据包以及对发送的数据进行打包。UDC分析后的信息包括一些协议信息,例如数据传输方向,数据传输是否成功等,还包括要传输的数据正文,也即协议中数据包中的数据,这些信息UDC都会以硬件信号形式传递给USB接口控制模块中的其他相关模块。数据传输控制模块负责UDC和SRAM之间的数据传输,即将UDC收到的数据写到SRAM中或将SRAM中的数据读出来传递给UDC。UDC会提供数据方向的信号,若方向为IN,则数据传输控制模块读SRAM,若为0UT,则进行写SRAM操作,读写SRAM时的地址由缓存地址控制器提供。SRAM为每个byte的数据提供一个地址,当USB接口控制模块的数据传输控制模块对SRAM进行操作时,按照byte进行数据传输,故每传输IByte应将欲操作的SRAM的地址加I,缓存地址控制器进行地址运算,并将计算出的地址提供给数据传输控制模块。缓存地址控制寄存器从USB接口控制模块的初始地址寄存器中读取SRAM地址初值,然后每传输一个Byte将地址加1,再提供给数据传输控制器。当一次传输结束时,UDC模块会提供一个传输是否成功的信号,若该信号提示该传输失败时,意味着数据传输有错误,需要重新传输一次,这时缓存地址控制器会将提供给数据传输控制器的地址恢复到初始值。由于在进行USB传输之前,UDC模块需要预先进行一些初始化配置,则通过数据载入控制模块在USB接口控制模块复位时初始化UDC中的配置信息。同步控制模块负责整个USB接口控制模块工作过程中所需要的时钟信号,使得跨时钟信号同步。片内SFRWB总线用于系统芯片对USB接口控制模块中寄存器的读写操作。采用该实施例的USB接口控制模块完成USB设备与主机的数据传输时,系统芯片这一端数据的具体流向是这样的IN传输时,数据从芯片SRAM传递到UDC模块,UDC模块在将数据打包,发送给主机。OUT传输时,数据由主机到达UDC模块,UDC模块分析之后,将需要存储的数据传递给SRAM,具体传输过程如下1、进行OUT传输时,数据传输控制模块将由UDC处得到的数据写入到SRAM中,SRAM地址由缓存地址控制器提供,缓存地址控制器以初始地址寄存器中的初始地址为基本值,每传输一个Byte,地址值加一。2、进行IN传输时,数据传输控制模块读取SRAM的数据,并将其传递给UDC模块,SRAM地址由SRAM地址控制器提供,SRAM地址控制器以初始地址寄存器中的初始地址为基本值,每传输一个Byte,地址值加一。采用该实施例提供的USB接口控制模块,由于USB端口缓存空间可配置,为系统芯片实际应用提供了极大方便,同时由于USB的缓存空间可以直接配置到芯片的内存控件中,故芯片固件运行时减少了将数据从USB缓存空间搬移的内存空间的过程,使得USB传输速度得到提高。其次介绍本具体实施方式
提供的USB设备的数据传输控制方法的实施例。图5是根据本发明第一实施例的USB设备的数据传输控制方法的流程图,该实施例中的USB设备的端口缓存空间为SRAM,其中,SRAM是USB设备的系统芯片数据存储器的一部分,如图5所示,该方法包括如下的步骤S102至步骤S116。
步骤S102 :接收主机下发的数据包,获取数据传输方向信息,当数据传输方向为USB设备至主机时,执行步骤S104。步骤S104 :获取SRAM的初始地址。步骤S106 :读取SRAM中初始地址对应位置的数据得到IByte数据。步骤S108 :每读取IByte数据后,将初始地址加I后计算新地址。步骤SllO :读取SRAM中新地址对应位置的数据得到IByte数据。步骤S112 :判断数据是否读取完毕,其中,当数据未读取完毕时,返回步骤S108,否则执行步骤S114。步骤S114 :将读取到的数据打包后发送给主机。步骤S116 :接收主机下发的数据传输的传输结果信息,其中,传输结果信息包括传输成功信息和传输失败信息,当传输结果信息为传输成功信息时,传输结束,当传输结果信息为传输失败信息时,返回步骤S104。在该实施例中,读取端口缓存空间时无需先将数据由系统芯片数据存储器至缓存,而是直接可读取到缓存内容,节省了 USB端口缓存和数据存储器之间的数据搬移,提高了 USB设备至主机的数据传输速度。进一步地,在读取过程中自动计算读取地址,并根据计算出的新地址自动读取数据,从而能够正确、快速地保证对SRAM的数据读取。进一步地,在一次数据传输之后,根据主机下发的信息进行传输结果的检测,在传输失败时重新进行传输,提高了 USB数据传输的完整性和准确性。图6是根据本发明第二实施例的USB设备的数据传输控制方法的流程图,该实施例中的USB设备的端口缓存空间为SRAM,其中,SRAM是USB设备的系统芯片数据存储器的一部分,如图6所示,该方法包括如下的步骤S202至步骤S214。步骤S202 :接收主机下发的数据包,获取数据传输方向信息,当数据传输方向为主机至USB设备时,执行步骤S204。步骤S204 :获取SRAM的初始地址。步骤S206 :将主机下发的数据中的IByte数据写入SRAM中初始地址对应位置。步骤S208 :每写入IByte数据后,将初始地址加I后计算新地址。步骤S210 :将主机下发的数据中的IByte数据写入SRAM中新地址对应位置。步骤S212 :判断数据是否写入完毕,其中,当数据未写入完毕时,返回步骤S208,否则执行步骤S214。步骤S214:接收主机下发的数据传输的传输结果信息,其中,传输结果信息包括传输成功信息和传输失败信息,当传输结果信息为传输成功信息时,传输结束,当传输结果信息为传输失败信息时,返回步骤S204。在该实施例中,将接收到的数据直接写入至系统芯片的数据存储器,系统芯片的CPU在访问数据时无需先将数据由缓存移至数据存储器,节省了 USB端口缓存和数据存储器之间的数据搬移,提高了主机至USB设备的数据传输速度。进一步地,在写入过程中自动计算读取地址,并根据计算出的新地址自动写入数据,从而能够正确、快速地保证对SRAM的数据写入。进一步地,在一次数据传输之后,根据主机下发的信息进行传输结果的检测,在传输失败时重新进行传输,提高了 USB数据传输的完整性和准确性。从以上的描述中,可以看出,本发明实现了如下技术效果通过将USB系统芯片数据存储器的一部分作为USB设备的端口缓存空间,从而节省了数据传输过程中系统芯片数据存储器到USB端口缓存的数据搬移过程,提高了 USB设备的传输速度。以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种USB接口控制模块,用于连接主机与USB系统芯片,其特征在于,所述USB设备的端口缓存空间为SRAM,其中,所述SRAM是所述USB系统芯片的数据存储器的一部分,所述USB接口控制模块包括主控单元和数据传输单元,其中, 所述数据传输单元用于读取所述SRAM的数据至所述主控单元, 所述主控单元用于将所述数据传输单元读取到的数据打包并发送给所述主机,以及接收并解析所述主机下发的数据包, 所述数据传输单元还用于将所述主控单元解析后的数据写入至所述SRAM。
2.根据权利要求1所述的USB接口控制模块,其特征在于,还包括 地址寄存器,用于存储所述SRAM的初始地址;以及 地址控制单元,用于读取所述地址寄存器中存储的地址,并在所述数据传输单元每读取或写入IByte数据时,将读取到的地址加I后提供给所述数据传输单元, 其中,所述数据传输单元还用于根据所述地址控制单元提供的地址读取或写入数据。
3.根据权利要求2所述的USB接口控制模块,其特征在于, 所述主控单元还用于在与所述主机完成一次数据传输后,向所述地址控制单元提供传输结果信息,其中,所述传输结果信息包括传输成功信息和传输失败信息; 所述地址控制单元还用于在获取到所述传输失败信息时,重新读取所述地址寄存器中存储的地址。
4.根据权利要求3所述的USB接口控制模块,其特征在于,所述主控单元还用于在完成所述数据传输之后,向所述地址控制单元提供传输结果信息之前,接收所述主机下发的传输结果数据包,并解析所述传输结果数据包得到所述传输结果信息。
5.—种USB设备的数据传输控制方法,其特征在于,所述USB设备的端口缓存空间为SRAM,其中,所述SRAM是所述USB设备的系统芯片数据存储器的一部分,所述方法包括 读取所述SRAM的数据;以及 将读取到的数据打包并发送给主机。
6.根据权利要求5所述的控制方法,其特征在于, 在读取所述SRAM的数据之前,所述方法还包括获取所述SRAM的初始地址, 其中,读取所述SRAM的数据包括读取所述SRAM中第一地址的数据得到IByte数据;将所述第一地址加I后得到第二地址;以及读取所述SRAM中第二地址的数据得到IByte数据,其中,首次读取所述SRAM数据时的地址为所述初始地址。
7.根据权利要求6所述的控制方法,其特征在于,在读取到的数据打包并发送给主机,完成一次向所述主机的数据发送后,所述方法还包括 获取传输结果信息,其中,所述传输结果信息包括传输成功信息和传输失败信息;以及 在获取到所述传输失败信息时,重新获取所述SRAM的初始地址。
8.—种USB设备的数据传输控制方法,其特征在于,所述USB设备的端口缓存空间为SRAM,其中,所述SRAM是所述USB设备的系统芯片数据存储器的一部分,所述方法包括 接收并解析主机下发的数据包;以及 将解析后的数据写入至所述SRAM。
9.根据权利要求8所述的控制方法,其特征在于, 在将解析后的数据写入至所述SRAM之前,所述方法还包括获取所述SRAM的初始地址, 其中,将解析后的数据写入至所述SRAM包括将解析后的IByte数据写入至所述SRAM中第一地址;将所述第一地址加I后得到第二地址;以及将解析后的下IByte数据写入至所述SRAM中第二地址,其中,解析后的首Byte数据写入至所述初始地址。
10.根据权利要9所述的控制方法,其特征在于,在将解析后的数据全部写入至所述SRAM,完成一次所述主机的数据接收后,所述方法还包括 获取传输结果信息,其中,所述传输结果信息包括传输成功信息和传输失败信息;以及 在获取到所述传输失败信息时,重新获取所述SRAM的初始地址。
全文摘要
本发明公开了一种USB接口控制模块和USB设备的数据传输控制方法。该根据USB接口控制模块用于连接主机与USB系统芯片,USB设备的端口缓存空间为SRAM,其中,SRAM是USB系统芯片的数据存储器的一部分,USB接口控制模块包括主控单元和数据传输单元,其中,数据传输单元用于读取SRAM的数据至主控单元,主控单元用于将数据传输单元读取到的数据打包并发送给主机,以及接收并解析主机下发的数据包,数据传输单元还用于将主控单元解析后的数据写入至SRAM。通过本发明,USB系统芯片的CPU可直接访问USB设备的端口缓存空间,节省了芯片数据存储器到USB端口缓存的数据搬移过程,提高了USB数据的传输速度。
文档编号G06F13/40GK103019983SQ20121048371
公开日2013年4月3日 申请日期2012年11月23日 优先权日2012年11月23日
发明者张文婧, 张贺, 田磊 申请人:北京宏思电子技术有限责任公司