一种基于增强型外设互连协议总线的数据传输方法及装置与流程

文档序号:12484901阅读:183来源:国知局
一种基于增强型外设互连协议总线的数据传输方法及装置与流程

本发明涉及数据传输领域,尤其涉及一种基于增强型外设互连(PCIe,Peripheral Component Interconnect express)协议总线的数据传输方法及装置。



背景技术:

PCIe协议总线是第三代高性能接口总线,属于一种基于数据包的串行连接协议,它提供高速的、高带宽的、高性能的、高扩展性的、可热插拔的、点到点的、双单工的、串行差分信号链路来互联设备。并且,已经被广泛应用于计算机和电子通信领域的外围设备互连上。

基于PCIe协议总线在通信领域的应用,已出现了很多不同的类型,比如:基于PCIe协议总线的高级可扩展接口(AXI);主机适配接口(HAL);专利《基于PCIE协议的中央处理器(CPU)访问本地总线的装置及方法》(专利号:CN201310528347.9)阐述的一种通过PCIe实现CPU访问寄存器的方法;专利《在PCIE总线上传输报文的方法、设备和系统》(专利号:CN201110032172.3)阐述的一种以标识(ID)路由的方式从PCIe起始设备传输协议报文到目的设备的方法;等等,但这些已有技术都是基于某一个特定应用如单一实现CPU访问寄存器或者传输协议报文。



技术实现要素:

有鉴于此,本发明实施例期望提供一种基于增强型外设互连协议总线的数据传输方法及装置,可以基于一条PCIe总线同时实现CPU读写访问寄存器和数据报文以直接存储访问(DMA,Direct Memory Access)方式进行双向传输。

为达到上述目的,本发明的技术方案是这样实现的:

本发明实施例提供了一种基于增强型外设互连PCIe协议总线的数据传输 方法,所述方法应用于控制器,所述控制器中包括第一工作模块、第二工作模块、第三工作模块和第四工作模块,所述方法包括:

接收对端设备发送的数据包,所述数据包上携带有工作类型标志位;

在工作类型标志位表示为读操作时,将所述数据包分配给第一工作模块,所述第一工作模块解析所述数据包获得读操作命令,将所述读操作命令发送给目标设备,接收目标设备返回的读数据,并将所述读数据发送给所述对端设备;

在工作类型标志位表示为写操作时,将所述数据包分配给第二工作模块,所述第二工作模块解析所述数据包获得写操作命令时,将所述数据包中的写操作命令发送给目标设备,接收目标设备返回的写操作完成信号;

所述第二工作模块解析所述数据包获得直接存储访问DMA读操作命令时,启动所述第三工作模块,将所述DMA读操作命令发送给所述第三工作模块,所述第三工作模块根据所述DMA读操作命令获得所述对端设备中的发送报文,将所述发送报文发送给目标设备;

所述第二工作模块解析所述数据包获得DMA写操作命令时,启动所述第四工作模块,将所述DMA写操作命令发送给所述第四工作模块,所述第四工作模块根据所述DMA写操作命令将目标设备发送的接收报文,发送给对端设备。

上述方案中,所述第一工作模块解析所述数据包获得读操作命令,将所述读操作命令发送给目标设备,接收目标设备返回的读数据,并将所述读数据发送给所述对端设备,包括:

所述第一工作模块解析数据包获得CPU读操作命令,然后将所述CPU读操作命令转换为一个或多个通用寄存器读操作访问命令;其中,所述CPU读操作命令中包括读使能、读初始地址、读数据个数,所述通用寄存器读操作访问命令包括读使能、读地址;

第一工作模块将所述一个或多个通用寄存器读操作访问命令缓存到第一异步先入先出缓存器FIFO中;

所述第一工作模块中的第一异步FIFO将所述一个或多个通用寄存器读操 作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个通用寄存器读操作访问命令通过配置通道发送给所述目标设备;通用寄存器读操作访问命令用于所述目标设备进行读操作获得读数据;

所述第一工作模块中的第二异步FIFO通过配置通道接收所述读数据,并将所述读数据转换为符合PCIe协议要求的TLP包结构形式和时序;并将转换后的读数据发送给对端设备。

上述方案中,所述第一工作模块的第二异步FIFO在第一预设时间内未接收到所述目标设备发送的读数据时,自行生成无效读数据。

上述方案中,所述第二工作模块解析所述数据包获得写操作命令时,将所述数据包中的写操作命令发送给目标设备,接收目标设备返回的写操作完成信号,包括:

所述第二工作模块解析数据包获得CPU写操作命令,然后将所述CPU写操作命令转换为一个或多个通用寄存器写操作访问命令;其中,所述CPU写操作命令中包括写使能、写数据、写初始地址、写数据个数,所述通用寄存器写操作访问命令包括写使能、写地址、所述写地址对应的单个写数据;

第二工作模块将所述一个或多个通用寄存器写操作访问命令缓存到第三异步FIFO中;

所述第二工作模块中的第三异步FIFO将所述一个或多个通用寄存器写操作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个通用寄存器写操作访问命令通过配置通道发送给所述目标设备;通用寄存器写操作访问命令用于所述目标设备在写地址写入所述写地址对应的单个写数据;

所述第二工作模块通过配置通道接收所述目标设备发送的写操作完成信号。

上述方案中,所述第二工作模块在第二预设时间内未接收到所述目标设备发送的写操作完成信号时,所述第二工作模块自行生成所述写操作完成信号。

上述方案中,所述DMA读操作命令中包括报文发送指示信息的初始地址和地址空间大小;所述第三工作模块根据所述DMA读操作命令获得所述对端设备中的发送报文,将所述发送报文发送给目标设备,包括:

在第i次时,所述第三工作模块根据所述DMA读操作命令将报文发送指示信息的地址发送给对端设备;其中,所述报文发送指示信息的地址为报文发送指示信息的初始地址+i-1,i为大于等于1的整数;

所述第三工作模块接收对端设备发送的所述报文发送指示信息的地址中的报文发送指示信息内容;其中,所述报文发送指示信息内容包括报文发送有效指示信息、报文大小和报文初始缓存的地址;

所述第三工作模块在所述报文发送有效指示信息为有效时,将所述报文大小和报文初始缓存地址发送给对端设备;

所述第三工作模块接收所述对端设备发送的所述报文大小和报文初始缓存地址对应的发送报文;

所述第三工作模块将所述发送报文缓存到第四异步FIFO中,经过时序转换、数据位宽转换后,转换为通用包结构形式报文,通过DMA通道发送给目标设备;

所述第三工作模块向对端设备发送报文发送完成命令,所述报文发送完成命令用于所述对端设备将所述发送报文对应的报文发送有效指示信息更改为无效;

依次循环进行上述步骤,直至所述报文发送指示信息的地址超出所述报文发送指示信息的初始地址和地址空间大小限定的地址范围。

上述方案中,所述DMA写操作命令中包括报文接收指示信息的初始地址和地址空间大小;所述第四工作模块根据所述DMA写操作命令将目标设备发送的接收报文,发送给对端设备,包括:

在第j次时,所述第四工作模块根据所述DMA写操作命令将报文接收指示信息的地址发送给对端设备;其中,所述报文接收指示信息的地址为报文接收指示信息的初始地址+j-1,j为大于等于1的整数;

所述第四工作模块接收对端设备发送的所述报文接收指示信息的地址中的报文接收指示信息内容;其中,所述报文接收指示信息内容包括报文接收有效指示信息、接收报文的初始缓存地址;

所述第四工作模块的第五异步FIFO将目标设备发送的通用包结构形式的接收报文进行缓存、时序转换和数据位宽转换后,转换为符合PCIe协议要求的TLP包结构形式和时序的报文数据包;

在所述报文接收有效指示信息为有效时,所述第四工作模块将所述接收报文的初始缓存地址以及从第五异步FIFO输出的报文数据包发送给对端设备;所述接收报文的初始缓存地址用于所述对端设备从所述接收报文的初始缓存地址处缓存报文数据包;

所述第四工作模块对端设备发送报文接收完成命令,所述报文接收完成命令用于所述对端设备将所述报文数据包初始缓存地址对应的报文接收有效指示信息更改为无效;

依次循环进行上述步骤,直至所述报文接收指示信息的地址超出所述报文接收指示信息的初始地址和地址空间大小限定的地址范围。

本发明实施例还提供了一种基于增强型外设互连PCIe协议总线的数据传输装置,所述装置包括:接收模块,分配模块,第一工作模块、第二工作模块、第三工作模块和第四工作模块,其中,

接收模块,用于接收对端设备发送的数据包,所述数据包上携带有工作类型标志位;

分配模块,用于在所述接收模块接收到的工作类型标志位表示为读操作时,将所述数据包分配给第一工作模块;

所述第一工作模块,用于在解析出所述分配模块分配的数据包获得读操作命令时,将所述读操作命令发送给目标设备,接收目标设备返回的读数据,并将所述读数据发送给所述对端设备;

分配模块,还用于在所述接收模块接收到的工作类型标志位表示为写操作时,将所述数据包分配给第二工作模块;

所述第二工作模块,用于在解析出所述分配模块分配的所述数据包获得写操作命令时,将所述数据包中的写操作命令发送给目标设备,接收目标设备返回的写操作完成信号;

所述第二工作模块,还用于在解析所述数据包获得直接存储访问DMA读操作命令时,启动所述第三工作模块,并将所述DMA读操作命令发送给所述第三工作模块;

所述第三工作模块,用于根据所述第二工作模块发送的所述DMA读操作命令获得所述对端设备中的发送报文,并将所述发送报文发送给目标设备;

所述第二工作模块,还用于在解析出所述数据包获得DMA写操作命令时,启动所述第四工作模块,将所述DMA写操作命令发送给所述第四工作模块;

所述第四工作模块,用于根据所述第二工作模块发送的所述DMA写操作命令将目标设备发送的接收报文,发送给对端设备。

上述方案中,所述第一工作模块中包括:第一处理模块,第一异步先入先出缓存器FIFO模块和第二异步FIFO模块;其中,

所述第一处理模块,用于解析数据包获得CPU读操作命令,然后将所述CPU读操作命令转换为一个或多个通用寄存器读操作访问命令;其中,所述CPU读操作命令中包括读使能、读初始地址、读数据个数,所述通用寄存器读操作访问命令包括读使能、读地址;

所述第一处理模块,还用于将所述一个或多个通用寄存器读操作访问命令缓存到第一异步先入先出缓存器FIFO模块中;

所述第一异步FIFO模块,用于将所述第一处理模块缓存的一个或多个通用寄存器读操作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个通用寄存器读操作访问命令通过配置通道发送给所述目标设备;通用寄存器读操作访问命令用于所述目标设备进行读操作获得读数据;

所述第二异步FIFO模块,用于通过配置通道接收所述读数据,并将所述读数据转换为符合PCIe协议要求的TLP包结构形式和时序;并将转换后的读数据发送给对端设备。

上述方案中,所述第一异步FIFO模块,还用于在第一预设时间内未接收到所述目标设备发送的读数据时,自行生成无效读数据。

上述方案中,所述第二工作模块中包括:第二处理模块,第三异步FIFO 模块;其中,

所述第二处理模块,用于解析数据包获得CPU写操作命令,然后将所述CPU写操作命令转换为一个或多个通用寄存器写操作访问命令;其中,所述CPU写操作命令中包括写使能、写数据、写初始地址、写数据个数,所述通用寄存器写操作访问命令包括写使能、写地址、所述写地址对应的单个写数据;

所述第二处理模块,还用于将所述一个或多个通用寄存器写操作访问命令缓存到第三异步FIFO模块中;

所述第三异步FIFO模块,用于将所述第二处理模块缓存的所述一个或多个通用寄存器写操作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个通用寄存器写操作访问命令通过配置通道发送给所述目标设备;通用寄存器写操作访问命令用于所述目标设备在写地址写入所述写地址对应的单个写数据;

所述第二处理模块,还用于通过配置通道接收所述目标设备发送的写操作完成信号。

上述方案中,所述第二处理模块,还用于在第二预设时间内未接收到所述目标设备发送的写操作完成信号时,生成所述写操作完成信号。

上述方案中,所述DMA读操作命令中包括报文发送指示信息的初始地址和地址空间大小;所述第三工作模块包括第三处理模块和第四异步FIFO模块;其中,

第三处理模块,用于在第i次时,根据所述DMA读操作命令将报文发送指示信息的地址发送给对端设备;其中,所述报文发送指示信息的地址为报文发送指示信息的初始地址+i-1,i为大于等于1的整数;所述报文发送指示信息的地址不超出所述报文发送指示信息的初始地址和地址空间大小限定的地址范围

第三处理模块,还用于接收对端设备发送的所述报文发送指示信息的地址中的报文发送指示信息内容;其中,所述报文发送指示信息内容包括报文发送有效指示信息、报文大小和报文初始缓存的地址;

第三处理模块,还用于在所述报文发送有效指示信息为有效时,将所述报文大小和报文初始缓存地址发送给对端设备;

第三处理模块,还用于接收所述对端设备发送的所述报文大小和报文初始缓存地址对应的发送报文,并将所述发送报文缓存到第四异步FIFO模块中

所述第四异步FIFO模块,用于在将所述第三处理模块缓存的发送报文经过时序转换、数据位宽转换后,转换为通用包结构形式报文,通过DMA通道发送给目标设备;

第三处理模块,还用于在所述第四异步FIFO模块将所述发送报文发送给目标设备后,向对端设备发送报文发送完成命令,所述报文发送完成命令用于所述对端设备将所述发送报文对应的报文发送有效指示信息更改为无效。

上述方案中,所述DMA写操作命令中包括报文接收指示信息的初始地址和地址空间大小;所述第四工作模块包括:第四处理模块和第五异步FIFO模块,其中,

所述第四处理模块,用于在第j次时,根据所述DMA写操作命令将报文接收指示信息的地址发送给对端设备;其中,所述报文接收指示信息的地址为报文接收指示信息的初始地址+j-1,j为大于等于1的整数;所述报文接收指示信息的地址未超出所述报文接收指示信息的初始地址和地址空间大小限定的地址范围;

所述第四处理模块,还用于接收对端设备发送的所述报文接收指示信息的地址中的报文接收指示信息内容;其中,所述报文接收指示信息内容包括报文接收有效指示信息、接收报文的初始缓存地址;

所述第五异步FIFO模块,用于将目标设备发送的通用包结构形式的接收报文进行缓存、时序转换和数据位宽转换后,转换为符合PCIe协议要求的TLP包结构形式和时序的报文数据包;

所述第四处理模块,还用于在所述报文接收有效指示信息为有效时,将所述接收报文的初始缓存地址以及所述第五异步FIFO模块输出的报文数据包发送给对端设备;所述接收报文的初始缓存地址用于所述对端设备从所述接收报 文的初始缓存地址处缓存报文数据包;

所述第四处理模块,还用于向对端设备发送报文接收完成命令,所述报文接收完成命令用于所述对端设备将所述报文数据包初始缓存地址对应的报文接收有效指示信息更改为无效。

本发明实施例提供的基于增强型外设互连协议总线的数据传输方法及装置,控制器中两个或两个以上的工作模块可以同时工作,这样,基于一条PCIe总线链路,可以实现同时进行CPU读写访问寄存器操作和数据报文以DMA方式进行双向传输,从而也大大简化了PCIe总线设备或系统,具有应用灵活多样性的特点;另外,一个所述控制器可以同时支持一个或一个以上的目标设备,具有非常好的扩展性。

附图说明

图1为本发明实施例1提供的一种基于PCIe协议总线的数据传输方法的流程示意图;

图2为本发明实施例2提供的基于PCIe协议总线的系统架构框图;

图3为本发明实施例2提供的第一种数据传输方法的流程示意图;

图4为本发明实施例2提供的第二种数据传输方法的流程示意图;

图5为本发明实施例2提供的第三种数据传输方法的流程示意图;

图6为本发明实施例2提供的第四种数据传输方法的流程示意图;

图7为本发明实施例3提供的一种基于PCIe协议总线的数据传输装置的结构框图;

图8为本发明实施例3提供的第一工作模块的结构框图;

图9为本发明实施例3提供的第二工作模块的结构框图;

图10为本发明实施例3提供的第三工作模块的结构框图;

图11为本发明实施例3提供的第四工作模块的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

实施例1

本发明实施例提供了一种基于PCIe协议总线的数据传输方法,所述方法应用于控制器,所述控制器中包括第一工作模块、第二工作模块、第三工作模块和第四工作模块,如图1所示,本实施例方法的处理流程包括以下步骤:

步骤101、接收对端设备发送的数据包,所述数据包上携带有工作类型标志位。

本实施例方法是对端设备与目标设备的之间的数据传输方法,主要传输类型有CPU读、CPU写、DMA读、DMA写;对端设备发送给控制器的数据包上携带有工作类型标志位,以使控制器区分工作类型,进而应用不同的模块进行数据处理。

步骤102、在工作类型标志位表示为读操作时,将所述数据包分配给第一工作模块。

步骤103、所述第一工作模块解析所述数据包获得读操作命令,将所述读操作命令发送给目标设备,接收目标设备返回的读数据,并将所述读数据发送给所述对端设备。

这里,第一工作模块用来处理对端设备发送来的读操作数据包,读操作数据包中会携带有读操作命令,读操作命令中会指明要求目标设备进行读操作的地址,控制器将读操作命令转发给目标设备后,目标设备会根据读操作命令在相应地址处读取数据获得读数据,然后将读数据转发给控制器,控制器再将该读数据转发给对端设备,这就完成了一次读操作。

需要说明的是,在上述过程中,两个设备之间进行数据传输时要按照适应的数据格式进行传输,可以进行格式转换,将数据转换为适应的格式。

步骤104、在工作类型标志位表示为写操作时,将所述数据包分配给第二 工作模块。

步骤105、所述第二工作模块解析所述数据包获得写操作命令时,将所述数据包中的写操作命令发送给目标设备,接收目标设备返回的写操作完成信号。

这里,第二工作模块用来处理对端设备发送来的写操作数据包,写操作数据包中会携带有写操作命令,写操作命令中会指明要求目标设备进行写操作的地址以及写数据,第二工作模块将写操作命令转发给目标设备后,目标设备会根据写操作命令将该写数据写到相应地址处,然后发送写操作完成信号给第二工作模块,第二工作模块决定接收到写操作完成信号后决定是否可以发送下一个写操作命令给目标设备。

在上述过程中,两个设备之间进行数据传输时要按照适应的数据格式进行传输,可以进行格式转换,将数据转换为适应的格式。

步骤106、所述第二工作模块解析所述数据包获得DMA读操作命令时,启动所述第三工作模块,将所述DMA读操作命令发送给所述第三工作模块。

步骤107、所述第三工作模块根据所述DMA读操作命令获得所述对端设备中的发送报文,将所述发送报文发送给目标设备。

这里,在工作类型标志位表示为写操作时,将所述数据包分配给第二工作模块,所述第二工作模块解析所述数据包获得DMA读操作命令时,启动所述第三工作模块,将所述DMA读操作命令发送给所述第三工作模块。所述第三工作模块根据所述DMA读操作命令与对端设备进行信息交互获得对端设备要发送给目标设备的发送报文,然后第三工作模块将获得的所述发送报文发送给目标设备。

步骤108、所述第二工作模块解析所述数据包获得DMA写操作命令时,启动所述第四工作模块,将所述DMA写操作命令发送给所述第四工作模块。

步骤109、所述第四工作模块根据所述DMA写操作命令将目标设备发送的接收报文,发送给对端设备。

这里,在工作类型标志位表示为写操作时,将所述数据包分配给第二工作模块,所述第二工作模块解析所述数据包获得DMA读操作命令时,启动所述 第四工作模块,将所述DMA读操作命令发送给所述第四工作模块。所述第四工作模块根据所述DMA写操作命令与对端设备进行信息交互获得对端设备给接收报文分配的缓存地址,然后第三工作模块将获得的所述目标设备发送的接收报文转发给对端设备,使对端设备在给接收报文分配的缓存地址缓存该接收报文。

上述过程中,步骤102-103和步骤104-105没有先后顺序之分,步骤105、步骤106-107和步骤108-109也没有先后顺序之分,控制器只是根据数据包的内容选取工作模块进行上述步骤。

本实施例方法中,控制器中两个或两个以上的工作模块可以同时工作,这样基于一条PCIe总线链路,本实施例方法可以实现同时进行CPU读写访问寄存器操作和数据报文以DMA的方式双向传输,从而也大大简化了一个PCIe总线设备或系统,也具有应用灵活多样性的特点;且本实施例方法中,一个所述控制器可以同时支持一个或一个以上所述目标设备,具有非常好的扩展性。

实施例2

本发明实施例提供了一种基于PCIe协议总线的数据传输方法,该方法是基于如图2所示的PCIe链路系统架构,如图2所示,所述PCIe链路系统包括对端设备201、协议层设备202、控制器203、目标设备204;其中,

所述对端设备201能产生CPU读操作命令和CPU写操作命令;具有报文接收指示信息和报文发送指示信息的缓存空间;具有缓存接收报文和发送报文的缓存空间;在整个PCIe链路系统中作为一个PCIe根设备、交换设备或端点设备工作;与所述协议层设备202通过PCIe链路(即:高速串行总线SerDes)进行信息的高速、多带宽的点对点通信。

协议层设备202是为了实现PCIe协议层的功能和要求,使得本设备在整个PCIe链路系统中作为一个PCIe端点设备工作。它具有一个高速串行(SerDes)接口和一个事务层包(TLP)接口,其中SerDes接口是与所述对端设备201进行互联和数据交互,TLP接口是与所述控制器203进行互联和数据交互。

控制器203中包括第一工作模块、第二工作模块、第三工作模块和第四工 作模块,控制器203通过第一工作模块执行所述对端设备201通过协议层设备202发送过来的CPU读操作命令,通过第二工作模块执行所述对端设备201通过协议层设备202发送过来的CPU写操作命令;通过第二工作模块和第三工作模块协作执行所述对端设备201通过协议层设备202发送过来的DMA写操作命令,通过第二工作模块和第四工作模块协作执行所述对端设备201通过协议层设备202发送过来的DMA读操作命令。

所述控制器203上设置有配置通道接口和DMA通道接口。配置通道接口接口用于发送和接收CPU读写指令,DMA通道接口用于发送和接收DMA读写指令。

目标设备204包括但不限于具有符合所述控制器203的配置通道接口和DMA通道接口中的至少一种接口。在本实施例中,所述控制器203可以与一个或一个以上的所述目标设备204进行数据通信。控制器203与目标设备204之间通过配置通道接口连接的通道为配置通道,控制器203与目标设备204之间通过DMA通道接口连接的通道为DMA通道,配置通道用于传输CPU读写操作的数据,DMA通道用于传输DMA读写操作的报文。

下述方法中,所述对端设备与协议层设备之间通过高速串行总线SerDes进行数据交互,数据形式为PCIe协议包;协议层设备与控制器之间通过各自的TLP接口进行数据交互,数据形式为TLP包;协议层设备可以将对端设备发送的PCIe协议包转换为TLP包后转发给控制器,或者,将控制器发送的TLP包转换为PCIe协议包后转发给对端设备。

如图3所示,为对端设备从目标设备进行CPU访问读数据的方法,所述方法中控制器的第一工作模块进行工作,该方法的处理流程包括以下步骤:

步骤301、对端设备产生CPU读操作命令,并将所述CPU读操作命令组成PCIe协议包通过高速串行总线SerDes发送给协议层设备。

组装成的PCIe协议包上设置有工作类型标志位,所述工作类型标志位表示为读操作。

步骤302、协议层设备将PCIe协议包转换成TLP包,并通过TLP接口发 送给控制器。

该TLP包在PCIe协议中又称存储(memory)读或IO读命令的包。所述TLP包上设置有工作类型标志位,所述工作类型标志位表示为读操作。

步骤303、控制器将工作类型标志位为读操作的TLP包分配给第一工作模块,所述第一工作模块解析接收到的TLP包,然后将解析出的所述CPU读操作命令转换为一个或多个通用寄存器读操作访问命令。

所述CPU读操作命令中包括读使能,读初始地址,读数据个数;所述通用寄存器读操作访问命令包括读使能、读地址;假设读初始地址为N,读数据个数10,则第一工作模块解析出所述CPU读操作命令后,会将所述CPU读操作命令转换为10个通用寄存器读操作访问命令:(读使能,读地址N)、(读使能,读地址N+1)……(读使能,读地址N+9)。

步骤304、第一工作模块将所述一个或多个通用寄存器读操作访问命令缓存到第一异步先入先出缓存器FIFO中。

步骤305、所述第一工作模块中的第一异步FIFO将所述一个或多个通用寄存器读操作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个通用寄存器读操作访问命令通过配置通道发送给所述目标设备。

所述第一工作模块中的第一异步FIFO会通过配置通道接口将所述一个或多个通用寄存器读操作访问命令发送给所述目标设备。

步骤306、所述目标设备根据所述一个或多个通用寄存器读操作访问命令进行读操作,获得读数据,并将所述读数据通过配置通道发送给第一工作模块。

步骤307、所述第一工作模块中的第二异步FIFO通过配置通道接收所述读数据,并将所述读数据转换为符合PCIe协议要求的TLP包结构形式和时序;并将转换后的读数据通过所述协议层设备发送到所述对端设备。

所述第一工作模块中的第二异步FIFO将所述读数据转换为符合PCIe协议要求的包结构形式(TLP包)和时序后,就可以通过TLP接口将转换后的读数据发送给所述协议层设备,所述协议层设备将该读数据通过高速串行总线SerDes发送给对端设备,这样就完成了所述对端设备从目标设备读数据的操作。

如果所述第一工作模块中的第二异步FIFO在第一预设时间内(这个第一预设时间可根据实际情况人为配置)未从配置通道上接收到目标设备返回的所述读地址对应的读数据,则表明是配置通道出现故障或目标设备出现故障等,这时一个自检测的过程。此时所述第一工作模块中的第二异步FIFO会自动产生一个无效读数据,并将该无效读数据转换为符合PCIe协议要求的TLP包结构形式和时序后,通过所述协议层设备发送到所述对端设备。所述对端设备接收到该无效读数据后,自主决定是再次进行读操作读该地址对应的数据,还是不再读该地址对应的数据。

如图4所示,为对端设备向目标设备写数据的方法,所述方法中控制器的第二工作模块进行工作,该方法的处理流程包括以下步骤:

步骤401、对端设备产生CPU写操作命令,并将所述CPU写操作命令组成PCIe协议包通过高速串行总线SerDes发送给协议层设备。

组装成的PCIe协议包上设置有工作类型标志位,所述工作类型标志位表示为写操作。

步骤402、协议层设备将所述PCIe协议包转换成TLP包,并通过TLP接口发送给控制器。

该TLP包在PCIe协议中又称存储(memory)写或IO写命令的包。转换成TLP包上设置有工作类型标志位,所述工作类型标志位表示为写操作。

步骤403、控制器将工作类型标志位为写操作的TLP包分配给第二工作模块,所述第二工作模块解析接收到的TLP包,然后将解析出的所述CPU写操作命令转换为一个或多个通用寄存器写操作访问命令。

所述CPU写操作命令中包括写使能,写数据,写初始地址,写数据个数;所述通用寄存器写操作访问命令包括写使能、写地址、所述写地址对应的单个写数据。假设写初始地址为N,写数据个数10,则控制器解析出所述CPU写操作命令后,会将所述CPU写操作命令转换为10个通用寄存器写操作访问命令:(写使能,写地址N,写数据1)、(写使能,写地址N+1,写数据2)……(写使能,写地址N+9,写数据10)。

步骤404、第二工作模块将所述一个或多个通用寄存器写操作访问命令缓存到第三异步FIFO中。

步骤405、所述第二工作模块中的第三异步FIFO将所述一个或多个通用寄存器写操作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个通用寄存器写操作访问命令通过配置通道发送给所述目标设备。

所述第二工作模块中的第三异步FIFO会通过配置通道接口将所述一个或多个通用寄存器写操作访问命令发送给所述目标设备。

步骤406、所述目标设备根据所述一个或多个通用寄存器写操作访问命令进行写操作,并在写操作完成后给第二工作模块发送写操作完成信号。

步骤407、所述第二工作模块接收所述写操作完成信号。

如果所述第二工作模块在第二预设时间内(这个第二预设时间内可根据实际情况人为配置)未从配置通道上接收到目标设备返回的写操作完成信号,则表明是配置通道出现故障或目标设备出现故障等,这时一个自检测的过程。此时所述第二工作模块会自动产生一个写操作完成信号,以便第二工作模块发送下一个写操作命令给目标设备。

如图5所示,为对端设备中存储的报文以DMA读的方式传输到目标设备的方法,本方法中控制器的第二工作模块和第三工作模块进行工作,该方法的处理流程包括以下步骤:

步骤501、对端设备产生CPU写操作命令,并将所述CPU写操作命令组成PCIe协议包通过高速串行总线SerDes发送给协议层设备。

组装成的PCIe协议包上设置有工作类型标志位,所述工作类型标志位表示为写操作。

