CN102541793B - 一种基于usb的高速双机数据交换方法及数据交换装置 - Google Patents
一种基于usb的高速双机数据交换方法及数据交换装置 Download PDFInfo
- Publication number
- CN102541793B CN102541793B CN201110440502.2A CN201110440502A CN102541793B CN 102541793 B CN102541793 B CN 102541793B CN 201110440502 A CN201110440502 A CN 201110440502A CN 102541793 B CN102541793 B CN 102541793B
- Authority
- CN
- China
- Prior art keywords
- data
- peripheral control
- control unit
- main frame
- buffer
- 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.)
- Expired - Fee Related
Links
Landscapes
- Small-Scale Networks (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明属于计算机通信技术领域,公开了一种USB2.0高速双机数据交换方法和基于该方法的双机数据交换装置,所述方法通过分包再重组的方法,采用多管道并发的方式传输数据,以减少宽带空闲,实现对USB2.0带宽的充分利用。有效的提高了双机数据交换的速率。所述装置由两个外设控制器和一个数据中转控制单元组成,所述两个外设控制器均设有用于与需要进行数据交换的主机进行连接的USB接口,所述数据中转控制单元通过两个并行数据输入输出接口分别与两个外设控制器相连。该装置数据传输速度可达到50MB/s,达到了USB2.0的极限传输速度,是普通通过路由器数据交换速率的5至100倍,是普通USB设备传输速度的2倍。
Description
技术领域
本发明属于数据通信技术领域,特别涉及两套内嵌CPU设备之间的USB数据通信技术,具体是指一种基于USB的高速双机数据交换方法及其数据交换装置。
背景技术
USB是一种应用在计算机领域的接口技术,具有热插拔、易携带、传输速度快等优点。由于USB的各种优点,各种操作系统如windows系列、linux系列均支持这种接口技术,这使得USB技术应用更为广泛。随着USB技术的不断发展和完善,USB传输速度越来越快,USB2.0的比特率更是达到了480Mbps,是普通PC机上以太网速度的4.8倍,是普通无线局域网速度的8.9倍。
目前两台电脑之间的数据交换主要是通过路由器、交换机和双机互联网线完成,其数据交换速率均在10MB/s以下。在普通情况下,通过路由器连接的两台电脑之间的数据交换速率往往不到500KB/S。
在USB2.0协议中,数据传输是按照微帧进行,一个微帧的时间长度为125微妙。在USB2.0协议中除开握手协议,控制传输等小量的数据传输之外,大量的数据是将数据组成一个数据包进行传输,数据包的长度为512字节或1024字节。在前面提到的一个微帧里面插入若干个数据包、握手协议和控制传输,由于数据包的长度固定和控制传输数据量小,通常一个微帧里最多仅有100多个字节在进行握手协议和控制传输,因此一个微帧里面总会有时间处于空闲状态。例如,长度为512字节的数据包,每一个数据包要进行帧同步、PID字段、端点地址等协议开销共计55个字节,那么传输一个数据包所需的传输时间T=(512+55)*8/480=9.45微秒,那么一个微帧里面最多能传输512字节的数据包数量n=125/T=125/9.45=12.227,由于一个帧里所传输的数据包数量为整数,那么一个微帧里面仅能传输12个数据包,因此当采用512字节的数据包进行传输时,有效数据传输速率最高为V=12*512*8/1000=53.248MB/s。同理可以计算出采用1024字节作为一个数据包时的最高数据传输速率为49.152MB/s。因此通过USB2.0进行数据传输有效数据最高速率为53.248MB/s。
目前也有通过USB实现数据传输和双机数据交换的技术,但它们都没有充分利用USB带宽,USB2.0系列产品中数据传输速率最高仅到30MB/s。之所以没有充分利用USB带宽,是因为目前国内大部分USB2.0的研发人员不清楚数据帧的传输模式,而英文版USB2.0协议原著也未将其讲述透彻,很多人只知道理论最高速率值,但不知道为什么是这个值,因为他们不知道一个微帧的结构,当然也就不知道如何最大限度的开发USB2.0的带宽。
由于USB模型是一种Host-Slave(主机-外设)主从式结构,在USB组成的网络中,有且仅有一个主机控制器,其余均为外设控制器。主机控制器通过轮询的方式访问外设控制器内部的各个端点,看看有没有数据要进行传输,如果有数据要进行传输,主机控制器就根据端点的性质发起一次传输。当有一个外设控制器插入主机控制器所属的USB接口后,主机控制器会询问外设控制器的名称、类别、端点数量和端点性质等信息,这个过程叫做枚举。一个外设控制器如果没有通过枚举,那主机控制器就无法与外设控制器进行通信,在我们的计算机上就会出现提示无法识别的USB设备。一个外设控制器通过枚举之后,主机控制器就把它加入自己的轮询对象之中。
通过上段叙述可知,主机控制器没有外设控制器所具备的设备类别,没有端点,主机控制器不接受别的主机控制器的轮询,主机控制器只去轮询外设控制器,因此当把两台主机不通过外设而直接通过USB总线连接时,任意一台主机控制器都无法通过另一台主机控制器的枚举,甚至有可能因为接口电平不同造成电路烧毁。然而可通过增加外设控制器的方法使两台主机利用它们的USB端口通信。每个外设控制器连接到不同的主机,并利用两个外设控制器共享的缓冲器交换数据,这就是USB2.0双机数据交换的原理。
在目前的USB2.0数据双机数据交换技术中,有三个因素制约了数据传输速率达不到极限速度。①难以控制USB2.0主机控制器的任务调度,主机控制器的任务调度程序没有外部接口,不能直接控制任务的调度,除非自己烧写任务调度程序到主机控制器内,但这只有理论上的意义。通常情况下,根据个人大量实验证明,主机控制器为每个外部设备分配的带宽仅为6MB/s,这就是为什么我们的优盘在与计算机传输数据时,1个GB的数据通常要花2.5分钟左右时间。②没有更高的速度来提供被传输的数据,也就是说两个外设控制器之间的数据交换速率低,限制了双机数据交换速率。③计算机上的主机控制器驱动程序在将主机控制器数据接收缓冲区内的数据转移到应用程序缓冲区内耗费了大量时间,进一步限制了双机数据交换速率。一台计算机上可外接127个USB外部设备,每个USB外部设备又可包含16个端点,由于主机控制器驱动程序必须开辟与每个端点对应的缓冲区,该缓冲区称为主机控制器数据缓冲区,由于一台计算机上的端点数量最多可达2032个,所以为保证主机控制器驱动程序的通用性和节省内存空间,主机控制器驱动程序为每个端点默认开辟的大小都比较小。这就导致在海量数据传输时,主机控制器数据缓冲区很容易被填满,填满后必须等待数据转移完后才继续与端点交换数据,这就进一步导致了从端点与主机控制器和主机控制器到应用程序这两个步骤没有并行运行。
发明内容
本发明的目的是针对现有技术中存在的上述不足,提供一种能达到USB2.0极限速度、提高双机数据交换效率、方便实用、稳定可靠的USB高速双机数据交换方法及其数据交换装置。
为达到上述目的,本发明采取如下技术方案:
一种基于USB的高速双机数据交换方法,其特征在于:包括如下步骤:
发送方主机将待传数据分包处理并连续编号后,经USB接口通过多个并发管道发送至发送方外设控制器;
发送方外设控制器将待传数据经并行数据接口发送至共享缓冲区;
接收方外设控制器经并行数据总线从共享缓冲区读取待传数据后,接收方主机经USB接口通过多个并发管道读取接收方外设控制器中的待传数据;
接收方主机按编号顺序重组从接收方外设控制器中读取的数据。
采用上述方法进行数据交换的收发双方主机通过如下步骤实现数据连接:
发送方主机通过端点0向发送方外设控制器发送发送数据请求特征码,发送方外设控制器再通过控制数据传输总线将该特征码传送至接收方外设控制器,接收方主机轮询外设控制器时从其中接收该特征码;
接收方主机收到发送数据请求特征码后,通过端点0发送接收数据应答特征码,经接收方外设控制器、发送方外设控制器,最后到发送方主机;
发送方外设控制器开通其到共享缓冲区方向的数据线路,同时将内部的端点全部设置为输出,接收方外设控制器开通共享缓冲区到其方向的数据线路,同时将内部的端点全部设置为输入;
发送方和接收方外设控制器分别通过端点0向发送方主机和接收方主机发送通道已建成特征码;
发送方主机收到通道已建成特征码后开始数据发送,接收方主机收到通道已建成特征码后准备数据接收,并在数据到达后开始接收数据。
本发明提出的上述高速双机数据交换方法,通过分包再重组的方法,采用多管道并发的方式传输数据,以减少宽带空闲,实现对USB2.0带宽的充分利用。有效的提高了双机数据交换的速率。收发双方外设控制器采用并行数据接口进行数据传输,保证了外设控制器之间的高速数据交换,更有效的解决了外设控制器传输速率低限制双机数据交换速率的问题。
为了进一步提高双机数据交换速率,本发明还提出了进一步改方案,即在上述方法中增加:
发送方主机设置应用程序缓冲区、USB主机控制器缓冲区的步骤,
和接收方主机设置应用程序缓冲区、USB主机控制器缓冲区的步骤,
所述USB主机控制器缓冲区数量与所连的外设控制器块传输端点数量相同,所述的应用程序缓冲区按传输端点数量分组,每组应用缓冲区固定连接到一个端点,一个应用程序缓冲区和一个端点形成一个管道,所有的应用程序缓冲区和所有的端点形成多个并发管道,主机通过多个并发管道与外设控制器传输数据时,按照固定的传输顺序与各个管道传输数据,所述的传输顺序以管道所连的端点地址为基本顺序,每次传输时选择与传输端点相连的一条管道。
为各管道设置应用程序缓冲区和为各块传输端点设置USB主机控制器缓冲区,可以有效避免在数据传输过程中,主机CPU和应用程序等待相应管道或块传输端点上单个数据包传输完毕,或减少等待单个数据包传输完毕的时间,可以进一步提高传输效率。
为了防止数据传出错,提高双机数据交换的可靠性,作为更进一步改进,在上述方法再加入错误数据重传步骤:
根据数据包编号判断错误数据包是否还在所述的共享缓冲区,若是,重新读取共享缓冲区中的数据包;
若否,则发送数据重传特征码和错误数据包编号至发送方主机;
发送方主机接收到数据重传特征码及错误数据包编号后,重新发送该编号数据包。
在本发明的方法中,鉴于双机间的大数据量交换任务一般为一方到另一方的单向数据传送,为了降低数据传输对收发双方外设控制器间的带宽要求,压缩硬件成本,发送方外设控制器与共享缓冲区之间、及接收方外设控制器与共享缓冲区之间均优选采用单向全带宽传输方式进行数据传输。
由于USB接口属于串行数据接口,虽然增设数据管道可以有效减少带宽空闲,进而提高传输速率,但是毕竟USB接口带宽有限,传输速率并非随着管道数量的增加而同比增大。根据实验证实,当收发双方外设控制器设置的用于数据传输的块传输端点设置为4个;收发双方外设控制器与收发双方主机之间建立的管道数量设置为12个,每三个管道一组共用一个外设控制器的块端点时,数据传输速率基本达到USB接口带宽的极限。
虽然为各块传输端点和管道设置足够大的主机控制器缓冲区和应用程序缓冲区可以有效避免因等待相应管道或块传输端点上单个数据包传输完毕而导致的USB带宽空闲,但是过大的缓冲区的设置也同样会造成浪费。
实验证明,收发双方与外设控制器各块传输端点相连的USB主机控制器缓冲区大小均设置为3M;收发双方与各管道一一对应的应用程序缓冲区大小均设置为1M;并设定数据包长度为512字节时,双机传输速率更接近于极限且缓存浪费现象少。
基于上述方法,本发明的另一个目的是提供一种基于USB的高速双机数据交换装置,其特征在于,包括:
两个外设控制器,其分别通过USB接口与需要进行数据交换的两个主机连接并直接通信,其根据控制指令,执行接收直连主机控制器发送的数据包并转发至中转数据存储器,或者读取中转数据存储器内数据包并发送给直连主机控制器的操作;
一个数据中转控制单元,其包括至少一个中转数据存储器、一个数据重读模块和两个分别用于连接两个外设控制器的并行数据输入输出接口,其单周期单向接收一个外设控制器发来的数据包并转存入中转数据存储器供另一个外设控制器读取;
控制数据传输总线,用于两个外设控制器之间的控制数据传输;
其中,所述外设控制器包括一个发送/接收缓存器、一个用于从发送/接收缓存器读取数据并写入所述的中转数据存储器或者从所述的中转数据存储器读取数据并写入发送/接收缓存器的读写控制模块、一个具有运算处理功能的微控制模块,所述发送/接收缓存器设有一个用于与主机控制器通信的串行数据输入输出接口和一个与中转数据存储器通信的并行数据输入输出接口,其内的缓存区为块传输端点缓冲区,设置为多个块传输端点;所述发送/接收缓冲区的并行数据输入输出接口与数据中转控制单元的并行数据输入输出接口通过并行数据总线连接,所述微控制模块与相连主机控制器通过端点0发送或接收特征码数据,所述微控制模块还被设定为通过设置块传输端点的输入输出状态控制主机控制器与发送/接收缓存器之间的数据传输及传输方向,通过控制读写控制模块的启停及读写方向来控制发送/接收缓存器与中转数据存储器之间的数据传输及传输方向,所述微控制模块的特征码输出脚通过控制数据传输总线与另一个外设控制器的微控制模块的特征码输入脚连接。
在上述双机数据交换装置中,所述发送/接收缓冲区的并行数据输入输出接口和数据中转控制单元的并行数据输入输出接口均优选为16位接口,两者通过16位并行数据总线连接。
实验证明采用单同期单向读写的方式进行数据交换时,两外设控制器间选用16位并行接口已经可以达到96MB/s的传输速率,完全可以满足USB接口全带宽传输需求。
由于现有可作为中转数据存储器的存储芯片,均为单向输入输出接口。即只有两个数据接口,分别用于写入数据和读出数据。要实现两个外设控制器之间双向数据传输,至少有两种方案。
其一方案是:选用两块存储芯片,分别负责实现第一方外设控制到另一方外设控制器的传输和另一方外设控制器回传给第一方外设控制器的数据传输,即一块存储芯片输入接口接第一方外设控制器,输出接口接另一方外设控制器,而另一块存储芯片的输出接口接接第一方外设控制器,输入接口接另一方外设控制器。
其二方案是:选用一块存储芯片和四个具有连通关断控制功能的开关器件,通过四个开关器件的天关控制实现第一方外设控制到另一方外设控制器的传输和另一方外设控制器回传给第一方外设控制器的数据传输。
其连接结构为:第一开关器件的数据输入端和第二开关器件的数据输入端同时连接到中转数据存储器的数据输出端,第三开关器件的数据输出端和第四开关器件的数据输出端同时连接到中转数据存储器的数据输入端,第一开关器件的数据输出端和第三开关器件的数据输入端连接共同做为数据中转控制单元的一个并行数据输入输出接口,第二开关器件的数据输出端和第四开关器件的数据输入端连接共同做为数据中转控制单元的另一个并行数据输入输出接口;
在本发明的双机数据交换装置中,所述的数据中转控制单元中的中转数据存储器优选为FIFO,容量设置在512KB及以上,所述的数据重读模块应包括一个数据重读启动引脚,当在该引脚上出现数据重读信号时,将FIFO的读指针设置为0。所述的开关器件可为电子开关、总线选择器或输入缓冲器;
与现有技术相比,本发明的高速双机数据交换装置的优点是:
1)传输速度快,数据传输速度可达到50MB/s,达到了USB2.0的极限传输速度,是普通通过路由器数据交换速率的5至100倍,是普通USB设备传输速度的2倍;
2)有错误数据重传模块,数据传输稳定可靠;
3)特别适合由多台计算机组成的系统内部频繁的数据交换;
4)双机互联方便,支持热插拔;
5)携带方便。
附图说明
图1是本发明所述的USB高速双机数据交换示意图;
图2是本发明USB高速双机数据交换装置结构示意图;
图3是本发明USB高速双机数据交换装置原理图;
图4是本发明所使用的数据交换特征码表;
图5是本发明的数据交换方法操作流程图;
图6是本发明的数据错误处理步骤操作流程图。
具体实施方式
本发明公开了一种基于USB的高速双机数据交换方法及其数据交换装置,用于实现两台计算机之间的高速数据交换。为了更清楚地理解本发明的技术内容,特举以下实施例详细说明。
参照图1,该图是本发明实施例的USB2.0高速双机数据交换示意图。
在该图中,有两台要进行数据交换的主机,分别为主机1和主机2。中间为USB2.0高速双机数据交换装置。在图中两台主机上的用户程序都开辟了12个大小为1M字节的应用程序缓冲区,同时都将与每个端点相连的USB主机控制器缓冲区大小设置为3M字节,在图中两个USB2.0外设控制器配置为4个块传输端点。用户程序中的应用程序缓冲区与外设控制器中的端点形成12个虚拟管道。发送方主机用户程序将要发送的数据添加数据包编号,分发到用户程序中的应用程序缓冲区通过管道传输到与发送方主机相连接的发送方外设控制器中,发送方外设控制器将数据放到中转数据存储器中,接收方外设控制器从中转数据存储器中读取发送过来的数据,再通过虚拟管道将数据发送到接收方主机用户程序中的应用程序缓冲区中,接收方主机应用程序根据数据包编号将数据重组,从而实现了两台主机之间的数据交换。
为方便阐述本发明的USB2.0高速双机数据交换方法,先讲述使用本方法进行双机数据交换的USB2.0高速双机数据交换装置。
请参阅图2所示,该USB2.0高速双机数据交换装置,包括与主机1相连的外设控制器U1和与主机2相连的外设控制器U2,U1包括读写控制模块U11、发送/接收缓存器U12、微控制模块单元U12;U2包括读写控制模块U21、发送/接收缓存器U22、微控制模块U23;该USB2.0高速双机数据交换装置还包括数据中转控制单元U3;U3包括一个中转数据存储器U32、一个数据重读模块U31、和四个具有连通关断控制功能的开关器件S,U32用于存放两台主机之间的交换数据,U31用于错误数据的及时重新传送。
所述四个开关器件S中,第一开关器件S1的数据输入端和第二开关器件S2的数据输入端同时连接到U32的数据输出端,第三开关器件S3的数据输出端和第四开关器件S4的数据输出端同时连接到U32的数据输入端,S1的数据输出端和S3的数据输入端连接共同做为U32的一个并行数据输入输出接口,S2的数据输出端和S4的数据输入端连接共同做为U32的另一个并行数据输入输出接口;
所述外设控制器U1、U2与开关器件S1-S4之间,以及开关器件S1-S4与中转数据存储器U32之间,均采用16位并行数据总线进行通信。
由于USB2.0协议是半双工数据通信,即在任一时刻只有一个方向上的数据传输,因此中转数据存储器可以考虑只用一块芯片,降低成本。但是价格便宜的存储芯片不支持数据输入输出端的反向,开关器件S便解决了此难题,降低了成本。
其中U1和U2为CY7C68012A-56PVXC芯片,该芯片具有本发明中数据传输方法所要求的各个特点,内部可配置为4个端点,每个端点都具有双缓冲,该芯片内部还集成了主频48MHZ的读写控制模块,可实现单周期的数据总线读写,该芯片的数据总线可在8位和16位之间切换,此外该芯片价格便宜,有利于降低成本。
U31和U32为1片SN74V293芯片,该芯片内部集成了1M*16位FIFO,该芯片还支持多片芯片之间的串并联,适合装置的升级,该芯片内部集成了数据重读模块。S1至S4为4片74LVC16244A芯片,该芯片驱动能力强,响应速度快,价格便宜。
在实际应用中,请参阅图3所示,本发明USB2.0高速双机数据交换装置原理图,U1和U2的第8脚连接到U3的62脚,U1和U2的第9脚连接到U3的75脚,U1和U2的第36脚连接到U3的61脚,U1和U2的第37脚连接到所述的U3的1脚,U1的第20脚连接到U3的64脚和80脚,U1的第40脚连到U2的第41脚,U1的第41脚连接到U2的第40脚,U1和U2的第42脚连接到U31的第60脚,U1的第43脚和S1、S4的第1、24、25、48脚相连,U1的第43脚和S2、S3的第1、24、25、48脚相连,
U12和U22设有端点2、端点4、端点6和端点8,U12的这些端点暂存与主机1交换的数据,U11的读写控制功能实现U12内的数据与U3进行数据交换,U3内部的数据按照先进先出的模式通过U21的读写控制功能与U22进行数据交换,U22内部的端点2、4、6和8再与主机2进行数据交换。从而实现两台主机之间的数据交换。
U13和U23设有端点0,通过端点0可以与主机交互所述的数据交换特征码、枚举信息和错误数据包编号等信息。
S1、S2、S3和S4的第1、24、25、48脚为使能信号,当使能信号为低时,S两端的数据总线连通,当使能信号为高时,S的输出数据总线呈现高阻状态,利用此特性,U12和U23可利用使能信号控制数据流动方向。例如当U1为发送方时,U1的第43脚设置为高电平,U2的第43脚设置为低电平,此时S2和S3连通,S1和S4断开,此时数据流向为:U12->S2->U32->S3->U22。
如图3所示,U31和U32采用SN74V293芯片,该芯片的的第75引脚为IR(输入准备好)信号,IR信号为低表示U3还可以写入数据,第64引脚为OR(输出准备好)信号,OR信号为低表示U3还可以数据没有读完,所述的读写控制模块通过采集IR和OR信号,决定是否继续读写。
U31和U32采用SN74V293芯片,该芯片的的第60脚为重读引脚,当第60脚上出现一个读写时钟周期宽度的负脉冲,U31便将U32内部的读指针设置为0,其后处于接收状态的读写控制模块将从U32内部的第一个数据开始重新读取,从而实现了数据重读功能。
该数据重读功能可使错误的数据及时得到重新传输。也就是说如果错误数据经过判断后得知仍然在U32内部时,就可以直接从U32内部读取,不用通知发送方重新发送数据。
U1和U2采用CY7C68013A-56PVXC芯片,芯片的第40脚为中断引脚,如图2所示,U1的第41脚连到U2的第40脚,U1的第40脚连接到U2的第41脚,CY7C68012A-56PVXC芯片的第44和45引脚为通用IO口,在此应用中,CY7C68012A-56PVXC芯片的第44和45引脚用来模拟SPI总线时序形成控制数据传输总线,SPI总线的中断功能通过U1和U2的第41引脚去中断对方来实现,通过SPI总线实现所述的数据交换特征码的传达,实现U1、U2、主机1和主机2之间的协调运转。为讲述上述的SPI总线操作过程,现假设U1需要向U2发送特征码,而U2不知道U1要发送特征码,所以U2不会去接收特征码,此时U1通过第41脚产生一个中断信号,U2立即进入中断状态,即等待特征码的发送,此时U1通过SPI总线发送特征码,U2收到特征码后,根据预设定的特征码,执行具体操作。
为实现U1、U2、主机1和主机2之间的协调运转,需要在U1、U2、主机1和主机2之间传递特征码和数据重传时的错误数据包编号,如上文所述主机1和U1通过U1内部的端点0传递特征码和错误数据包编号,U1和U2通过上文所述的SPI总线传递特征码和错误数据包编号,U2再通过端点0和主机2传递信息,由于上述传递过程均可为双向可逆,据此可实现U1、U2、主机1和主机2之间的协调运转。
参照图4,本发明的USB2.0高速双机数据交换方法中,使用到的数据交换特征码分别为:发送数据请求、接收数据应答、发送完数据、接收完数据、通道已建成、通道已撤销、数据重读和数据重传。各数据交换特征码对应的码值如图中所示。为方便描述以下简称特征码。
主机应用程序打开时需进行初始化,其流程如下:发送方主机和接收方主机应用程序设置12个缓冲区,设置USB2.0主机控制器内的数据交换缓冲区大小。U1和U2将内部端点配置为4个块传输端点,数据包大小设置为512字节。
初始化流程仅在主机应用程序打开时进行,之后进行的数据交换操作不再执行此步。
图5所示为主机1为发送方主机,主机2为接收方主机的数据交换操作流程图,数据交换过程如下:
①数据交换的双机建立起数据交换事务,主机1通过端点0发送发送数据请求特征码到所连的U1,U1再将发送数据请求特征码通过控制数据传输总线发送到U2,U2再通过U2的端点0在主机2轮询的时候将发送数据请求特征码发送到接收方主机,同时U2将接收数据应答特征码通过控制数据传输总线发送到U1,U1再将接收数据应答特征码通过U1的端点0发送到主机1上。主机1和主机2等待所连的U1和U2发送通道已建成特征码。U1和U2进入第②步。
②USB2.0高速双机数据交换装置建立起数据交换通道,U1和U2通过控制各自的第43引脚,分别控制S2和S4关断、S1和S3连通,由此开通U1向U2传输的数据线路,同时U1将内部的四个端点设置为输出,U2将内部的四个端点设置为输入。主机1和主机2建立12个应用程序缓冲区和U1和U2四个端点之间的管道。其中管道1、5、9连接到端点2,管道2、6、10连接到端点4,管道3、7、11连接到端点6,管道4、8、12连接到端点8。U1和U2分别通过端点0向主机1和主机2发送通道已建成特征码,之后U1等待主机1发送数据到端点,U2等待U31的OR(输出准备好)信号变为有效,根据前文所述OR信号变为有效表明U31中已有数据可供读取,主机2则开始轮询U2是否有数据要接收。
③启动数据交换,主机1收到通道已搭建好特征码后,将要发送的数据在每个数据包中添加进数据包编号,通过12个管道按管道编号不断向U1的4个端点发送,主机1对所发送的数据包计数,U1依次循环将4个端点的数据包写入到U31中,一旦有数据写入,U31的OR信号变为有效,U2检测到该信号后,从U31中读取数据,不断将数据写入到4个端点内,此时主机2一直在轮询,轮询到U2的端点内已有数据,通过12个管道按管道编号不断将U2端点内的数据读入到用户程序中的12个数据缓冲区内,主机2内的用户程序再根据数据包编号重新连接,主机2在接收的过程中对数据包个数计数。上述过程循环往复,主机1、U1、U2和主机2并行地执行各自的程序,直至主机1宣布数据传输完毕,若数据交换中发现数据错误,申请所述的数据重传操作。在数据发送的过程中,发送方主机不断按照如下顺序分发到各个管道:管道1—>管道2—>管道3—>管道4—>管道5—>管道6—>管道7—>管道8—>管道9—>管道10—>管道11—>管道12。在数据接收的过程中,接收方主机按照同样的顺序从各个管道接收数据。
④结束数据交换,主机1发现要发送的数据已经发送完,发送发送完数据特征码、数据包个数和最后一个数据包长度到U1中,U1通过控制数据传输总线将上面3个信息发送到U2,U2再通过端点0传输到主机2上。主机2根据收到的数据包个数判断数据是否接受完,由此决定是否继续轮询,当主机2接收完最后一个数据包后,通过端点0发送接收完数据特征码到U2,U2再通过控制数据传输总线发送到U1,U1通过端点0发送到主机1上。此时U1和U2进入第⑤步
⑤撤销数据交换通道,U1和U2通过控制各自的第43引脚,分别控制S1、S2、S3、S4关断,由此撤销U1向U2传输的数据线路,之后U1和U2分别通过端点0向主机1和主机2发送通道已撤销特征码。主机1和主机2断开各个管道。之后主机1、主机2、U1和U2进入第⑥步
⑥结束数据交换事务。主机1、主机2、U1和U2进入空闲状态。
图6所示为主机1为发送方主机,主机2为接收方主机的数据错误处理操作流程图,上述的数据错误处理操作包括以下步骤:
①收方主机发现错误数据包,
②判断数据包是否还在所述的中转数据存储器,若是,启动数据重读,并跳到第⑤步。数据重读为重新读取中转数据存储器内的数据。
③若错误数据不在所述的中转数据存储器,则发送错误数据包编号至发送方,
④发送方重新发送所述的错误数据包编号的数据,
⑤结束数据错误处理操作。
在背景技术中已谈及,现有的USB2.0数据传输技术中,有三个制约因素:①难以控制USB2.0主机控制器的任务调度,主机控制器的任务调度程序没有外部接口,不能直接控制任务的调度。②没有更高的速度来提供被传输的数据,也就是说两个外设控制器之间的数据交换速率低,限制了双机数据交换速率。③计算机上的主机控制器驱动程序在将主机控制器数据接收缓冲区内的数据转移到应用程序缓冲区内耗费了大量时间,进一步限制了双机数据交换速率。
针对制约因素①,本发明采用了使用多管道并发传输的方法进行改进。在本实施例中,虚拟管道数量设置为12个,分别为1至12号管道,端点数量设置为4个,分别为端点2、4、6、8;其中1、5、9号管道使用端点2,2、6、10号管道使用端点4,3、7、11号管道使用端点6,其余管道使用端点8;在主机通过管道与端点之间传输数据时,按照管道编号顺序依次进行分时传输。在本实施例中,端点数量为4个,管道也分成4组,每组管道包含3个管道,在主机通过管道与端点之间传输数据时,按照固定的顺序进行分时传输,该固定顺序可看做一个大循环,一个大循环内包含3个小循环,每个小循环中按照端点地址递增的顺序选择与该端点相连的一条管道,而每个小循环选择端点相连的不同的管道,由此一个大循环中使得各个管道均参与到传输中,又不出现重复的管道。
虽然主机控制器任务调度程序不可控,但是主机控制器是按照外设地址端点地址递增地轮询各个端点,该多管道并发传输技术的优点就在于,在主机应用程序内进行各个管道的调度,使该调度与主机控制器任务调度顺序尽量吻合,此外通过增加管道数量来增加主机控制器的任务数量,然而这些增加的任务数量全都是用于同一个源和目标之间的数据传输,这就使得一个源和目标之间的数据传输速度迅速上升。
但这同时带来一个问题,由于数据是分发到多个管道,最终数据接收方将无法重新连接数据,所以在本发明中为每个数据包添加了数据包编号,接收方可根据数据包编号重新连接数据。
通常情况下,一台计算机上外接的设备为USB鼠标和USB键盘,它们传输的数据量都很少,一秒钟内的数据传输量在100字节以下,所占据的带宽基本可以忽略,在这种外围设备少的情况下(也是最普通的情况下),本发明实施例中的CY7C68013A将所有端点都用于双机数据交换,而且每个端点都有3个管道,这就使得主机控制器为同一个数据传输任务分配了更多的带宽,经实验证明当管道数量多到8个时,总的数据传输带宽就达到了50MB/s左右,
在本发明的实施例中,使用了多达12个管道,4个端点,使一个微帧中填满了数据包,而且每个数据包长度采用512字节,空闲带宽少,一个微帧内传输的数据包数量基本上都是13个,因此数据传输速度接近了极限速度13*512*8*1000B/s,等于53.2MB/s。
而在大部分现有的数据传输技术中,没有使用多个管道,一方面原因是没有解决多个数据管道带来的数据重新连接问题,另一方面原因是USB主机控制器任务调度程序确实不能有直接控制的接口,所以对同一个数据传输只采用了一个管道,所以分配到的数据带宽少。这就是为什么优盘与计算机传输数据时,一个GB的数据往往要传2.5分钟的原因。
针对制约因素②,在本发明中,发送/接收缓冲区的并行数据输入输出接口和数据中转控制单元的并行数据输入输出接口均优选为16位接口,两者通过16位并行数据总线连接。外设控制器包括一个用于从发送/接收缓存器读取数据并写入所述的中转数据存储器或者从所述的中转数据存储器读取数据并写入发送/接收缓存器的读写控制模块。在本实施例中,该读写控制模块可实现单周期读写,频率高达48MHZ,USB2.0外设控制器16位并行数据总线带宽达到96MB/s以上,为实现USB2.0极限传输提供强大的后盾。
针对制约因素③,在本发明中,与每个端点相连的主机控制器缓冲区都人为设定了较大的容量;在本发明实施例中为与每个端点相连的主机控制器缓冲区分配了3MB的空间,该空间可同时容纳6144个数据包,为主机控制器与端点和主机控制器与应用程序的并行运行提供了宽裕的数据缓冲能力,使它们完全可以并发运行。在USB2.0协议规范中并没有提及它们之间的并行运行,因此在大多数现有的技术中,忽略了该环节,导致它们之间的是串行运行,这就是为什么现有的技术中几乎没有突破30MB/s数据传输能力的原因之一(30MB/s≈53.2/2=26.6MB/s)。
在实际的数据传输过程中,由于充分利用了USB2.0总线带宽,传输速率达到了50MB/s。由于采取了数据错误重传机制,数据误码率为0。
在此说明书中,本发明已参照其特定的实施例做了描述。但是,很显然仍可以做出各种修改和变换而不背离本发明的精神和范围。因此说明书和附图应被认为是说明性的而非限定性的。
Claims (9)
1.一种基于USB的高速双机数据交换方法,包括如下步骤:
发送方主机将待传数据分包处理并连续编号后,经USB接口通过多个并发管道发送至发送方外设控制器;
发送方外设控制器将待传数据经并行数据接口发送至共享缓冲区;
接收方外设控制器经并行数据总线从共享缓冲区读取待传数据后,接收方主机经USB接口通过多个并发管道读取接收方外设控制器中的待传数据;
接收方主机按编号顺序重组从接收方外设控制器中读取的数据;
其特征在于,收发双方主机通过如下步骤实现数据连接:
发送方主机通过端点0向发送方外设控制器发送发送数据请求特征码,发送方外设控制器再通过控制数据传输总线将该特征码传送至接收方外设控制器,接收方主机轮询外设控制器时从其中接收该特征码;
接收方主机收到发送数据请求特征码后,通过端点0发送接收数据应答特征码,经接收方外设控制器、发送方外设控制器,最后到发送方主机;
发送方外设控制器开通其到共享缓冲区方向的数据线路,同时将内部的端点全部设置为输出,接收方外设控制器开通共享缓冲区到其方向的数据线路,同时将内部的端点全部设置为输入;
发送方和接收方外设控制器分别通过端点0向发送方主机和接收方主机发送通道已建成特征码;
发送方主机收到通道已建成特征码后开始数据发送,接收方主机收到通道已建成特征码后准备数据接收,并在数据到达后开始接收数据。
2.根据权利要求1所述的基于USB的高速双机数据交换方法,其特征在于,还包括:
发送方主机设置应用程序缓冲区、USB主机控制器缓冲区的步骤,
和接收方主机设置应用程序缓冲区、USB主机控制器缓冲区的步骤,
所述USB主机控制器缓冲区数量与所连的外设控制器块传输端点数量相同,所述的应用程序缓冲区按传输端点数量分组,每组应用缓冲区固定连接到一个端点,一个应用程序缓冲区和一个端点形成一个管道,所有的应用程序缓冲区和所有的端点形成多个并发管道,主机通过多个并发管道与外设控制器传输数据时,按照固定的传输顺序与各个管道传输数据,所述的传输顺序以管道所连的端点地址为基本顺序,每次传输时选择与传输端点相连的一条管道。
3.根据权利要求1所述的基于USB的高速双机数据交换方法,其特征在于,还包括错误数据重传步骤:
根据数据包编号判断错误数据包是否还在所述的共享缓冲区,若是,重新读取共享缓冲区中的数据包;
若否,则发送数据重传特征码和错误数据包编号至发送方主机;
发送方主机接收到数据重传特征码及错误数据包编号后,重新发送该编号数据包。
4.根据权利要求1所述的基于USB的高速双机数据交换方法,其特征在于,发送方外设控制器与共享缓冲区之间、及接收方外设控制器与共享缓冲区之间均采用单向全带宽传输方式进行数据传输。
5.根据权利要求1所述的基于USB的高速双机数据交换方法,其特征在于,收发双方外设控制器的用于数据传输的端点设置为4个块传输端点;收发双方外设控制器与收发双方主机之间建立的管道数量为12个,每三个管道为一组共用一个外设控制器的块传输端点。
6.根据权利要求1所述的基于USB的高速双机数据交换方法,其特征在于,收发双方与外设控制器各块端点相连的USB主机控制器缓冲区大小均设置为3M;收发双方与各管道一一对应的应用程序缓冲区大小均设置为1M;数据包长度设置为512字节。
7.一种基于USB的高速双机数据交换装置,其特征在于,包括:
两个外设控制器,其分别通过USB接口与需要进行数据交换的两个主机连接并直接通信,其根据控制指令,执行接收直连主机控制器发送的数据包并转发至中转数据存储器,或者读取中转数据存储器内数据包并发送给直连主机控制器的操作;
一个数据中转控制单元,其包括至少一个中转数据存储器、一个数据重读模块和两个分别用于连接两个外设控制器的并行数据输入输出接口,其单周期单向接收一个外设控制器发来的数据包并转存入中转数据存储器供另一个外设控制器读取;
控制数据传输总线,用于两个外设控制器之间的控制数据传输;
所述外设控制器包括一个发送/接收缓存器、一个用于从发送/接收缓存器读取数据并写入所述的中转数据存储器或者从所述的中转数据存储器读取数据并写入发送/接收缓存器的读写控制模块、一个具有运算处理功能的微控制模块,所述发送/接收缓存器设有一个用于与主机控制器通信的串行数据输入输出接口和一个与中转数据存储器通信的并行数据输入输出接口,其内的缓存区为块传输端点缓冲区,设置为多个块传输端点;所述发送/接收缓冲区的并行数据输入输出接口与数据中转控制单元的并行数据输入输出接口通过并行数据总线连接,所述微控制模块与相连主机控制器通过端点0发送或接收特征码数据,所述微控制模块还被设定为通过设置块传输端点的输入输出状态控制主机控制器与发送/接收缓存器之间的数据传输及传输方向,通过控制读写控制模块的启停及读写方向来控制发送/接收缓存器与中转数据存储器之间的数据传输及传输方向,所述微控制模块的特征码输出脚通过控制数据传输总线与另一个外设控制器的微控制模块的特征码输入脚连接。
8.根据权利要求7所述的双机数据交换装置,其特征在于,所述发送/接收缓存器的并行数据输入输出接口和数据中转控制单元的并行数据输入输出接口均为16位接口,两者通过16位并行数据总线连接。
9.根据权利要求7所述的双机数据交换装置,其特征在于,所述的数据中转控制单元还包括四个具有连通关断控制功能的开关器件,其中,第一开关器件的数据输入端和第二开关器件的数据输入端同时连接到中转数据存储器的数据输出端,第三开关器件的数据输出端和第四开关器件的数据输出端同时连接到中转数据存储器的数据输入端,第一开关器件的数据输出端和第三开关器件的数据输入端连接共同做为数据中转控制单元的一个并行数据输入输出接口,第二开关器件的数据输出端和第四开关器件的数据输入端连接共同做为数据中转控制单元的另一个并行数据输入输出接口;
所述的数据中转控制单元中的中转数据存储器为FIFO,容量设置在512KB及以上,所述的数据重读模块包括一个数据重读启动引脚,当在该引脚上出现数据重读信号时,将FIFO的读指针设置为0;
所述的开关器件可为电子开关、总线选择器或输入缓冲器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110440502.2A CN102541793B (zh) | 2011-12-26 | 2011-12-26 | 一种基于usb的高速双机数据交换方法及数据交换装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110440502.2A CN102541793B (zh) | 2011-12-26 | 2011-12-26 | 一种基于usb的高速双机数据交换方法及数据交换装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541793A CN102541793A (zh) | 2012-07-04 |
CN102541793B true CN102541793B (zh) | 2014-10-08 |
Family
ID=46348723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110440502.2A Expired - Fee Related CN102541793B (zh) | 2011-12-26 | 2011-12-26 | 一种基于usb的高速双机数据交换方法及数据交换装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541793B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9612991B2 (en) * | 2013-10-10 | 2017-04-04 | Nokia Technologies Oy | Connector interface pin mapping |
EP3078168A4 (en) * | 2013-12-08 | 2017-08-09 | Crossport Network Solutions Inc. | Link system for establishing high speed network communications and file transfer between hosts using i/o device links |
CN103902491B (zh) * | 2014-03-26 | 2017-01-18 | 华南理工大学 | 一种基于usb的高速数据传输设备及方法 |
CN103885918B (zh) * | 2014-04-17 | 2015-12-02 | 天津瑞发科半导体技术有限公司 | 延长通用串行总线传输距离的装置 |
CN105022705B (zh) * | 2014-04-17 | 2018-01-12 | 炬芯(珠海)科技有限公司 | 一种设备间的数据共享的方法及装置 |
CN103973534A (zh) * | 2014-05-28 | 2014-08-06 | 广州视源电子科技股份有限公司 | 一种模拟u盘共享方法以及设备 |
CN104461978B (zh) * | 2014-10-24 | 2021-02-19 | 厦门市美亚柏科信息股份有限公司 | 单向数据传输的方法及装置 |
CN105718219B (zh) * | 2016-01-19 | 2018-12-04 | 浙江大学 | 基于usb3.0的高速数据传输存储的方法与模块 |
CN110113504A (zh) * | 2018-02-01 | 2019-08-09 | 上海钢盾信息科技有限公司 | 一种图像传输的方法及图像传输的装置 |
CN110147338A (zh) * | 2019-05-06 | 2019-08-20 | 电子科技大学 | 基于多块usb接口芯片提高与上位机通讯速率的方法 |
CN111413899A (zh) * | 2020-03-25 | 2020-07-14 | 华大半导体有限公司 | 基于swd的数据采集方法、系统及mcu |
CN113254375A (zh) * | 2020-12-30 | 2021-08-13 | 深圳怡化电脑股份有限公司 | 一种数据传输方法、装置、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6899627B2 (en) * | 1999-10-06 | 2005-05-31 | Igt | USB device protocol for a gaming machine |
-
2011
- 2011-12-26 CN CN201110440502.2A patent/CN102541793B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6899627B2 (en) * | 1999-10-06 | 2005-05-31 | Igt | USB device protocol for a gaming machine |
Non-Patent Citations (5)
Title |
---|
吴剑,王广志,丁辉.基于单片机的多并行接口设备数据传输的集成和控制.《计算机工程与应用》.2003,(第35期),参见第89页第1栏第1段. * |
王峰.基于PL-2301实现网络隔离下的双机通信.《信息安全与通信保密》.2011,(第6期),第106页第2节,图2-3,. * |
第21页第2栏1.2节步骤3. |
陆海,胡伯涵.UDP协议中分包与重组方法研究.《无线通信技术》.2010,第36卷(第5期),第20页第2栏倒数第1段至第21页第1栏第1-2段,图1 |
陆海,胡伯涵.UDP协议中分包与重组方法研究.《无线通信技术》.2010,第36卷(第5期),第20页第2栏倒数第1段至第21页第1栏第1-2段,图1,第21页第2栏1.2节步骤3. * |
Also Published As
Publication number | Publication date |
---|---|
CN102541793A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541793B (zh) | 一种基于usb的高速双机数据交换方法及数据交换装置 | |
US6708247B1 (en) | Extending universal serial bus to allow communication with USB devices at a remote location | |
US9430432B2 (en) | Optimized multi-root input output virtualization aware switch | |
EP2676204B1 (en) | Serial interface | |
CN105005546B (zh) | 一种内置交点队列的异步axi总线结构 | |
US6735658B1 (en) | System and method for combining computer video and remote universal serial bus in an extended cable | |
JP2006500672A (ja) | バス接続システム | |
CN101599294B (zh) | 一种基于fpga的多虚拟队列数据存储的方法 | |
WO1999008196A9 (en) | A universal serial bus device controller | |
JP4377603B2 (ja) | バス通信システムおよびその通信制御方法 | |
GB2409073A (en) | Dedicated connection between CPU and network interface in multi-processor systems | |
CN108959136B (zh) | 基于spi的数据传输加速装置、系统及数据传输方法 | |
CN203812236U (zh) | 一种基于处理器和现场可编程门阵列的数据交换系统 | |
CN102253909A (zh) | Fpga环境下多用途pci接口及其数据传输方法 | |
JPH034351A (ja) | システム・バス・データ・リンク装置 | |
CN102207920B (zh) | 一种bvci总线到ahb总线的转换桥 | |
CN108280041A (zh) | 一种内部集成电路主机的通信方法和装置 | |
CN110971621B (zh) | 基于sdio接口的嵌入式多cpu互联电路、互联方法及驱动方法 | |
CN101655825B (zh) | 一种使用fpga实现lpc-usb双向通信的装置及lpc-usb和usb-lpc数据转换方法 | |
US20240078200A1 (en) | Memory operating method, memory and electronic device | |
CN202694039U (zh) | 一种适配器电路 | |
CN200976125Y (zh) | 虚拟串口装置 | |
CN100462952C (zh) | 接口可配置的通用串行总线控制器 | |
CN102622319A (zh) | 基于mpmc的高速存储器接口ip核的数据交换系统 | |
CN102999458A (zh) | 高速智能串口芯片 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141008 Termination date: 20211226 |
|
CF01 | Termination of patent right due to non-payment of annual fee |