太阳城集团

  • / 29
  • 下载费用:30 金币  

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

摘要
申请专利号:

CN201510334406.8

申请日:

2015.06.16

公开号:

CN106257434A

公开日:

2016.12.28

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 13/14申请日:20150616|||公开
IPC分类号: G06F13/14 主分类号: G06F13/14
申请人: 深圳市中兴微电子技术有限公司
发明人: 戴仁林; 娄本刚; 王平
地址: 518085 广东省深圳市盐田区大梅沙1号厂房
优先权:
专利代理机构: 北京派特恩知识产权代理有限公司 11270 代理人: 张颖玲;蒋雅洁
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201510334406.8

授权太阳城集团号:

|||

法律状态太阳城集团日:

2017.01.25|||2016.12.28

法律状态类型:

太阳城集团实质审查的生效|||公开

摘要

太阳城集团本发明实施例公开了一种基于增强型外设互连(PCIe)协议总线的数据传输方法,所述方法应用于控制器,所述控制器中包括第一工作模块、第二工作模块、第三工作模块和第四工作模块,所述方法包括:接收对端设备发送的数据包,根据数据包的内容,由所述第一工作模块处理读操作命令,所述第二工作模块处理写操作命令;所述第三工作模块处理直接存储访问(DMA)读操作命令;所述第四工作模块处理DMA写操作命令。

权利要求书

