CN115658574A - 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 - Google Patents

一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 Download PDF

Info

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
Application number
CN202211327723.3A
Other languages
English (en)
Inventor
赵正川
李雪
张天星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Xinzheng Microelectronics Co ltd
Original Assignee
Hangzhou Xinzheng Microelectronics Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Xinzheng Microelectronics Co ltd filed Critical Hangzhou Xinzheng Microelectronics Co ltd
Priority to CN202211327723.3A priority Critical patent/CN115658574A/zh
Publication of CN115658574A publication Critical patent/CN115658574A/zh
Pending legal-status Critical Current

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相互转换方法及现场可编程门 阵列
技术领域
本申请涉及电子通信技术领域,尤其是涉及一种基于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中任意一项所述的方法。
CN202211327723.3A 2022-10-26 2022-10-26 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列 Pending CN115658574A (zh)

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)

* Cited by examiner, † Cited by third party
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 井芯微电子技术(天津)有限公司 转换电路和报文转换方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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