步骤502、协议层设备将所述PCIe协议包转换成TLP包,并通过TLP接口发送给控制器。

该TLP包在PCIe协议中又称存储(memory)写或IO写命令的包。转换成的TLP包上设置有工作类型标志位,所述工作类型标志位表示为写操作。

步骤503、控制器将工作类型标志位为写操作的TLP包分配给第二工作模 块,所述第二工作模块解析接收到的TLP包获得DMA读操作命令,然后启动所述第三工作模块,将所述DMA读操作命令发送给所述第三工作模块。

所述CPU写操作命令中包括DMA读操作命令,所述DMA读操作命令中包括报文发送指示信息的初始地址和地址空间大小;其中,DMA读操作命令用于指示控制器开启第三工作模块。所述报文发送指示信息的初始地址和地址空间大小用于指示报文发送指示信息在缓存空间中的地址。

步骤504、所述第三工作模块将报文发送指示信息的地址通过协议层设备发送给对端设备。

在传输过程中,控制器将报文发送指示信息的地址组装成TLP包通过TLP接口发送给协议层设备,再由协议层设备将该TLP包转换成PCIe协议包通过高速串行总线发送给对端设备。

所述对端设备中具有报文发送指示信息的缓存空间以及发送报文的缓存空间,所述报文发送指示信息的初始地址和地址空间大小用于指示报文发送指示信息在缓存空间中的地址。启动第三工作模块时,所述第三工作模块首次发送的报文发送指示信息的地址为报文发送指示信息的初始地址。

步骤505、所述对端设备将所述报文发送指示信息的地址中的报文发送指示信息内容,通过协议层设备发送给第三工作模块。

所述对端设备接收到报文发送指示信息的地址后,会在缓存报文发送指示信息的缓存空间中将该地址对应的报文发送指示信息内容发送给第三工作模块。所述报文发送指示信息内容包括报文发送有效指示信息、报文大小和报文初始缓存的地址。

步骤506、在所述报文发送有效指示信息为有效时,第三工作模块将所述报文大小和报文初始缓存地址通过协议层设备发送给对端设备。

报文大小和报文初始缓存的地址可以确定报文的地址;在所述报文发送有效指示信息为有效时表明该地址内有发送报文需要发送,此时控制器将所述报文大小和报文初始缓存的地址通过协议层设备发送给对端设备,在此传输过程中数据形式的转换参考上文描述。

若所述报文发送有效指示信息为无效或不正确时,则所述控制器会反复重复上述过程,直到所述对端设备发送的所述发送指示信息为有效为止。

步骤507、对端设备根据所述报文大小和报文初始缓存地址获取发送报文,并将获取到的发送报文通过协议层设备发送给第三工作模块。

步骤508、第三工作模块将所述发送报文缓存到第四异步FIFO中,经过时序转换、数据位宽转换后,转换为通用包结构形式报文,通过DMA通道发送给目标设备。

报文的通用包结构形式,主要包含了包头(SOP)、包尾(EOP)、包内容(DATA)、包指示符(有效指示符VALID、错误指示符ERROR和最后一拍DATA字节数MOD),以及反压状态(FC)等信息。而所述DATA最小位宽为8比特,还可具有8的整数倍的其他位宽,可以根据目标设备中报文的位宽进行数据位宽转换,转换成合适的数据位宽后再发送给目标设备。

步骤509、所述第三工作模块通过协议层设备向对端设备发送报文发送完成命令,所述报文发送完成命令用于将所述发送报文对应的报文发送有效指示信息更改为无效。

所述第三工作模块将所述发送报文发送给目标设备后,由于对端设备中该发送报文不需要再被发送给目标设备,而该发送报文对应的报文接收有效指示信息还是有效的,此时第三工作模块就需要向对端设备发送报文发送完成命令,该报文发送完成命令用于指示对端设备将所述发送报文对应的报文发送有效指示信息更改为无效。

所述报文发送指示信息的地址是从初始地址开始,按照上述步骤504-509将该初始地址对应的报文发送给目标地址后,所述控制器会将报文发送指示信息的初始地址自动加1,继续进行步骤504-509,完成后再加1,以此循环进行步骤504-509,直至超过了步骤503解析出的报文发送指示信息的初始地址和地址空间大小限定的报文发送指示信息的地址。

如图6所示,为目标设备中的报文以DMA写的方式传输到对端设备的缓存中的方法,本方法中控制器的第二工作模块和第三工作模块进行工作,该方 法的处理流程包括以下步骤:

步骤601、对端设备产生CPU写操作命令,并将所述CPU写操作命令组成PCIe协议包通过高速串行总线SerDes发送给协议层设备。

组装成的PCIe协议包上设置有工作类型标志位,所述工作类型标志位表示为写操作。

步骤602、协议层设备将所述PCIe协议包转换成TLP包,并通过TLP接口发送给控制器。

该TLP包在PCIe协议中又称存储(memory)写或IO写命令的包。转换成的TLP包上设置有工作类型标志位,所述工作类型标志位表示为写操作。

步骤603、控制器将工作类型标志位为写操作的TLP包分配给第二工作模块,所述第二工作模块解析接收到的TLP包获得DMA写操作命令,然后启动所述第四工作模块,将所述DMA写操作命令发送给所述第四工作模块。

所述CPU写操作命令中包括DMA写启动指令,报文接收指示信息的初始地址和地址空间大小;其中,DMA写操作命令用于指示控制器开启第四工作模块。所述报文接收指示信息的初始地址和地址空间大小用于指示报文接收指示信息在缓存空间中的地址。

步骤604、第四工作模块将报文接收指示信息的地址通过协议层设备发送给对端设备。

在传输过程中,第四工作模块将报文接收指示信息的地址组装成TLP包通过TLP接口发送给协议层设备,再由协议层设备将该TLP包转换成PCIe协议包通过高速串行总线发送给对端设备。