1.一种基于增强型外设互连PCIe协议总线的数据传输方法,其特征在于,
所述方法应用于控制器,所述控制器中包括第一工作模块、第二工作模块、第
三工作模块和第四工作模块,所述方法包括:
接收对端设备发送的数据包,所述数据包上携带有工作类型标志位;
在工作类型标志位表示为读操作时,将所述数据包分配给第一工作模块,
所述第一工作模块解析所述数据包获得读操作命令,将所述读操作命令发送给
目标设备,接收目标设备返回的读数据,并将所述读数据发送给所述对端设备;
在工作类型标志位表示为写操作时,将所述数据包分配给第二工作模块,
所述第二工作模块解析所述数据包获得写操作命令时,将所述数据包中的写操
作命令发送给目标设备,接收目标设备返回的写操作完成信号;
所述第二工作模块解析所述数据包获得直接存储访问DMA读操作命令时,
启动所述第三工作模块,将所述DMA读操作命令发送给所述第三工作模块,
所述第三工作模块根据所述DMA读操作命令获得所述对端设备中的发送报文,
将所述发送报文发送给目标设备;
所述第二工作模块解析所述数据包获得DMA写操作命令时,启动所述第
四工作模块,将所述DMA写操作命令发送给所述第四工作模块,所述第四工
作模块根据所述DMA写操作命令将目标设备发送的接收报文,发送给对端设
备。
2.根据权利要求1所述的方法,其特征在于,所述第一工作模块解析所述
数据包获得读操作命令,将所述读操作命令发送给目标设备,接收目标设备返
回的读数据,并将所述读数据发送给所述对端设备,包括:
所述第一工作模块解析数据包获得CPU读操作命令,然后将所述CPU读
操作命令转换为一个或多个通用寄存器读操作访问命令;其中,所述CPU读操
作命令中包括读使能、读初始地址、读数据个数,所述通用寄存器读操作访问
命令包括读使能、读地址;
第一工作模块将所述一个或多个通用寄存器读操作访问命令缓存到第一异
步先入先出缓存器FIFO中;
所述第一工作模块中的第一异步FIFO将所述一个或多个通用寄存器读操
作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个
通用寄存器读操作访问命令通过配置通道发送给所述目标设备;通用寄存器读
操作访问命令用于所述目标设备进行读操作获得读数据;
所述第一工作模块中的第二异步FIFO通过配置通道接收所述读数据,并
将所述读数据转换为符合PCIe协议要求的TLP包结构形式和时序;并将转换
后的读数据发送给对端设备。
3.根据权利要求2所述的方法,其特征在于,所述第一工作模块的第二异
步FIFO在第一预设太阳城集团内未接收到所述目标设备发送的读数据时,自行生成
无效读数据。
4.根据权利要求1所述的方法,其特征在于,所述第二工作模块解析所述
数据包获得写操作命令时,将所述数据包中的写操作命令发送给目标设备,接
收目标设备返回的写操作完成信号,包括:
所述第二工作模块解析数据包获得CPU写操作命令,然后将所述CPU写
操作命令转换为一个或多个通用寄存器写操作访问命令;其中,所述CPU写操
作命令中包括写使能、写数据、写初始地址、写数据个数,所述通用寄存器写
操作访问命令包括写使能、写地址、所述写地址对应的单个写数据;
第二工作模块将所述一个或多个通用寄存器写操作访问命令缓存到第三异
步FIFO中;
所述第二工作模块中的第三异步FIFO将所述一个或多个通用寄存器写操
作访问命令的时序转换为符合目标设备的时序,并在转换后将所述一个或多个
通用寄存器写操作访问命令通过配置通道发送给所述目标设备;通用寄存器写
操作访问命令用于所述目标设备在写地址写入所述写地址对应的单个写数据;
所述第二工作模块通过配置通道接收所述目标设备发送的写操作完成信号。
5.根据权利要求4所述的方法,其特征在于,所述第二工作模块在第二预
设太阳城集团内未接收到所述目标设备发送的写操作完成信号时,所述第二工作模块
自行生成所述写操作完成信号。
6.根据权利要求1所述的方法,其特征在于,所述DMA读操作命令中包
括报文发送指示太阳城集团的初始地址和地址空间大小;所述第三工作模块根据所述
DMA读操作命令获得所述对端设备中的发送报文,将所述发送报文发送给目标
设备,包括:
在第i次时,所述第三工作模块根据所述DMA读操作命令将报文发送指
示太阳城集团的地址发送给对端设备;其中,所述报文发送指示太阳城集团的地址为报文发
送指示太阳城集团的初始地址+i-1,i为大于等于1的整数;
所述第三工作模块接收对端设备发送的所述报文发送指示太阳城集团的地址中的
报文发送指示太阳城集团内容;其中,所述报文发送指示太阳城集团内容包括报文发送有效
指示太阳城集团、报文大小和报文初始缓存的地址;
所述第三工作模块在所述报文发送有效指示太阳城集团为有效时,将所述报文大
小和报文初始缓存地址发送给对端设备;
所述第三工作模块接收所述对端设备发送的所述报文大小和报文初始缓存
地址对应的发送报文;
所述第三工作模块将所述发送报文缓存到第四异步FIFO中,经过时序转
换、数据位宽转换后,转换为通用包结构形式报文,通过DMA通道发送给目
标设备;
所述第三工作模块向对端设备发送报文发送完成命令,所述报文发送完成
命令用于所述对端设备将所述发送报文对应的报文发送有效指示太阳城集团更改为无
效;
依次循环进行上述步骤,直至所述报文发送指示太阳城集团的地址超出所述报文
发送指示太阳城集团的初始地址和地址空间大小限定的地址范围。
7.根据权利要求1所述的方法,其特征在于,所述DMA写操作命令中包
括报文接收指示太阳城集团的初始地址和地址空间大小;所述第四工作模块根据所述
DMA写操作命令将目标设备发送的接收报文,发送给对端设备,包括:
在第j次时,所述第四工作模块根据所述DMA写操作命令将报文接收指
示太阳城集团的地址发送给对端设备;其中,所述报文接收指示太阳城集团的地址为报文接
收指示太阳城集团的初始地址+j-1,j为大于等于1的整数;
所述第四工作模块接收对端设备发送的所述报文接收指示太阳城集团的地址中的
报文接收指示太阳城集团内容;其中,所述报文接收指示太阳城集团内容包括报文接收有效
指示太阳城集团、接收报文的初始缓存地址;
所述第四工作模块的第五异步FIFO将目标设备发送的通用包结构形式的
接收报文进行缓存、时序转换和数据位宽转换后,转换为符合PCIe协议要求的
TLP包结构形式和时序的报文数据包;
在所述报文接收有效指示太阳城集团为有效时,所述第四工作模块将所述接收报
文的初始缓存地址以及从第五异步FIFO输出的报文数据包发送给对端设备;
所述接收报文的初始缓存地址用于所述对端设备从所述接收报文的初始缓存地
址处缓存报文数据包;
所述第四工作模块对端设备发送报文接收完成命令,所述报文接收完成命
令用于所述对端设备将所述报文数据包初始缓存地址对应的报文接收有效指示
太阳城集团更改为无效;
依次循环进行上述步骤,直至所述报文接收指示太阳城集团的地址超出所述报文
接收指示太阳城集团的初始地址和地址空间大小限定的地址范围。
8.一种基于增强型外设互连PCIe协议总线的数据传输装置,其特征在于,
所述装置包括:接收模块,分配模块,第一工作模块、第二工作模块、第三工
作模块和第四工作模块,其中,
接收模块,用于接收对端设备发送的数据包,所述数据包上携带有工作类
型标志位;
分配模块,用于在所述接收模块接收到的工作类型标志位表示为读操作时,
将所述数据包分配给第一工作模块;
所述第一工作模块,用于在解析出所述分配模块分配的数据包获得读操作
命令时,将所述读操作命令发送给目标设备,接收目标设备返回的读数据,并
将所述读数据发送给所述对端设备;
分配模块,还用于在所述接收模块接收到的工作类型标志位表示为写操作
时,将所述数据包分配给第二工作模块;
所述第二工作模块,用于在解析出所述分配模块分配的所述数据包获得写
操作命令时,将所述数据包中的写操作命令发送给目标设备,接收目标设备返
回的写操作完成信号;
所述第二工作模块,还用于在解析所述数据包获得直接存储访问DMA读
操作命令时,启动所述第三工作模块,并将所述DMA读操作命令发送给所述
第三工作模块;
所述第三工作模块,用于根据所述第二工作模块发送的所述DMA读操作
命令获得所述对端设备中的发送报文,并将所述发送报文发送给目标设备;
所述第二工作模块,还用于在解析出所述数据包获得DMA写操作命令时,
启动所述第四工作模块,将所述DMA写操作命令发送给所述第四工作模块;
所述第四工作模块,用于根据所述第二工作模块发送的所述DMA写操作
命令将目标设备发送的接收报文,发送给对端设备。
9.根据权利要求8所述的装置,其特征在于,所述第一工作模块中包括:
第一处理模块,第一异步先入先出缓存器FIFO模块和第二异步FIFO模块;其
中,
所述第一处理模块,用于解析数据包获得CPU读操作命令,然后将所述
CPU读操作命令转换为一个或多个通用寄存器读操作访问命令;其中,所述
CPU读操作命令中包括读使能、读初始地址、读数据个数,所述通用寄存器读
操作访问命令包括读使能、读地址;
所述第一处理模块,还用于将所述一个或多个通用寄存器读操作访问命令
缓存到第一异步先入先出缓存器FIFO模块中;
所述第一异步FIFO模块,用于将所述第一处理模块缓存的一个或多个通
用寄存器读操作访问命令的时序转换为符合目标设备的时序,并在转换后将所
述一个或多个通用寄存器读操作访问命令通过配置通道发送给所述目标设备;
通用寄存器读操作访问命令用于所述目标设备进行读操作获得读数据;
所述第二异步FIFO模块,用于通过配置通道接收所述读数据,并将所述
读数据转换为符合PCIe协议要求的TLP包结构形式和时序;并将转换后的读
数据发送给对端设备。
10.根据权利要求9所述的装置,其特征在于,所述第一异步FIFO模块,
还用于在第一预设太阳城集团内未接收到所述目标设备发送的读数据时,自行生成无
效读数据。
11.根据权利要求8所述的装置,其特征在于,所述第二工作模块中包括:
第二处理模块,第三异步FIFO模块;其中,
所述第二处理模块,用于解析数据包获得CPU写操作命令,然后将所述
CPU写操作命令转换为一个或多个通用寄存器写操作访问命令;其中,所述
CPU写操作命令中包括写使能、写数据、写初始地址、写数据个数,所述通用
寄存器写操作访问命令包括写使能、写地址、所述写地址对应的单个写数据;
所述第二处理模块,还用于将所述一个或多个通用寄存器写操作访问命令
缓存到第三异步FIFO模块中;
所述第三异步FIFO模块,用于将所述第二处理模块缓存的所述一个或多
个通用寄存器写操作访问命令的时序转换为符合目标设备的时序,并在转换后
将所述一个或多个通用寄存器写操作访问命令通过配置通道发送给所述目标设
备;通用寄存器写操作访问命令用于所述目标设备在写地址写入所述写地址对
应的单个写数据;
所述第二处理模块,还用于通过配置通道接收所述目标设备发送的写操作
完成信号。
12.根据权利要求11所述的装置,其特征在于,所述第二处理模块,还用
于在第二预设太阳城集团内未接收到所述目标设备发送的写操作完成信号时,生成所
述写操作完成信号。
13.根据权利要求8所述的装置,其特征在于,所述DMA读操作命令中
包括报文发送指示太阳城集团的初始地址和地址空间大小;所述第三工作模块包括第
三处理模块和第四异步FIFO模块;其中,
第三处理模块,用于在第i次时,根据所述DMA读操作命令将报文发送
指示太阳城集团的地址发送给对端设备;其中,所述报文发送指示太阳城集团的地址为报文
发送指示太阳城集团的初始地址+i-1,i为大于等于1的整数;所述报文发送指示太阳城集团
的地址不超出所述报文发送指示太阳城集团的初始地址和地址空间大小限定的地址范

