一种usb高速数据隧道的硬件传输方法

文档序号:6612426阅读:212来源:国知局
专利名称:一种usb高速数据隧道的硬件传输方法
技术领域
本发明涉及一种USB高速数据隧道的硬件传输方法。通过在USB设备中增 加高速数据隧道的硬件传输模式,并充分结合双数据缓存区技术,可迅速提高 USB设备在PC机和SoC系统之间传输数据的速度。
技术背景随着集成电路设计进入片上系统时代,嵌入式系统的功能不断增强,应用 也越来越广泛。为了能够很好的对现有的处理器进行扩展,提高处理器的应用 水平,就需要有更加稳定可靠的外围设备的接口技术。在USB应用日益广泛的 今天,嵌入式领域的USB接口技术己经得到了巨大的发展。USB接口技术在处 理器的外围设备扩展方面作出了巨大的贡献。由于USB接口具有简单灵活、高 带宽、易于扩展和热插拔等优点,它目前己成为数码设备的标准接口之一,小 到U盘、MP3,大到数码相机、打印机,USB接口的身影无处不在。另外,为 了扩大USB的应用范围,很多公司在USB规范的基础上添加了新的功能,使得 USB的应用更加广泛,有越来越多的嵌入式系统工程师想把USB接口技术应用 到嵌入式系统的设计中。由于USB接口技术在当今嵌入式领域的广泛应用,基于USBU协议的USB 设备能够实现嵌入式系统和PC机的轻松互联,对于提高SoC处理器的应用能 力有极为重要的意义。该USB设备在嵌入式系统中的位置如图l所示。 发明内容本发明的目的是提供一种USB高速数据隧道的硬件传输方法 USB高速数据隧道的硬件传输方法特征是1) 在USB设备中增加DMA部件,实现用于批量传输的数据遂道;2) 数据隧道中实现用于批量数据传输的起始地址寄存器和数据量寄存器;3) 每次传输完成时DMA自动更新数据量寄存器并自动产生下一数据包的 起始地址;4) 数据隧道支持字,半字和字节传输及三者之间的转换;5) 数据隧道支持传输数据量和传输单位不匹配,由硬件自动完成数据对齐;6) DMA支持各个端点交叉并列传输,并自动保存各个端点的传输信息;7) USB采用双数据缓存技术,支持DMA和数据缓存区并行工作;8) USB设备支持用户干预传输模式和高速数据隧道传输模式的动态切换。
所述的在USB设备中增加DMA部件,实现用于批量传输的数据遂道在 USB设备中,独立扩展出旨在提升数据传输速率的DMA模块,用于自动控制 USB硬件设备在数据隧道模式下进行批量数据传输。所述的数据隧道中实现用于批量数据传输的起始地址寄存器和数据量寄存 器在原有用户干预传输模式下的DMA寄存器基础上,扩展了用于批量传输的 数据隧道起始地址寄存器和数据量寄存器,分别表示数据块的传输起始地址和 传输数据总量,扩展的寄存器外部接口和访问操作与原来的寄存器相同。所述的每次传输完成时DMA自动更新数据量寄存器并自动产生下一数据 包的起始地址在每次数据包传输完成之后,DMA检测硬件逻辑的状态,并根 据当前数据包传输的数据量,自动计算出下一数据包的传输起始地址,存入到 地址寄存器中,同时更新数据量寄存器。所述的数据隧道支持字,半字和字节传输及三者之间的转换与USB设备 相连的系统总线有字、半字和字节三种传输方式,数据隧道均支持这三种模式, 而且当系统总线的位宽与数据隧道的位宽不一致时,数据隧道自动完成字、半 字和字节之间的转换,保证传输数据的正确性。所述的数据隧道支持传输数据量和传输单位不匹配,由硬件自动完成数据 对齐在数据隧道模式下,如果数据传输总量和数据传输单位不匹配时,在包 传输快结束时会出现数据不对齐的现象,此时数据隧道的硬件控制逻辑会按照 配置信息自动完成数据对齐。所述的DMA支持各个端点交叉并列传输,并自动保存各个端点的传输信 息在USB数据隧道传输模式下,DMA支持多端点交叉并行传输,自动保存 除当前传输端点外其他端点的信息,并在完成当前端点传输后,根据优先级进 行端点切换。所述的USB采用双数据缓存技术,支持DMA和数据缓存区并行工作双 数据缓存区技术支持DMA数据传输和USB数据传输同时进行,即在DMA进 行数据传输时,占用一个数据缓冲区,USB可通过另一个缓冲区对数据进行传 输;两者达到资源的最大利用。所述的USB设备支持用户干预传输模式和高速数据隧道传输模式的动态切 换用户可以通过关闭数据隧道传输模式的使能标志位,直接关闭数据隧道传 输模式,进入用户干预模式,此后数据通过用户干预模式进行传输。本发明与现有技术相比具有的有益效果-本发明公布的一种USB高速数据隧道的技术方案,采用了 USB1.1的简单协议,降低了产品的设计开发难度和复杂度;通过在原有USB设备的基础上实 现高速数据隧道,可以大幅度地提高USB1.1数据传输的性能。高速数据隧道在 USB设备中采用DMA传输技术,直接依据硬件实现主存和外设之间的数据通 讯,传输过程本身不需CPU干预,可以在不提高系统时钟频率的基础上,将系 统数据传输速率提高几倍,大大提高了整个系统的运行速度,极大地改善了系 统性能。另一方面,为了在大批量数据传输时提高数据传输性能,在原有用户 干预传输模式下增加了高速数据隧道传输模式,它只需应用程序在传输开始之 前设置好数据块的传输起始地址及相应的数据量, 一旦传输开始后,DMA可自 动根据最大包传输长度分批传输该数据块,并在每个数据包传输完成后自动计 算出下个数据包传输的起始地址,同时更新起始地址寄存器和数据量寄存器, 直到传输完最后一个数据包为止。跟传统的用户干预传输模式相比,数据隧道 传输模式可大大提高传输的性能,因为用户干预模式在每传完一个数据包之后 就要产生中断,并等待上层软件对该中断产生响应,进入相应的中断服务程序 配置下个数据包的传输信息,包括起始地址,传输大小及数据包传输大小。由 于中断服务程序的运行要占用大量时间,大大降低了数据传输效率,而且增加 了软件开发者设计的复杂度;而数据隧道模式在数据块的传输过程中不产生中 断,由DMA负责每个数据包的传输,该模式增强了硬件的独立处理能力,即将 软件的繁杂工作用硬件来实现,不仅实现简单,开销较小,而且在数据量较大 时,隧道传输模式更能充分体现它性能的优越性,因为它无需在每传输完一个 数据包后进入中断服务程序,取消了应用服务程序冗余地址的计算和设定过程, 进一步降低了 CPU及上层软件的干预程度,极大减少了中断服务程序的处理时 间。高速数据隧道的技术手段中还使用了双数据缓存区的硬件技术,两者的结 合能够有效的解决在数据传输中,USB设备为了等待CPU数据而长时间不响应 的问题,极大地縮短甚至消除了等待时间。而传统的单数据缓存区在使用过程 中,USB设备每接收或发送完一个数据包后,都需要等待数据的读走或写入, 因而无法立即响应USB主机的数据传输请求。由于这样一种数据等待时间的存 在,使得USB串行总线的使用率降低了一半。虽然双数据缓存区技术的引入需 要消耗相对较多的硬件资源(增加一个数据缓存区),增加了软件编程复杂度(需 要对数据发送和接收状态进行保存),但其数据传输的速度得到了大幅度提升, USB总线的利用率几乎达到极限。