所述对端设备中具有报文接收指示信息的缓存空间以及接收报文的缓存空间,所述报文接收指示信息的初始地址和地址空间大小用于指示报文接收指示信息在缓存空间中的地址。启动第四工作模块时,第四工作模块首次发送的报文接收指示信息的地址为报文接收指示信息的初始地址。

步骤605、所述对端设备将所述报文接收指示信息的地址中的报文接收指示信息内容,通过协议层设备发送给第四工作模块。

所述对端设备接收到报文接收指示信息的地址后,会在缓存报文接收指示信息的缓存空间中将该地址对应的报文接收指示信息内容发送给控制器。所述报文接收指示信息内容包括报文接收有效指示信息、接收报文的初始缓存地址。

步骤606、所述第四工作模块的第五异步FIFO将目标设备发送的通用包结构形式的接收报文进行缓存、时序转换和数据位宽转换后,转换为符合PCIe协议要求的TLP包结构形式和时序的报文数据包。

目标设备可以将接收报文通过DMA通道发送给控制器的第四模块,第四工作模块的第五异步FIFO可以将目标设备发送的通用包结构形式的报文进行缓存、时序转换和数据位宽转换后,转换为符合PCIe协议要求的TLP包结构形式和时序的报文数据包。在这里需要说明的是,当第四工作模块的第五异步FIFO中的缓存存满的时,第四工作模块可以通知目标设备不再发送接收报文过来。

步骤607、在所述报文接收有效指示信息为有效时,控制器将所述接收报文的初始缓存地址以及从第五异步FIFO输出的TLP包形式的报文数据包通过协议层设备发送给对端设备。

接收报文的初始缓存地址为对端设备将接收到的报文进行缓存的初始地址;在所述报文接收有效指示信息为有效时表明该地址为空可以缓存接收到的报文,此时第四工作模块将所述接收报文的初始缓存地址以及从第五异步FIFO输出的TLP包形式的报文数据包通过协议层设备发送给对端设备,在此传输过程中数据形式的转换参考上文描述。

若所述报文接收有效指示信息为无效或不正确时,则所述控制器会反复重复上述过程,直到所述对端设备发送的所述接收指示信息为有效。

步骤608、所述对端设备从所述接收报文的初始缓存地址处缓存报文数据包。

步骤609、所述第四工作模块通过协议层设备向对端设备发送报文接收完成命令,所述报文接收完成命令用于所述对端设备将所述报文数据包初始缓存地址对应的报文接收有效指示信息更改为无效。

所述第四工作模块将所述接收报文的报文数据包发送给对端设备后,由于对端设备会将从所述接收报文的初始缓存地址处缓存报文数据包,所述报文数据包初始缓存地址对应的缓存地址处就会被占用,而该地址对应的报文接收有效指示信息还是有效的,此时第四工作模块就需要向对端设备发送报文接收完成命令,该报文接收完成命令用于指示对端设备将所述报文数据包初始缓存地址对应的报文接收有效指示信息更改为无效。

所述报文接收指示信息的地址是从初始地址开始,按照上述步骤604-609将接收到的报文缓存到该初始地址后,所述第四工作模块会将报文接收指示信息的初始地址自动加1,继续进行步骤604-609,完成后再加1,以此循环进行步骤604-609,直至所述报文接收指示信息的地址超出了步骤603解析出的报文接收指示信息的初始地址和地址空间大小限定的报文发送接收信息的地址范围。

本实施例方法中,控制器中两个或两个以上的工作模块可以同时工作,这样基于一条PCIe总线链路,本实施例方法可以实现同时进行CPU读写访问寄存器操作和数据报文的双向传输,从而也大大简化了一个PCIe总线设备或系统,也具有应用灵活多样性的特点;且本实施例方法中,一个所述控制器可以同时支持一个或一个以上所述目标设备,具有非常好的扩展性。数据报文的双向传输以DMA方式进行,且该DMA方式需通过所述CPU写操作来控制其开关使能和确定数据缓存空间大小、数据初始地址。特别是,通过所述报文收发指示信息实现了查询和控制DMA操作,以及实现了数据传输的自查询、自控制、错误或失败重传、所述报文发送指示信息空间的自轮询等特点,并兼具有数据位宽转换、异步时钟域转换、统计等功能;且一个所述控制器可以同时支持一个或一个以上所述目标设备,具有非常好的扩展性。

实施例3

本发明实施例提供了一种基于增强型外设互连PCIe协议总线的数据传输装置,如图7所示,所述装置包括:接收模块701,分配模块702,第一工作模块703、第二工作模块704、第三工作模块705和第四工作模块706,其中,

接收模块701,用于接收对端设备发送的数据包,所述数据包上携带有工 作类型标志位;

分配模块702,用于在所述接收模块701接收到的工作类型标志位表示为读操作时,将所述数据包分配给第一工作模块;

所述第一工作模块703,用于在解析出所述分配模块702分配的数据包获得读操作命令时,将所述读操作命令发送给目标设备,接收目标设备返回的读数据,并将所述读数据发送给所述对端设备;

分配模块702,还用于在所述接收模块701接收到的工作类型标志位表示为写操作时,将所述数据包分配给第二工作模块;

所述第二工作模块704,用于在解析出所述分配模块702分配的所述数据包获得写操作命令时,将所述数据包中的写操作命令发送给目标设备,接收目标设备返回的写操作完成信号;

所述第二工作模块704,还用于在解析所述数据包获得DMA读操作命令时,启动所述第三工作模块705,并将所述DMA读操作命令发送给所述第三工作模块705;

所述第三工作模块705,用于根据所述第二工作模块704发送的所述DMA读操作命令获得所述对端设备中的发送报文,并将所述发送报文发送给目标设备;

所述第二工作模块704,还用于在解析出所述数据包获得DMA写操作命令时,启动所述第四工作模块706,将所述DMA写操作命令发送给所述第四工作模块706;

所述第四工作模块706,还用于根据所述第二工作模块704发送的所述DMA写操作命令将目标设备发送的接收报文,发送给对端设备。

