CN115658574A - 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 - Google Patents
一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 Download PDFInfo
- Publication number
- CN115658574A CN115658574A CN202211327723.3A CN202211327723A CN115658574A CN 115658574 A CN115658574 A CN 115658574A CN 202211327723 A CN202211327723 A CN 202211327723A CN 115658574 A CN115658574 A CN 115658574A
- Authority
- CN
- China
- Prior art keywords
- pcie
- srio
- bit
- fpga
- register
- 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.)
- Pending
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本申请涉及一种基于FPGA实现PCIE与SRIO相互转换方法及现场可编程门阵列,方法包括响应于获取到的配置要求,对FPGA中的转换寄存器进行配置;对接收到的PCIE的TLP帧头进行解析;当解析的地址在所配置的8个PCIE窗口内时,根据配置的寄存器SRIO业务类型、SRIO起始地址、SRIO目的ID、解析出的PCIE业务类型、解析出的PCIE payload数据量大小,组成相应的SRIOHELLO包头;将接收到的PCIE的8byte或者16byte对齐的payload转换成SRIO的8byte对齐的payload。本申请公开的基于FPGA实现PCIE与SRIO相互转换方法及现场可编程门阵列,使用FPGA平台实现PCIE和SRIO协议相互转化,提升了协议转化可编程性与通用性,同时缩短了相较于芯片开发、流片的开发周期。
Description
技术领域
本申请涉及电子通信技术领域,尤其是涉及一种基于FPGA实现PCIE与SRIO相互转换方法及现场可编程门阵列。
背景技术
SRIO相对于PCIE具有效率更高和数据传输速度更快等优势,另外,国产CPU对外提供的高速总线接口多为PCIE接口,在实际的工程项目应用中还需要使用SRIO等高速总线,目前国内使用较多的是PCIE转SRIO桥片Tsi721。随着国内各个电子行业国产化的推进,PCIE转SRIO的相关技术替代也开始稳步推进。
由于国内研发PCI Express(PCIE)与Serial SRIO(SRIO)两个接口相互转化的技术起步较晚、技术积累不够成熟,目前还没有成熟可用自主研发的PCIE转SRIO的芯片,为了快速解决此技术的壁垒,研究一种新型的替代方案尤为重要。
发明内容
本申请提供一种基于FPGA实现PCIE与SRIO相互转换方法及现场可编程门阵列,使用FPGA平台实现PCIE和SRIO协议相互转化,提升了协议转化可编程性与通用性,同时缩短了相较于芯片开发、流片的开发周期。
本申请的上述目的是通过以下技术方案得以实现的:
第一方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括SRIO的34bit起始地址、SRIO的8bit或者16bit的目的ID、PCIE的8个窗起始地址,PCIE的8个窗的大小;
FPGA对接收到的PCIE的TLP帧头进行解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
当解析出的地址在所配置的8个PCIE窗口内时,并且解析出的PCIE业务类型为MWr时,根据配置的寄存器SRIO 34bit起始地址、SRIO目的ID,以及解析出的PCIE payload数据量大小,组成SRIO业务类型为NWRITE的HELLO包头;
将接收到的PCIE的8byte或者16byte对齐的payload转换成SRIO的8byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转进程。
第二方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括SRIO的34bit起始地址、SRIO的8bit或者16bit的目的ID、PCIE的8个窗起始地址、PCIE的8个窗的大小;
FPGA对接收到的PCIE的TLP帧头解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、32bit或者64bit的地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
当解析出的地址在所配置的8个PCIE窗口内时,并且解析出的PCIE业务类型为MRd时,根据配置的寄存器SRIO 34bit起始地址、SRIO的8bit或者16bit目的ID,以及解析出的PCIE payload数据量大小,组成SRIO业务类型为NREAD的HELLO包头并发出,NREAD的HELLO包只有包头而没有payload;
FPGA接收SRIONREAD的回复包,将其回复的8byte对齐的paylaod,转换成PCIE的CPLD的8byte或者16byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
第三方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括DOORBELL的16bit info、SRIO的8bit或者16bit的目的ID、DOORBELL的发送使能;
FPGA接收到DOORBELL的发送使能后,根据16bit的info、8bit或者16bit的目的ID、8bit或者16bit的源ID组成SRIO的业务类型为DOORBELL的HELLO包,并发送;
FPGA接收到SRIO的DOORBELL回复包,根据回复包头的业务类型、srcID判断回复是否正确;
FPGA接收到DOORBELL回复包并且判断出是否正确后,将判断的结果写进DOORBELL回复寄存器,同时启动PCIE的MSI中断,告知CPU完成了当前的DOORBELL操作,CPU读取DOORBELL回复寄存器,结束当前DOORBELL传输过程。
第四方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括MESSAGE的2bit ltr、MESSAGE的6bit的mailbox、SRIO的8bit或者16bit的目的ID、MESSAGE的发送使能、PCIE的8个窗起始地址、PCIE的8个窗大小;
FPGA接收PCIE的TLP帧头并且解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、32bit或者64bit的地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
当解析出的PCIE地址在所配置的8个PCIE窗口内时,并且MESSAGE的发送使能为高时,根据配置的寄存器MESSAGE的2bit ltr、MESSAGE的6bit的mailbox、SRIO的8bit或者16bit的目的ID,以及解析出的PCIE payload数据量大小,组成SRIO业务类型为MESSAGE的HELLO包头;
组完包头后,将接收到的PCIE的8byte或者16byte对齐的payload转换成SRIO的8byte对齐的payload,完成MWr到MESSAGE的转化。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换的进程。
FPGA接收到SRIO的MESSAGE回复包,根据回复包头的业务类型、msgseg判断回复是否正确;
判断完毕后将判断的结果写进MESSAGE回复寄存器,FPGA启动PCIE的MSI中断,告知CPU已经完成了当前的MESSAGE操作,CPU读取MESSAGE回复寄存器,完成一个MESSAGE传输操作。
第五方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括PCIE的32bit或者64bit起始地址、SRIO的8个的窗起始地址、SRIO的8个窗大小;
FPGA接收SRIO的HELLO包并解析,解析出包头中的8bit数据大小size、8bit业务类型、34bit的地址、8bit或者16bit源ID、8bit或者16bit目的ID;
当解析出的SRIO地址在所配置的8个SRIO窗口内时,并且解析出的SRIO业务类型为NWRITE时,根据寄存器配置的PCIE的32bit或者64bit地址,以及解析出的SRIO包头的数据包长度size,组成PCIE的MWr的TLP包头;TLP包头采用3DW还是4DW,根据配置的PCIE地址寄存器决定。
FPGA将接收到的SRIO的8byte对齐的payload转换成PCIE的8byte或者16byte对齐的payload,完成NWRITE到MWr转化。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
同时,FPGA将解析出来的SRIO的源ID和目的ID写进寄存中,待CPU来读取。
第六方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,包括PCIE的32bit或者64bit起始地址、SRIO的8个的窗起始地址、SRIO的8个窗大小;
FPGA接收SRIO的HELLO包并解析,解析出包头中的8bit数据大小size、8bit业务类型、34bit的地址、8bit或者16bit源ID、8bit或者16bit目的ID;
当解析出的SRIO地址在所配置的8个SRIO窗口内时,并且解析出的SRIO业务类型为NREAD时,根据寄存器配置的PCIE的地址,以及解析出的SRIO的数据大小size,组PCIE的MRd的TLP包头并且发出;TLP包头采用3DW还是4DW,根据配置的PCIE地址寄存器决定。
FPGA接收PCIE的MRd回复的CPLD包,将接收到的PCIE的CPLD的8byte或者16byte对齐的payload转化成SRIO的NREAD8byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
同时,FPGA将解析出来的SRIO的源ID和目的ID写进寄存中,待CPU来读取。
第七方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
FPGA接收SRIO的HELLO包,并且解析其包头中的16bit的info、4bit业务类型、8bit或者16bit的源ID、8bit或者16bit的目的ID,并把将解析出来的16bit info、8bit或者16bit源ID、8bit或者16bit目的ID写进寄存器中;
FPGA产生回复DOORBELL的回复包;
FPGA通过PCIE发送MSI中断,告知CPU来读取DOORBELL信息,CPU接收到PCIE的MSI中断后,读取16bit info、8bit或者16bit源ID、8bit或者16bit目的ID寄存器,CPU读取完毕上述寄存器后通过写寄存器方式告知FPGA完成当前DOORBELL传输操作;
FPGA接收到CPU完成标志后,退出当前DOORBELL操作,进入下一个业务操作。
第八方面,本申请提供了一种基于FPGA实现PCIE与SRIO相互转换方法,包括:
配置FPGA中的转换寄存器,包括PCIE的32bit或者64bit起始地址;
FPGA接收SRIO的HELLO包并解析其包头中的4bit msglen、4bit msgseg、4bit业务类型、2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID;并将解析出来的2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID写进寄存器中,待CPU来读取。
FPGA判断SRIO的业务类型为MESSAGE后,根据配置的寄存器PCIE地址,以及解析出的SRIO包头的数据包长度size,组成PCIE的MWr的TLP包头;
FPGA将接收到的SRIO的8byte对齐的payload转换成PCIE的8byte或者16byte对齐的payload,完成MESSAGE到MWr转化;Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
FPGA发送完所有的msglen*size数据后,产生PCIE的MSI中断,告知CPU当前MESSAGE转换完成,CPU来读取2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID寄存器,CPU读取完毕后,通过寄存方式告知FPGA,当前操作完成。FPGA接收到CPU的完成通知后,退出当前操作,进入下一个业务类型操作;
其中,FPGA每接收完一个MESSAGE包后,均需要产生一个不携带payload的MESSAGE回复包。
第九方面,本申请提供了一种现场可编程门阵列,包括:
一个或多个存储器,用于存储指令;
一个或多个转换寄存器,用于配置;以及
一个或多个处理器,用于从所述存储器中调用并运行所述指令,执行如第一方面至第八方面中所述的方法。
附图说明
图1是本申请提供的一种PCIe互联架构的示意图。
图2是本申请提供的一种SRIO互联架构的示意图。
图3是本申请提供的一种多个DSP设备通过网络互联的示意图。
图4是本申请提供的一种多个DSP设备可以通过RapidIO实现任意互联通讯的示意图。
图5是本申请提供的一种基于FPGA实现MWr转NWRITE的原理框图。
图6是本申请提供的一种基于FPGA实现MRd转NREAD的原理框图。
图7是本申请提供的一种基于FPGA实现PCIE发送DOORBELL给SRIO的原理框图。
图8是本申请提供的一种基于FPGA实现MWr转MESSAGE的原理框图。
图9是本申请提供的一种基于FPGA实现NWRITE转MWr的原理框图。
图10是本申请提供的一种基于FPGA实现NREAD转MRd的原理框图。
图11是本申请提供的一种基于FPGA实现SRIO发送DOORBELL给PCIE的原理框图。
图12是本申请提供的一种基于FPGA实现MESSAGE转MWr的原理框图。
具体实施方式
为了更加清楚的理解本申请中的技术方案,首先对本申请涉及到的技术进行介绍。
FPGA器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。FPGA器件既可实现组合逻辑功能又可实现时序逻辑功能,还允许无限次的编程。
请参阅图1,PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,典型的PCIe结构定义了一个以单个中央处理器为核心的计算机系统,比如我们常见的工控机、PXIe机箱控制器、服务器内的IO设备。从系统架构来看,这个结构的优势在于可有统一的软件驱动,软件模型,设备间具备优异的兼容性。
请参阅图2,SRIO定义了一种高性能、分组交换互连技术,用于在微处理器、DSP、通信和网络处理器、系统内存和外围设备之间传递数据和控制信息。SRIO适用于点对点的设备间通讯,不需要经过一个中央处理器进行调度,就可以完成设备间的通讯,并且包长度简单,效率相对于PCIe要更高,有效数据传输速度更快。
SRIO由于比PCIe更简单、更高效、延迟更低等特点,已经在嵌入式领域、图像处理、通讯系统、军工航天有了大量的应用。
请参阅图3和图4,以医学影像处理领域为例,经常需要扩展单块DSP、FPGA的计算能力,这时候需要将多个DSP或者FPGA通过高速串口进行互联,此时SRIO就是当前互换性最好的一个最佳选择,因为PCIe太过复杂,Xilinx的Auraro效率也不满足要求,并且互换性不好。
本申请公开的基于FPGA实现PCIE与SRIO相互转换方法,将PCIE和SRIO底层协议IP集成至FPGA中,来实现PCIE与SRIO的相互转换。FPGA实现PCIE和SRTIO相互转换的核心原则是,转化之前需要通过寄存器方式提前告知FPGA需要转换的PCIE或者SRIO业务类型、PCIE的地址、SRIO的地址、SRIO目的ID、SRIO源ID,
确定这些转化信息后,再进行payload的转化。
寄存器配置一般使用PCIE的BAR0或者SPI或者I2C等来实现。
当实现PCIE转化成SRIO时,需要通过寄存器的方式提前告知FPGA需要转换的SRIO业务类型、SRIO起始地址、SRIO目的ID,SRIO的源ID可通过FPGA的SRIO IP确定;
在确定SRIO的业务类型、地址、目的ID、源ID、当前包的数据量后,FPGA即唯一确定SRIO的HELLO包头,FPGA组完SRIO包头后将接收到PCIE的payload转换成SRIO 8byte对齐的payload,这样即完成了PCIE到SRIO的转换。
由于SRIO一个HELLO包最多传输256byte的payload,如果PCIE的payload超过256byte,FPGA则需要分多个SRIO包发出。当实现SRIO转PCIE时,也需要通过寄存器的方式提前告知FPGA需要转换的PCIE业务类型、PCIE起始地址、TLP的帧头类型、TLP的包长;在确定这些转换信息后FPGA即可唯一确定PCIE的TLP包头,组好PCIE的TLP包头后,FPGA将接收到的SRIO的payload转换成PCIE的8byte或者16byte对齐的payload,这样即完成SRIO到PCIE的转换。
PCIE一个TLP包理论上最多可传输4096byte的payload,但是由于PCIE对端所连接的器件不同如FT1500或者FT2000,PCIE一包能够传输最大的payload也不同,一般为128byte或者256byte,而SRIO的payload最多为256byte,因此FPGA需要根据SRIO一个包数据量大小判断是否需要分多个PCIE包发出。
以下结合附图,对本申请中的技术方案作进一步详细说明。
本申请公开的PCIE转SRIO包括MWr转NWRITE、MRd转NREAD、PCIE发送DOORBELL给SRIO、MWR转MESSAGE。
请参阅图5,为本申请公开的MWr转成NWRITE步骤:
S101,响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括SRIO的34bit起始地址、SRIO的8bit或者16bit的目的ID、PCIE的8个窗起始地址,PCIE的8个窗的大小;
S102,FPGA对接收到的PCIE的TLP帧头进行解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
S103,当解析出的地址在所配置的8个PCIE窗口内时,并且解析出的PCIE业务类型为MWr时,根据配置的寄存器SRIO 34bit起始地址、SRIO目的ID,以及解析出的PCIEpayload数据量大小,组成SRIO业务类型为NWRITE的HELLO包头;
S104,将接收到的PCIE的8byte或者16byte对齐的payload转换成SRIO的8byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转进程。
在步骤S103中,根据PCIE payload数据量大小判断SRIO是否需要分为多包发送,SRIO一包最多发送256byte的payload。
在步骤S104中,payload的转换采用FIFO和状态机配合,先将PCIE的payload缓存在FIFO中,再用状态机控制FIFO的读,将读出的数据转换成SRIO8byte对齐的payload。
请参阅图6,为本申请公开的MWr转成NREAD步骤:
S201,响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括SRIO的34bit起始地址、SRIO的8bit或者16bit的目的ID、PCIE的8个窗起始地址、PCIE的8个窗的大小;
S202,FPGA对接收到的PCIE的TLP帧头解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、32bit或者64bit的地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
S203,当解析出的地址在所配置的8个PCIE窗口内时,并且解析出的PCIE业务类型为MRd时,根据配置的寄存器SRIO 34bit起始地址、SRIO的8bit或者16bit目的ID,以及解析出的PCIE payload数据量大小,组成SRIO业务类型为NREAD的HELLO包头并发出,NREAD的HELLO包只有包头而没有payload;
S204,FPGA接收SRIO NREAD的回复包,将其回复的8byte对齐的paylaod,转换成PCIE的CPLD的8byte或者16byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
在步骤S203中,根据PCIE payload数据量大小判断SRIO是否需要分为多包发送,SRIO一包最多发送256byte的payload。
在步骤S204中,payload的转换采用FIFO和状态机配合,先将PCIE的payload缓存在FIFO中,再用状态机控制FIFO的读,将读出的数据转换成SRIO8byte对齐的payload。
请参阅图7,为本申请公开的PCIE发送DOORBELL步骤:
S301,响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括DOORBELL的16bit info、SRIO的8bit或者16bit的目的ID、DOORBELL的发送使能;
S302,FPGA接收到DOORBELL的发送使能后,根据16bit的info、8bit或者16bit的目的ID、8bit或者16bit的源ID组成SRIO的业务类型为DOORBELL的HELLO包,并发送;
S303,FPGA接收到SRIO的DOORBELL回复包,根据回复包头的业务类型、srcID判断回复是否正确;
S304,FPGA接收到DOORBELL回复包并且判断出是否正确后,将判断的结果写进DOORBELL回复寄存器,同时启动PCIE的MSI中断,告知CPU完成了当前的DOORBELL操作,CPU读取DOORBELL回复寄存器,结束当前DOORBELL传输过程。
请参阅图8,为本申请公开的MWr转MESSAGE步骤:
S401,响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括MESSAGE的2bit ltr、MESSAGE的6bit的mailbox、SRIO的8bit或者16bit的目的ID、MESSAGE的发送使能、PCIE的的8个窗起始地址、PCIE的的8个窗大小;
S402,FPGA接收PCIE的TLP帧头并且解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、32bit或者64bit的地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
S403,当解析出的PCIE地址在所配置的8个PCIE窗口内时,并且MESSAGE的发送使能为高时,根据配置的寄存器MESSAGE的2bit ltr、MESSAGE的6bit的mailbox、SRIO的8bit或者16bit的目的ID、发送使能,以及解析出的PCIE payload数据量大小,组成SRIO业务类型为MESSAGE的HELLO包头;
S404,组完包头后,将接收到的PCIE的8byte或者16byte对齐的payload转换成SRIO的8byte对齐的payload,完成MWr到MESSAGE的转化。;Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换的进程。
S405,FPGA接收到SRIO的MESSAGE回复包,根据回复包头的业务类型、msgseg判断回复是否正确;回复正确时,判断完毕后将判断的结果写进MESSAGE回复寄存器,同时FPGA启动PCIE的MSI中断,告知CPU已经操作完完成了当前的MESSAGE操作,CPU读取MESSAGE回复寄存器,完成一个MESSAGE完整传输操作。
请参阅图9,为本申请公开的NWRITE转MWr步骤:
S501,响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括PCIE的32bit或者64bit起始地址、SRIO的8个的窗起始地址、SRIO的8个窗大小;
S502,FPGA接收SRIO的HELLO包并解析,解析出包头中的8bit数据大小size、8bit业务类型、34bit的地址、8bit或者16bit源ID、8bit或者16bit目的ID;
S503,当解析出的SRIO地址在所配置的8个SRIO窗口内时,并且解析出的SRIO业务类型为NWRITE时,根据寄存器配置的PCIE的32bit或者64bit地址,以及解析出的SRIO包头的数据包长度size,组成PCIE的MWr的TLP包头;TLP包头采用3DW还是4DW,根据配置的PCIE地址寄存器决定。
S504,FPGA将接收到的SRIO的8byte对齐的payload转换成PCIE的8byte或者16byte对齐的payload,完成NWRITE到MWr转化。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
同时,FPGA将解析出来的SRIO的源ID和目的ID写进寄存中,待CPU来读取。
请参阅图10,为本申请公开的NREAD转MRd步骤:
S601,响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,包括PCIE的32bit或者64bit起始地址、SRIO的8个的窗起始地址、SRIO的8个窗大小;
S602,FPGA接收SRIO的HELLO包并解析,解析出包头中的8bit数据大小size、8bit业务类型、34bit的地址、8bit或者16bit源ID、8bit或者16bit目的ID;
S603,接收SRIO的HELLO包并解析,并且解析其包头中的数据大小size、业务类型、34bit的地址、源ID和目的ID;
S604,当解析出的SRIO地址在所配置的8个SRIO窗口内时,并且解析出的SRIO业务类型为NREAD时,根据寄存器配置的PCIE的地址,以及解析出的SRIO的数据大小size,组PCIE的MRd的TLP包头并且发出;TLP包头采用3DW还是4DW,根据配置的PCIE地址寄存器决定。
FPGA接收PCIE的MRd回复的CPLD包,将接收到的PCIE的CPLD的8byte或者16byte对齐的的payload转化成SRIO的NREAD的回复包8byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。payload的转换采用FIFO和状态机配合,先将CPLD的payload缓存在FIFO中,再用状态机控制FIFO的读,将读出的数据转换成NREAD回复包的8byte对齐的payload;
其中同时,FPGA将解析出来的SRIO的源ID和目的ID写进寄存中,待CPU来读取。
请参阅图11,为本申请公开的发送DOORBELL步骤:
S701,FPGA接收SRIO的HELLO包,并且解析其包头中的16bit的info、4bit业务类型、8bit或者16bit的源ID、8bit或者16bit的目的ID,并把将解析出来的16bit info、8bit或者16bit源ID、8bit或者16bit目的ID写进寄存器中;
S702,FPGA产生回复DOORBELL的回复包;
S703,FPGA通过PCIE发送MSI中断,告知CPU来读取DOORBELL信息,CPU接收到PCIE的MSI中断后,读取产生回复DOORBELL的回复包的16bit info、8bit或者16bit源ID、8bit或者16bit目的ID寄存器,并CPU读取完毕上述寄存器后通过写寄存器方式告知FPGA完成当前DOORBELL传输操作;
S704,FPGA接收到CPU完成标志后,退出当前DOORBELL操作,进入下一个业务操作。
请参阅图12,为本申请公开的发送DOORBELL步骤:
S801,配置FPGA中的转换寄存器,包括PCIE的32bit或者64bit起始地址;
S802,FPGA接收SRIO的HELLO包并解析其包头中的4bit msglen、4bit msgseg、4bit业务类型、2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID;,并将解析出来的2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID写进寄存器中,待CPU来读取。
S803,FPGA判断SRIO的业务类型为MESSAGE后,根据配置的寄存器配置的PCIE地址,以及解析出的SRIO包头的数据包长度size,组成PCIE的MWr的TLP包头;
S804,FPGA将接收到的SRIO的8byte对齐的payload转换成PCIE的8byte或者16byte对齐的payload,完成MESSAGE到MWr转化;Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
S805,FPGA发送完所有的msglen*size数据后,产生PCIE的MSI中断,告知CPU当前MESSAGE转换完成,CPU来读取2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID寄存器,CPU读取完毕后,通过寄存方式告知FPGA,当前操作完成。FPGA接收到CPU的完成通知后,退出当前操作,进入下一个业务类型操作;
其中,FPGA每接收完一个MESSAGE包后,均需要产生一个不携带payload的MESSAGE回复包。
整体而言,本申请提供的基于FPGA实现PCIE与SRIO相互转换方法及现场可编程门阵列,使用FPGA平台实现PCIE和SRIO协议相互转化,提升了协议转化可编程性与通用性,同时缩短了相较于芯片开发、流片的开发周期。
用FPGA平台实现PCIE和SRIO协议相互转化中,提升PCIE的MWr、MRd、CPLD、CPL四种业务类型转化速率。
用FPGA平台实现PCIE和SRIO协议相互转化中,提升SRIO的NWRITE、SWRITE、NREAD、MESSAGE、DOORBELL五种业务类型转化速率。
本申请还公开了一种现场可编程门阵列,包括:
一个或多个存储器,用于存储指令;
一个或多个转换寄存器,用于配置;以及
一个或多个处理器,用于从所述存储器中调用并运行所述指令,执行如上述内容中记载的任意一种基于FPGA实现PCIE与SRIO相互转换方法。
本具体实施方式的实施例均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。
Claims (9)
1.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括SRIO的34bit起始地址、SRIO的8bit或者16bit的目的ID、PCIE的8个窗起始地址,PCIE的8个窗的大小;
FPGA对接收到的PCIE的TLP帧头进行解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
当解析出的地址在所配置的8个PCIE窗口内时,并且解析出的PCIE业务类型为MWr时,根据配置的寄存器SRIO 34bit起始地址、SRIO目的ID,以及解析出的PCIE payload数据量大小,组成SRIO业务类型为NWRITE的HELLO包头;
将接收到的PCIE的8byte或者16byte对齐的payload转换成SRIO的8byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转进程。
2.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括SRIO的34bit起始地址、SRIO的8bit或者16bit的目的ID、PCIE的8个窗起始地址、PCIE的8个窗的大小;
FPGA对接收到的PCIE的TLP帧头解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、32bit或者64bit的地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
当解析出的地址在所配置的8个PCIE窗口内时,并且解析出的PCIE业务类型为MRd时,根据配置的寄存器SRIO 34bit起始地址、SRIO的8bit或者16bit目的ID,以及解析出的PCIEpayload数据量大小,组成SRIO业务类型为NREAD的HELLO包头并发出,NREAD的HELLO包只有包头而没有payload;
FPGA接收SRIO NREAD的回复包,将其回复的8byte对齐的paylaod,转换成PCIE的CPLD的8byte或者16byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
3.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括DOORBELL的16bit info、SRIO的8bit或者16bit的目的ID、DOORBELL的发送使能;
FPGA接收到DOORBELL的发送使能后,根据16bit的info、8bit或者16bit的目的ID、8bit或者16bit的源ID组成SRIO的业务类型为DOORBELL的HELLO包,并发送;
FPGA接收到SRIO的DOORBELL回复包,根据回复包头的业务类型、srcID判断回复是否正确;
FPGA接收到DOORBELL回复包并且判断出是否正确后,将判断的结果写进DOORBELL回复寄存器,同时启动PCIE的MSI中断,告知CPU完成了当前的DOORBELL操作,CPU读取DOORBELL回复寄存器,结束当前DOORBELL传输过程。
4.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括MESSAGE的2bitltr、MESSAGE的6bit的mailbox、SRIO的8bit或者16bit的目的ID、MESSAGE的发送使能、PCIE的8个窗起始地址、PCIE的8个窗大小;
FPGA接收PCIE的TLP帧头并且解析,解析出PCIE当前TLP包payload数据量大小、业务类型、包头类型、32bit或者64bit的地址,业务类型包括MWr和MRd,包头类型包括3DW和4DW,地址为32bit或者64bit;
当解析出的PCIE地址在所配置的8个PCIE窗口内时,并且MESSAGE的发送使能为高时,根据配置的寄存器MESSAGE的2bit ltr、MESSAGE的6bit的mailbox、SRIO的8bit或者16bit的目的ID,以及解析出的PCIE payload数据量大小,组成SRIO业务类型为MESSAGE的HELLO包头;
组完包头后,将接收到的PCIE的8byte或者16byte对齐的payload转换成SRIO的8byte对齐的payload,完成MWr到MESSAGE的转化。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换的进程。
FPGA接收到SRIO的MESSAGE回复包,根据回复包头的业务类型、msgseg判断回复是否正确;
判断完毕后将判断的结果写进MESSAGE回复寄存器,FPGA启动PCIE的MSI中断,告知CPU已经完成了当前的MESSAGE操作,CPU读取MESSAGE回复寄存器,完成一个MESSAGE传输操作。
5.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,配置包括PCIE的32bit或者64bit起始地址、SRIO的8个的窗起始地址、SRIO的8个窗大小;
FPGA接收SRIO的HELLO包并解析,解析出包头中的8bit数据大小size、8bit业务类型、34bit的地址、8bit或者16bit源ID、8bit或者16bit目的ID;
当解析出的SRIO地址在所配置的8个SRIO窗口内时,并且解析出的SRIO业务类型为NWRITE时,根据寄存器配置的PCIE的32bit或者64bit地址,以及解析出的SRIO包头的数据包长度size,组成PCIE的MWr的TLP包头;TLP包头采用3DW还是4DW,根据配置的PCIE地址寄存器决定。
FPGA将接收到的SRIO的8byte对齐的payload转换成PCIE的8byte或者16byte对齐的payload,完成NWRITE到MWr转化。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
同时,FPGA将解析出来的SRIO的源ID和目的ID写进寄存中,待CPU来读取。
6.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
响应于获取到的配置要求,对FPGA中的转换寄存器进行配置,包括PCIE的32bit或者64bit起始地址、SRIO的8个的窗起始地址、SRIO的8个窗大小;
FPGA接收SRIO的HELLO包并解析,解析出包头中的8bit数据大小size、8bit业务类型、34bit的地址、8bit或者16bit源ID、8bit或者16bit目的ID;
当解析出的SRIO地址在所配置的8个SRIO窗口内时,并且解析出的SRIO业务类型为NREAD时,根据寄存器配置的PCIE的地址,以及解析出的SRIO的数据大小size,组PCIE的MRd的TLP包头并且发出;TLP包头采用3DW还是4DW,根据配置的PCIE地址寄存器决定。
FPGA接收PCIE的MRd回复的CPLD包,将接收到的PCIE的CPLD的8byte或者16byte对齐的payload转化成SRIO的NREAD8byte对齐的payload。Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
同时,FPGA将解析出来的SRIO的源ID和目的ID写进寄存中,待CPU来读取。
7.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
FPGA接收SRIO的HELLO包,并且解析其包头中的16bit的info、4bit业务类型、8bit或者16bit的源ID、8bit或者16bit的目的ID,并把将解析出来的16bit info、8bit或者16bit源ID、8bit或者16bit目的ID写进寄存器中;
FPGA产生回复DOORBELL的回复包;
FPGA通过PCIE发送MSI中断,告知CPU来读取DOORBELL信息,CPU接收到PCIE的MSI中断后,读取16bit info、8bit或者16bit源ID、8bit或者16bit目的ID寄存器,CPU读取完毕上述寄存器后通过写寄存器方式告知FPGA完成当前DOORBELL传输操作;
FPGA接收到CPU完成标志后,退出当前DOORBELL操作,进入下一个业务操作。
8.一种基于FPGA实现PCIE与SRIO相互转换方法,其特征在于,包括:
配置FPGA中的转换寄存器,包括PCIE的32bit或者64bit起始地址;
FPGA接收SRIO的HELLO包并解析其包头中的4bit msglen、4bit msgseg、4bit业务类型、2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID;并将解析出来的2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID写进寄存器中,待CPU来读取。
FPGA判断SRIO的业务类型为MESSAGE后,根据配置的寄存器PCIE地址,以及解析出的SRIO包头的数据包长度size,组成PCIE的MWr的TLP包头;
FPGA将接收到的SRIO的8byte对齐的payload转换成PCIE的8byte或者16byte对齐的payload,完成MESSAGE到MWr转化;Payload转换采用FIFO加状态机,FIFO用来缓存转换前后的数据,状态机用来控制转换进程。
FPGA发送完所有的msglen*size数据后,产生PCIE的MSI中断,告知CPU当前MESSAGE转换完成,CPU来读取2bit的ltr、6it的mailbox、8bit或者16bit的源ID、8bit或者16bit的目的ID寄存器,CPU读取完毕后,通过寄存方式告知FPGA,当前操作完成。FPGA接收到CPU的完成通知后,退出当前操作,进入下一个业务类型操作;
其中,FPGA每接收完一个MESSAGE包后,均需要产生一个不携带payload的MESSAGE回复包。
9.一种现场可编程门阵列,其特征在于,包括:
一个或多个存储器,用于存储指令;
一个或多个转换寄存器,用于配置;以及
一个或多个处理器,用于从所述存储器中调用并运行所述指令,执行如权利要求1至8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211327723.3A CN115658574A (zh) | 2022-10-26 | 2022-10-26 | 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211327723.3A CN115658574A (zh) | 2022-10-26 | 2022-10-26 | 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115658574A true CN115658574A (zh) | 2023-01-31 |
Family
ID=84992749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211327723.3A Pending CN115658574A (zh) | 2022-10-26 | 2022-10-26 | 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658574A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160150558A1 (en) * | 2013-07-04 | 2016-05-26 | Roy Shor | Method and device for streaming control data in a mobile communication system |
CN107203484A (zh) * | 2017-06-27 | 2017-09-26 | 北京计算机技术及应用研究所 | 一种基于FPGA的PCIe与SRIO总线桥接系统 |
CN113177012A (zh) * | 2021-05-12 | 2021-07-27 | 成都实时技术股份有限公司 | Pcie-srio数据交互处理方法 |
CN114297124A (zh) * | 2021-12-29 | 2022-04-08 | 苏州长风航空电子有限公司 | 一种基于fpga的srio高速总线的通讯系统 |
CN115168081A (zh) * | 2022-09-08 | 2022-10-11 | 井芯微电子技术(天津)有限公司 | 转换电路和报文转换方法 |
-
2022
- 2022-10-26 CN CN202211327723.3A patent/CN115658574A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160150558A1 (en) * | 2013-07-04 | 2016-05-26 | Roy Shor | Method and device for streaming control data in a mobile communication system |
CN107203484A (zh) * | 2017-06-27 | 2017-09-26 | 北京计算机技术及应用研究所 | 一种基于FPGA的PCIe与SRIO总线桥接系统 |
CN113177012A (zh) * | 2021-05-12 | 2021-07-27 | 成都实时技术股份有限公司 | Pcie-srio数据交互处理方法 |
CN114297124A (zh) * | 2021-12-29 | 2022-04-08 | 苏州长风航空电子有限公司 | 一种基于fpga的srio高速总线的通讯系统 |
CN115168081A (zh) * | 2022-09-08 | 2022-10-11 | 井芯微电子技术(天津)有限公司 | 转换电路和报文转换方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7702827B2 (en) | System and method for a credit based flow device that utilizes PCI express packets having modified headers wherein ID fields includes non-ID data | |
US9025495B1 (en) | Flexible routing engine for a PCI express switch and method of use | |
JP4044523B2 (ja) | 拡張タイプ/拡張長さフィールドを有するパケットヘッダを利用したコンピュータシステムにおけるエージェント間の通信トランザクションタイプ | |
US20090003335A1 (en) | Device, System and Method of Fragmentation of PCI Express Packets | |
CN108132897B (zh) | 一种基于zynq平台软核的srio控制器 | |
CN108107827B (zh) | 一种基于zynq平台软核的srio控制方法 | |
US8291146B2 (en) | System and method for accessing resources of a PCI express compliant device | |
EP4080839B1 (en) | Pcie-based data transmission method and apparatus | |
JP2008310832A (ja) | 高レベル・データ・リンク・コントローラから多数個のディジタル信号プロセッサ・コアに信号を分配するための装置と方法 | |
CN114647602B (zh) | 一种跨芯片访问控制的方法、装置、设备及介质 | |
CN115422106A (zh) | 一种中断请求的处理方法和装置 | |
US20030229738A1 (en) | Controller interface | |
EP4080840A1 (en) | Data transmission method and apparatus based on pcie | |
CN115658574A (zh) | 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 | |
CN107302522B (zh) | 基于USB的SpaceWire网络即插即用基础协议 | |
US8069273B2 (en) | Processing module | |
EP3631640B1 (en) | Communication between field programmable gate arrays | |
CN104850517A (zh) | 一种dma传输报文数据的方法及装置 | |
CN108701103B (zh) | 具有工作存储器的计算单元的存储器直接访问控制装置 | |
CN112866180B (zh) | 数据处理电路、装置以及方法 | |
KR0176078B1 (ko) | 전송 응답 회신 제어기 및 그 제어 방법 | |
CN113157610B (zh) | 数据保存方法及装置、存储介质、电子装置 | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
KR0176077B1 (ko) | 전송 응답 처리 제어기 및 그 제어 방법 | |
CN113468081A (zh) | 基于ebi总线的串口转udp的装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |