基于FPGA的PCIe通信系统及其通信方法技术方案

技术编号:37224006 阅读:11 留言:0更新日期:2023-04-20 23:08
本公开涉及基于FPGA的PCIe通信系统及其通信方法。所述基于FPGA的PCIe通信系统,通过时钟模块识别当前链路PCIe通信协议版本和数据位宽,输出当前链路PCIe对应时钟速率的系统时钟;数据接收模块接收并同步跨时钟域异步数据为系统时钟域数据,发送系统时钟域数据到数据发送模块和数据加扰/解扰模块;数据加扰/解扰模块对PCIe通信协议3.0及以上版本的系统时钟域数据进行解扰,发送到链路训练状态机检测模块;链路训练状态机检测模块检测解扰后的系统时钟域数据,分析链路训练状态机的状态,输出链路训练状态机的状态下的数据报文到数据发送模块;数据发送模块输出经数据位宽处理后的系统时钟域数据和数据报文。实现FPGA两端的PCIe设备正常通信。PCIe设备正常通信。PCIe设备正常通信。

【技术实现步骤摘要】
基于FPGA的PCIe通信系统及其通信方法


[0001]本专利技术属于集成电路芯片设计
,特别涉及基于FPGA的PCIe通信系统及其通信方法。

技术介绍

[0002]高速外围互联组件(peripheral component interconnect express,PCIe)标准是由英特尔公司提出的新一代高速I/O互联技术。PCIe广泛应用于个人电脑、服务器等PCIe设备中。由于高速数据传输的需求日益增大,PCIe协议已经迭代到PCIe5.0,PCIe5.0速度达到了32GT/s,单Lane的数据带宽已经达到了4000MB。
[0003]PCIe协议分为事务层(transaction layer),数据链路层(data link layer),物理层(physical layer),数据在事务层发送,经过数据链路层,最后由物理层发送到其他的PCIe设备。两个PCIe设备开始通信时需要先在物理层进行链路训练(即通过初始化PCIe链路的物理层、端口配置信息、发送接收模块以及相关的链路的状态,并了解链路对端的拓扑结构,最终让PCIe链路两端的设备进行数据通信的过程),链路训练完成之后才能进行正常的数据通信。在链路训练的过程中,PCIe设备通过识别发送过来的数据实现LTSSM状态机跳转,LTSSM状态机大部分状态的跳转都通过检测特定的序列的次数实现跳转,只要能检测到特定的序列就能跳转到对应的状态。
[0004]但是在FPGA平台的PCIe因为受到FPGA的限制,导致PCIe不能达到协议所规定的时钟速率,导致数据的带宽不能满足协议的要求。此时与其它PCIe设备通信,因为FPGA平台的PCIe时钟速率慢,FPGA平台的PCIe发送一拍数据,与其相连的PCIe设备可能已经采集10次,即同一个数据被采样10次,这会导致LTSSM状态机的状态跳转出现错误,最后导致链路训练不能正常结束。链路训练不能正常进行导致两个PCIe设备不能正常通信。
[0005]目前常用的解决该问题的方案是增大数据位宽,数据位宽增大就可以增大数据带宽,但是目前该方法已经不太适用了,首先,PCIe协议在传输的过程中存在协议版本的迭代,协议变化随之而来的就是数据带宽翻倍,翻倍就导致时钟速率也在翻倍,去适配PCIe协议就更难。例如PCIe1.0数据带宽为250MB,数据位宽为8bit时时钟速率为250MHz,数据位宽为16bit时时钟速率为125MHz,数据位宽为32bit时时钟速率为62.5MHz。如果PCIe协议迭代为PCIe2.0数据带宽变为500MB,数据位宽为8bit时时钟速率为500MHz,数据位宽为16bit时时钟速率为250MHz,数据位宽为32bit时时钟速率为125MHz。在PCIe1.0时增大数据位宽可以把时钟速率降低到62.6MHz但是到PCIe2.0只能降低到125MHz。增大数据位宽会带来两个问题,第一数据位宽越大,并行数据之间的EMI干扰更严重,这会导致在数据传输的过程中出现意想不到的问题且不好排查;第二,数据位宽不能一直增大,位宽增大会导致布局布线难度增大、资源紧张,同时协议本身也存在最大数据位宽的限制。PIPE协议支持的最大数据位宽为64bit,所以理论上数据位宽最多只能降低8倍时钟速率。增大位宽可以降低时钟速率,但时钟速率的上限是由当前设计的复杂度以及FPGA性能所决定的,最多8倍的降低时钟速率所能支持的最低时钟速率为62.5MHz,该方法使用必须保证降低的时钟速率大于
62.5MHz,但PCIe在FPGA上通常达不到62.5MHz,所以传统方法已经不适用。
[0006]其次,数据位宽不能无限增大,数据位宽增大会导致布线资源紧张以及布线难度增大,最大的问题还是并行数据线之间的EMI噪声会导致数据不稳定。最后,数据位宽最大只能增大到64bit,这是因为PIPE协议的限制,目前的PIPE协议最大支持的数据位宽为64bit,所以理论上增大数据位宽最多只能降低8倍的时钟速率。