图1是USB设备在嵌入式系统中的框图。 图2是USB高速数据隧道传输的状态转换图。 图3是字、半字与字节转换器的硬件实现图。 图4是信号同步模块的硬件实现图。图5是USB高速数据隧道及双数据缓存区的硬件实现原理图。 图6是USB设备的传输流程图。
具体实施方式
USB高速数据隧道的硬件传输方法特征是1) 在USB设备中增加DMA部件,实现用于批量传输的数据遂道;2) 数据隧道中实现用于批量数据传输的起始地址寄存器和数据量寄存器;3) 每次传输完成时DMA自动更新数据量寄存器并自动产生下一数据包的 起始地址;4) 数据隧道支持字,半字和字节传输及三者之间的转换;5) 数据隧道支持传输数据量和传输单位不匹配,由硬件自动完成数据对齐;6) DMA支持各个端点交叉并列传输,并自动保存各个端点的传输信息;7) USB采用双数据缓存技术,支持DMA和数据缓存区并行工作;8) USB设备支持用户干预传输模式和高速数据隧道传输模式的动态切换。 所述的在USB设备中增加DMA部件,实现用于批量传输的数据遂道在USB设备中,独立扩展出旨在提升数据传输速率的DMA模块,用于自动控制 USB硬件设备在数据隧道模式下进行批量数据传输。高速数据隧道的技术方案 减少了传统用户干预传输模式下的上层软件的干预程度,它只需应用程序在传 输开始之前初始化DMA的控制寄存器,包括传输的起始地址、数据量及传输大 小, 一旦传输开始后,DMA便能自动完成该数据量的传输,它将按最大数据包 长度分批传输,除了最后一个数据包外,同时在每传输完每一个数据包之后, 它会自动更新计数器、传输起始地址寄存器和数据量寄存器等。在数据隧道传 输模式下,由于传输的数据量很大, 一般都远远大于最大包数据长度,因此数 据块要按最大包长度分批传输,而AHB系统总线的传输大小和传输类型是由用 户配置的,因此一个数据包有可能要分成几次总线传输才能完成。高速数据隧 道模式下的DMA数据传输按读或写传输两个独立过程可以分为以下几个阶段, 如图2所示l.空闲状态空闲状态是指高速数据隧道传输模式被关闭。上电复位后,数据隧道模式自动进入该状态。
2. 初始化或更新寄存器、计数器状态如果在传输数据块之前,数据隧道被 使能,控制状态自动由空闲状态进入本状态,此时该状态的主要工作是等待用户应用程序通过AHB总线的Slave接口来初始化DMA寄存器组,包括基地址 寄存器、控制寄存器等;如果传输开始后,并且成功传完了一个数据包,则该 状态用于自动更新寄存器、计数器等,为下一个数据包的传输做好初始化工作。3. 读传输总线请求状态这与4、 5、 6、 7四个状态构成了读传输操作过程。 如果包传输开始信号置起后,并且DMA是为IN端口进行传输,则会进入该状 态,并向AHB总线发起读传输总线请求信号,等待获取AHB总线的使用权。4. 读取内存数据状态当DMA作为AHB总线的Master获取总线使用权后, 便发起总线读传输操作,根据地址发生器产生的传输地址,往相应的系统内存 地址段读取数据,并暂存到DMA内部的数据缓存区。5. 写双数据缓存区状态当总线读传输操作完成后,DMA便会置起写双数 据缓存区的使能信号,等待双数据缓存区来读取DMA内部缓存区内的数据。由 于AHB系统的时钟频率在一般情况下都要远大于USB的系统频率,因此在 DMA内部的数据缓存区容量可以做得很小, 一般像4X32就可以满足一般设计 的需要了。6. 保持写使能信号状态在DMA未收到同步模块产生的写使能反馈信号之 前它将一直保持写使能信号不变。如果是整个数据块都传输完成了,则回到空 闲状态,并产生中断,等待中断服务程序进行相应的处理,如果是一个数据包 传输完毕了,则回到第2个状态,继续下一个数据包的传输。7. 自动产生读传输控制信号状态由于有时一个数据包传输需要几次总线传 输操作才能完成,因此在每发起一次总线传输请求之前,都需要准备好读传输 的控制信号,包括传输大小、传输类型和传输基地址等信号。8. 保持读使能信号状态这与9、 10、 11、 12四个状态构成了是写传输操作 过程,如果传输开始信号置起后,并且DMA是为OUT端口进行传输,则会进 入该状态,在DMA未收到读使能反馈信号前它将一直保持读使能信号不变。9. 读取双数据缓存区数据状态DMA读取双数据缓存内的数据,并经过字 与字节转换器的转换,将数据填入到DMA内部的数据缓存区。10. 自动产生写传输控制信号状态详见第7个状态描述。11. 写传输总线传输请求状态:DMA向AHB总线发起写传输总线请求信号, 等待获取AHB总线的使用权。12. 往内存内写数据状态当DMA发起总线传输请求并获取总线使用权后,
便发起总线写传输操作,根据地址发生器产生的传输地址,往相应的系统内存 地址段填入数据。如果是整个数据块都传输完成了,则回到空闲状态,并产生 中断,等待中断服务程序进行相应的处理,如果是一个数据包传输完毕了,则回到第2个状态,继续下一个数据包的传输。所述的数据隧道中实现用于批量数据传输的起始地址寄存器和数据量寄存器在原有用户干预传输模式下的DMA寄存器基础上,扩展了用于批量传输的数据隧道起始地址寄存器和数据量寄存器,分别表示数据块的传输起始地址和 传输数据总量,扩展的寄存器外部接口和访问操作与原来的寄存器相同。所述的每次传输完成时DMA自动更新数据量寄存器并自动产生下一数据 包的起始地址在每次数据包传输完成之后,DMA检测硬件逻辑的状态,并根 据当前数据包传输的数据量,自动计算出下一数据包的传输起始地址,存入到 地址寄存器中,同时更新数据量寄存器。同时在一个数据包的传输过程中,DMA 也会自动产生多次总线读写传输操作的地址。该地址发生器是由一个32位的硬 件地址加法单元计算得到,对于每一次总线传输地址它按照传输大小以4字节, 2字节和1字节为单位增长,而对于每个数据包的起始地址,它则是按照传输大 小和传输类型的乘积递增产生。因此在该模式下,只要应用程序在传输开始之 前将内存数据块的读写传输的起始地址通过AHB Slave接口写入基地址寄存器 后,DMA内部的地址发生器会自动产生每一个数据包对应的传输起始地址。所述的数据隧道支持字,半字和字节传输及三者之间的转换高速数据隧 道传输模式支持传输大小为字(4字节),半字(2字节)和字节的三种模式。 在DMA的控制寄存器中,有两位表示总线的传输大小OO表示字传输,01表 示半字传输,IO表示字节传输,ll表示未定义的长度。默认状态为字传输,尽 可能提高总线传输的效率和带宽。由于系统总线的位宽(32位)与数据隧道的 位宽(8位)不一致,为了保证数据传输的正确性,DMA会根据寄存器的这两 位来进行字、半字及字节之间的转换与截取,以达到总线与数据缓存区之间数 据位宽的一致性;若数据包为最后一个数据包且数据量不是字对齐的,则DMA 会根据实际情况自动改变传输大小,其硬件实现图如3所示。所述的数据隧道支持传输数据量和传输单位不匹配,由硬件自动完成数据 对齐在数据隧道模式下,如果数据传输总量和数据传输单位不匹配时,在包 传输快结束时会出现数据不对齐的现象,例如,数据包的数传输总量为63, 而用户配置的传输单位是字传输,那么在传输最后三个字节时便出现了不对齐 现象,此时数据隧道的硬件控制逻辑会按照相应的配置信息及总线传输地址自
动完成数据对齐,将三个字节填充成字后再进行传输。所述的DMA支持各个端点交叉并列传输,并自动保存各个端点的传输信 息在USB数据隧道传输模式下,DMA支持多端点交叉并行传输,自动保存 除当前传输端点外其他端点的信息,并在完成当前端点传输后,根据优先级进 行端点切换。所述的USB采用双数据缓存技术,支持DMA和数据缓存区并行工作双 数据缓存区技术支持DMA数据传输和USB数据传输同时进行,即在DMA进 行数据传输时,占用一个数据缓冲区,USB可通过另一个缓冲区对数据进行传 输;两者达到资源的最大利用。由于DMA和双数据缓存区工作的系统时钟频率 是不一样的,因此需要在这两个模块之间加入信号同步模块,以保证数据采样 的正确性,消除信号的亚稳态,其硬件实现原理图如图4所示。高速数据隧道 传输模式与双数据缓存区技术的结合,极大縮短了数据包与数据包传输的间隔, 使DMA和数据缓存区能同时工作,从而使USB传输速度接近了 USBU的极 限速度12Mbit/s. USB高速数据隧道传输及双数据缓存区的总体硬件架构如图5 所示。所述的USB设备支持用户干预传输模式和高速数据隧道传输模式的动态切 换为了兼容传统的DMA用户干预传输模式,在DMA的控制寄存器中,设置 了数据隧道传输模式的使能位。用户可以通过关闭该使能标志位,直接关闭数 据隧道传输模式,进入用户干预模式,此后数据通过用户干预模式进行传输。 该位上电之后默认设置为数据隧道模式关闭。用户的应用程序可以根据实际的 需要,动态选择开启或者关闭该位来控制数据隧道传输模式。在传输过程中, 支持数据隧道传输模式和用户干预传输模式的动态切换功能,其流程图如6所 示。
权利要求
1.一种USB高速数据隧道的硬件传输方法,其特征是1)在USB设备中增加DMA部件,实现用于批量传输的数据遂道;2)数据隧道中实现用于批量数据传输的起始地址寄存器和数据量寄存器;3)每次传输完成时DMA自动更新数据量寄存器并自动产生下一数据包的起始地址;4)数据隧道支持字,半字和字节传输及三者之间的转换;5)数据隧道支持传输数据量和传输单位不匹配,由硬件自动完成数据对齐;6)DMA支持各个端点交叉并列传输,并自动保存各个端点的传输信息;7)USB采用双数据缓存技术,支持DMA和数据缓存区并行工作;8)USB设备支持用户干预传输模式和高速数据隧道传输模式的动态切换。
2. 根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征 是所述的在USB设备中增加DMA部件,实现用于批量传输的数据遂道:在USB 设备中,独立扩展出旨在提升数据传输速率的DMA模块,用于自动控制USB 硬件设备在数据隧道模式下进行批量数据传输。
3. 根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征 是所述的数据隧道中实现用于批量数据传输的起始地址寄存器和数据量寄存 器在原有用户干预传输模式下的DMA寄存器基础上,扩展了用于批量传输的 数据隧道起始地址寄存器和数据量寄存器,分别表示数据块的传输起始地址和 传输数据总量,扩展的寄存器外部接口和访问操作与原来的寄存器相同。
4. 根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征 是所述的每次传输完成时DMA自动更新数据量寄存器并自动产生下一数据包 的起始地址在每次数据包传输完成之后,DMA检测硬件逻辑的状态,并根据 当前数据包传输的数据量,自动计算出下一数据包的传输起始地址,存入到地 址寄存器中,同时更新数据量寄存器。
5. 根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征 是所述的数据隧道支持字,半字和字节传输及三者之间的转换与USB设备相 连的系统总线有字、半字和字节三种传输方式,数据隧道均支持这三种模式, 而且当系统总线的位宽与数据隧道的位宽不一致时,数据隧道自动完成字、半 字和字节之间的转换,保证传输数据的正确性。
6. 根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征 是所述的数据隧道支持传输数据量和传输单位不匹配,由硬件自动完成数据对 齐在数据隧道模式下,如果数据传输总量和数据传输单位不匹配时,在包传 输快结束时会出现数据不对齐的现象,此时数据隧道的硬件控制逻辑会按照配 置信息自动完成数据对齐。
7.根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征是 所述的DMA支持各个端点交叉并列传输,并自动保存各个端点的传输信息在 USB数据隧道传输模式下,DMA支持多端点交叉并行传输,自动保存除当前传 输端点外其他端点的信息,并在完成当前端点传输后,根据优先级进行端点切 换。
8. 根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征 是所述的USB采用双数据缓存技术,支持DMA和数据缓存区并行工作双数 据缓存区技术支持DMA数据传输和USB数据传输同时进行,即在DMA进行 数据传输时,占用一个数据缓冲区,USB可通过另一个缓冲区对数据进行传输; 两者达到资源的最大利用。
9. 根据权利要求1所述的一种USB高速数据隧道的硬件传输方法,其特征 是所述的USB设备支持用户干预传输模式和高速数据隧道传输模式的动态切 换用户可以通过关闭数据隧道传输模式的使能标志位,直接关闭数据隧道传 输模式,进入用户干预模式,此后数据通过用户干预模式进行传输。
全文摘要
本发明公开了一种USB高速数据隧道的硬件传输方法。本发明在原有DMA用户干预的硬件传输模式基础上增加了一种高速数据隧道传输模式,并使用了双数据缓存区技术,两者的结合将传输速度提升到接近USB1.1的极限传输速率12M bit/s。在USB高速数据隧道的传输模式下,应用程序只需配置一次数据块读写传输的起始地址及数据量,DMA便会根据最大包长度将数据块分割成若干数据包分批传输,完成PC机和SoC之间的数据通信。本发明自动生成每个数据包传输的基地址,取消了应用服务程序冗余地址的计算和设定过程,进一步降低了CPU及上层软件的干预程度,极大减少了中断服务程序的处理时间,同时双数据缓存区的使用实现了发送和接收数据的同步进行,大幅度提高了数据传输的吞吐率。
文档编号G06F13/20GK101162448SQ20071015691
公开日2008年4月16日 申请日期2007年11月20日 优先权日2007年11月20日
发明者严晓浪, 徐鸿明, 葛海通, 龚帅帅 申请人:杭州中天微系统有限公司;浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1