第三处理模块,还用于接收对端设备发送的所述报文发送指示太阳城集团的地址
中的报文发送指示太阳城集团内容;其中,所述报文发送指示太阳城集团内容包括报文发送
有效指示太阳城集团、报文大小和报文初始缓存的地址;
第三处理模块,还用于在所述报文发送有效指示太阳城集团为有效时,将所述报
文大小和报文初始缓存地址发送给对端设备;
第三处理模块,还用于接收所述对端设备发送的所述报文大小和报文初始
缓存地址对应的发送报文,并将所述发送报文缓存到第四异步FIFO模块中
所述第四异步FIFO模块,用于在将所述第三处理模块缓存的发送报文经
过时序转换、数据位宽转换后,转换为通用包结构形式报文,通过DMA通道
发送给目标设备;
第三处理模块,还用于在所述第四异步FIFO模块将所述发送报文发送给
目标设备后,向对端设备发送报文发送完成命令,所述报文发送完成命令用于
所述对端设备将所述发送报文对应的报文发送有效指示太阳城集团更改为无效。
14.根据权利要求8所述的装置,其特征在于,所述DMA写操作命令中
包括报文接收指示太阳城集团的初始地址和地址空间大小;所述第四工作模块包括:
第四处理模块和第五异步FIFO模块,其中,
所述第四处理模块,用于在第j次时,根据所述DMA写操作命令将报文
接收指示太阳城集团的地址发送给对端设备;其中,所述报文接收指示太阳城集团的地址为
报文接收指示太阳城集团的初始地址+j-1,j为大于等于1的整数;所述报文接收指示
太阳城集团的地址未超出所述报文接收指示太阳城集团的初始地址和地址空间大小限定的地
址范围;
所述第四处理模块,还用于接收对端设备发送的所述报文接收指示太阳城集团的
地址中的报文接收指示太阳城集团内容;其中,所述报文接收指示太阳城集团内容包括报文
接收有效指示太阳城集团、接收报文的初始缓存地址;
所述第五异步FIFO模块,用于将目标设备发送的通用包结构形式的接收
报文进行缓存、时序转换和数据位宽转换后,转换为符合PCIe协议要求的TLP
包结构形式和时序的报文数据包;
所述第四处理模块,还用于在所述报文接收有效指示太阳城集团为有效时,将所
述接收报文的初始缓存地址以及所述第五异步FIFO模块输出的报文数据包发
送给对端设备;所述接收报文的初始缓存地址用于所述对端设备从所述接收报
文的初始缓存地址处缓存报文数据包;
所述第四处理模块,还用于向对端设备发送报文接收完成命令,所述报文
接收完成命令用于所述对端设备将所述报文数据包初始缓存地址对应的报文接
收有效指示太阳城集团更改为无效。

说明书

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

技术领域

本发明涉及数据传输领域,尤其涉及一种基于增强型外设互连(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)等器件实现。

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

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

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

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

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

关 键 词:
一种 基于 增强 外设 互连 协议 总线 数据传输 方法 装置
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:一种基于增强型外设互连协议总线的数据传输方法及装置.pdf
链接地址:http://zh228.com/p-6100770.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');