可选的,如图8所示,所述第一工作模块703中包括:第一处理模块7031,第一异步先入先出缓存器FIFO模块7032和第二异步FIFO模块7033;其中,

所述第一处理模块7031,用于解析数据包获得CPU读操作命令,然后将所述CPU读操作命令转换为一个或多个通用寄存器读操作访问命令;其中,所述CPU读操作命令中包括读使能、读初始地址、读数据个数,所述通用寄存器 读操作访问命令包括读使能、读地址;

所述第一处理模块7031,还用于将所述一个或多个通用寄存器读操作访问命令缓存到第一异步先入先出缓存器FIFO模块7032中;

所述第一异步FIFO模块7032,用于将所述第一处理模块7031缓存的一个或多个通用寄存器读操作访问命令的时序转换为符合目标设备的时序;

所述第一处理模块7031,还用于将所述第一异步FIFO模块7032转换后的所述一个或多个通用寄存器读操作访问命令通过配置通道发送给所述目标设备;通用寄存器读操作访问命令用于所述目标设备进行读操作获得读数据;

所述第二异步FIFO,用于通过配置通道接收所述读数据,并将所述读数据转换为符合PCIe协议要求的TLP包结构形式和时序;

所述第一处理模7031,用于将所述第二异步FIFO模块7033转换后的读数据发送给对端设备。

所述第一异步FIFO模块,还用于在第一预设时间内未接收到所述目标设备发送的读数据时,自行生成无效读数据。

可选的,如图9所示,所述第二工作模块704中包括:第二处理模块7041,第三异步FIFO模块7042;其中,

所述第二处理模块7041,用于解析数据包获得CPU写操作命令,然后将所述CPU写操作命令转换为一个或多个通用寄存器写操作访问命令;其中,所述CPU写操作命令中包括写使能、写数据、写初始地址、写数据个数,所述通用寄存器写操作访问命令包括写使能、写地址、所述写地址对应的单个写数据;

所述第二处理模块7041,还用于将所述一个或多个通用寄存器写操作访问命令缓存到第三异步FIFO模块7042中;

所述第三异步FIFO模块7042,用于将所述第二处理模块7041缓存的所述一个或多个通用寄存器写操作访问命令的时序转换为符合目标设备的时序;

所述第二处理模块7041,还用于将所述第三异步FIFO模块7042转换后的所述一个或多个通用寄存器写操作访问命令通过配置通道发送给所述目标设备;通用寄存器写操作访问命令用于所述目标设备在写地址写入所述写地址对应的 单个写数据;

所述第二处理模块7041,还用于通过配置通道接收所述目标设备发送的写操作完成信号。

所述第二处理模块,还用于在第二预设时间内未接收到所述目标设备发送的写操作完成信号时,生成所述写操作完成信号。

可选的,所述DMA读操作命令中包括报文发送指示信息的初始地址和地址空间大小;如图10所示,所述第三工作模块705包括第三处理模块7051和第四异步FIFO模块7052;其中,

第三处理模块7051,用于在第i次时,根据所述DMA读操作命令将报文发送指示信息的地址发送给对端设备;其中,所述报文发送指示信息的地址为报文发送指示信息的初始地址+i-1,i为大于等于1的整数;所述报文发送指示信息的地址不超出所述报文发送指示信息的初始地址和地址空间大小限定的地址范围

第三处理模块7051,还用于接收对端设备发送的所述报文发送指示信息的地址中的报文发送指示信息内容;其中,所述报文发送指示信息内容包括报文发送有效指示信息、报文大小和报文初始缓存的地址;

第三处理模块7051,还用于在所述报文发送有效指示信息为有效时,将所述报文大小和报文初始缓存地址发送给对端设备;

第三处理模块7051,还用于接收所述对端设备发送的所述报文大小和报文初始缓存地址对应的发送报文,并将所述发送报文缓存到第四异步FIFO模块7052中;

所述第四异步FIFO模块7052,用于在将所述第三处理模块7051缓存的发送报文经过时序转换、数据位宽转换后,转换为通用包结构形式报文,通过DMA通道发送给目标设备;

第三处理模块7051,还用于在所述第四异步FIFO模块7052将所述发送报文发送给目标设备后,向对端设备发送报文发送完成命令,所述报文发送完成命令用于所述对端设备将所述发送报文对应的报文发送有效指示信息更改为无 效。

可选的,所述DMA写操作命令中包括报文接收指示信息的初始地址和地址空间大小;如图11所示,所述第四工作模块706包括:第四处理模块7061和第五异步FIFO模块7062,其中,

所述第四处理模块7061,用于在第j次时,根据所述DMA写操作命令将报文接收指示信息的地址发送给对端设备;其中,所述报文接收指示信息的地址为报文接收指示信息的初始地址+j-1,j为大于等于1的整数;所述报文接收指示信息的地址未超出所述报文接收指示信息的初始地址和地址空间大小限定的地址范围;

所述第四处理模块7061,还用于接收对端设备发送的所述报文接收指示信息的地址中的报文接收指示信息内容;其中,所述报文接收指示信息内容包括报文接收有效指示信息、接收报文的初始缓存地址;

所述第五异步FIFO模块7062,用于将目标设备发送的通用包结构形式的接收报文进行缓存、时序转换和数据位宽转换后,转换为符合PCIe协议要求的TLP包结构形式和时序的报文数据包;

所述第四处理模块7061,还用于在所述报文接收有效指示信息为有效时,将所述接收报文的初始缓存地址以及所述第五异步FIFO模块7062输出的报文数据包发送给对端设备;所述接收报文的初始缓存地址用于所述对端设备从所述接收报文的初始缓存地址处缓存报文数据包;

所述第四处理模块7061,还用于向对端设备发送报文接收完成命令,所述报文接收完成命令用于所述对端设备将所述报文数据包初始缓存地址对应的报文接收有效指示信息更改为无效。

在实际应用中,接收模块701,分配模块702,第一工作模块703、第二工作模块704、第三工作模块705和第四工作模块706可以由位于控制器上的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等器件实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计 算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1