技术实现思路

[0007]本专利技术克服了现有技术的不足之一,提供了一种基于FPGA的PCIe通信系统及其通信方法,能够解决FPGA两端的PCIe设备速度不一致所导致的数据带宽不能满足协议要求,FPGA两端的PCIe设备不能够正常通信的问题。
[0008]根据本公开的一方面,提出了一种基于FPGA的PCIe通信系统,所述系统包括:时钟模块、数据接收模块、数据发送模块、数据加扰/解扰模块和链路训练状态机检测模块;
[0009]其中,所述时钟模块,用于识别当前链路PCIe通信协议版本和数据位宽,输出符合所述当前链路PCIe通信协议版本的时钟速率的系统时钟到所述数据接收模块、数据发送模块、数据加扰/解扰模块和链路训练状态机检测模块;
[0010]所述数据接收模块,用于接收跨时钟域异步数据,并将所述跨时钟域异步数据同步为系统时钟域数据,并将同步后的所述系统时钟域数据发送到所述数据发送模块和所述数据加扰/解扰模块;
[0011]所述数据加扰/解扰模块,用于对所述同步后的PCIe通信协议3.0及以上版本的系统时钟域数据进行解扰,并发送到所述链路训练状态机检测模块;
[0012]所述链路训练状态机检测模块,用于检测所述解扰后的系统时钟域数据,根据所述解扰后的系统时钟域数据分析所述链路训练状态机的状态,输出所述链路训练状态机的状态下的数据报文到所述数据发送模块;
[0013]所述数据发送模块,用于对同步后的所述系统时钟域数据和所述链路训练状态机的状态下的数据报文的数据位宽进行处理,并输出经过数据位宽处理后的所述系统时钟域数据和所述数据报文。
[0014]在一种可能的实现方式中,所述数据加扰/解扰模块还用于将PCIe通信协议3.0及以上版本的所述链路训练状态机检测模块输出的数据报文进行加扰,并将加扰后的所述数据报文输出到所述数据发送模块。
[0015]在一种可能的实现方式中,所述时钟模块包括分频电路和数据选择器;
[0016]所述分频电路,用于通过内部计数器将输入的参考时钟分频为两个分频时钟;
[0017]所述数据选择器,用于识别当前链路PCIe通信协议版本和数据位宽,根据所述当前链路PCIe通信协议版本和数据位宽从所述两个分频时钟中选择输出符合所述当前链路PCIe通信协议版本的时钟速率的系统时钟。
[0018]在一种可能的实现方式中,所述跨时钟域异步数据包括:由FPGA平台的PCIe发送到其它PCIe设备的异步数据,及由其它PCIe设备发送到FPGA平台的PCIe的异步数据,其中,所述FPGA平台的PCIe的时钟速率小于其它PCIe设备的时钟速率。
[0019]在一种可能的实现方式中,所述数据接收模块包括异步握手电路和异步FIFO电路;
[0020]所述异步握手电路,用于将FPGA平台的PCIe发送到其它PCIe设备的异步数据同步为系统时钟域数据;
[0021]所述异步FIFO电路,用于将其它PCIe设备发送到FPGA平台的PCIe的异步数据同步为系本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的PCIe通信系统,其特征在于,所述系统包括:时钟模块、数据接收模块、数据发送模块、数据加扰/解扰模块和链路训练状态机检测模块;其中,所述时钟模块,用于识别当前链路PCIe通信协议版本和数据位宽,输出符合所述当前链路PCIe通信协议版本的时钟速率的系统时钟到所述数据接收模块、数据发送模块、数据加扰/解扰模块和链路训练状态机检测模块;所述数据接收模块,用于接收跨时钟域异步数据,并将所述跨时钟域异步数据同步为系统时钟域数据,并将同步后的所述系统时钟域数据发送到所述数据发送模块和所述数据加扰/解扰模块;所述数据加扰/解扰模块,用于对所述同步后的PCIe通信协议3.0及以上版本的系统时钟域数据进行解扰,并发送到所述链路训练状态机检测模块;所述链路训练状态机检测模块,用于检测所述解扰后的系统时钟域数据,根据所述解扰后的系统时钟域数据分析所述链路训练状态机的状态,输出所述链路训练状态机的状态下的数据报文到所述数据发送模块;所述数据发送模块,用于对同步后的所述系统时钟域数据和所述链路训练状态机的状态下的数据报文的数据位宽进行处理,并输出经过数据位宽处理后的所述系统时钟域数据和所述数据报文。2.根据权利要求1所述的基于FPGA的PCIe通信系统,其特征在于,所述数据加扰/解扰模块还用于将PCIe通信协议3.0及以上版本的所述链路训练状态机检测模块输出的数据报文进行加扰,并将加扰后的所述数据报文输出到所述数据发送模块。3.根据权利要求1所述的基于FPGA的PCIe通信系统,其特征在于,所述时钟模块包括分频电路和数据选择器;所述分频电路,用于通过内部计数器将输入的参考时钟分频为两个分频时钟;所述数据选择器,用于识别当前链路PCIe通信协议版本和数据位宽,根据所述当前链路PCIe通信协议版本和数据位宽从所述两个分频时钟中选择输出符合所述当前链路PCIe通信协议版本的时钟速率的系统时钟。4.根据权利要求1所述的基于FPGA的PCIe通信系统,其特征在于,所述跨时钟域异步数据包括:由FPGA平台的PCIe发送到其它PCIe设备的异步数据,及由其它PCIe设备发送到FPGA平台的PCIe的异步数据,其中,所述FPGA平台的PCIe的时钟速率小于其它PCIe设备的时钟速率。5.根据权利要求4所述的基于FPGA的PCIe通信系统,其特征在于,所述数据接收模块包括异步握手电路和异步FIFO电路;所述异步握手电路,用于将FPGA平台的PCIe发送到其它PCIe设备的异步数据同步为系统时钟域数据;所述异步FIFO电路,用于将其它PCIe设备发送到FPGA平台的PCIe的异步数据同步为系统时钟域数据。6.根据权利要求2所述的基于FPGA的PCIe通信系统,其特征在于,所述数据加扰/解扰模块包括线性反馈移位寄存器、第一数据选择器、第二数据选择器和加扰/解扰模块;其中,所述线性反馈移位寄存器,用于对PCIe通信协议3.0及以上...

【专利技术属性】
技术研发人员:陆小杭李宇昊
申请(专利权)人:上海思尔芯技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1